JConsole maak aan die registry vas, en dan stuur RMI dit elders heen
Dat die registry-poort antwoord, is net die eerste sprong. 'n Afgeleë JMX-bediener kan 'n ander gasheer en 'n ander connector-poort aankondig, en die tonnel moet albei bereik.
Maak oor die tonnel aan die registry-poort vas, kyk hoe die handshake begin en sien dan hoe JConsole steeds 'n tydsverloop kry. Dit gebeur omdat die eerste TCP-verbinding nie die bestuursverbinding is nie, maar 'n opsoek. Die RMI-registry antwoord met 'n verwysing wat 'n gasheer en 'n tweede poort noem, en JConsole gaan dan waar dit ook al gestuur is. As die tonnel net die eerste poort van die bediener bereik, of as die verwysing 'n adres noem wat net op die bediener se eie LAN bestaan, staan die kliënt vas nadat dit oënskynlik geslaag het.
Die mite: een oop poort is een verbinding
Remote JMX oor RMI betrek minstens twee eindpunte, en hulle word deur verskillende dele van die stelsel gekies. Die registry-poort is wat jy in die kliënt intik, en dit bestaan om die stomp uit te gee wat die werklike connector beskryf. Om die eerste geslaagde socket as bewys te neem dat die bestuurspad oop is, verander 'n diagnose van twee minute in 'n middag vol firewalltickets.
Kyk na die kliënt se eie fout eerder as na die bediener se luisteraarlys. 'n Fout nadat die handshake begin het, sê vir jou dat die tweede verbinding, nie die eerste nie, nie voltooi is nie.
Wat die registry teruggee
Die stomp bevat 'n adres en 'n poort, geserialiseer op die oomblik toe die connector geskep is. Op 'n bediener met verskeie koppelvlakke het die stapel dalk 'n adres gekies wat van die plaaslike netwerk af bereikbaar is en van joune af nie. Die kliënt weet nie van die verskil nie; dit kies bloot die waarde wat dit gekry het, en die pakkie volg die roete wat vir daardie adres bestaan, wat op 'n VPN-kliënt dikwels glad nie een is nie. Dit is die oomblik waarop die tweede verbinding probeer word.
Dit is ook waarom die fout wisselend oor omgewings is: dieselfde bediener kan anders optree vir 'n gebruiker op die LAN en 'n gebruiker op die tonnel, sonder enige verandering aan die JMX-konfigurasie.
Twee poorte en twee eiendomme wat hulle vaspen
Die registry-poort kom van com.sun.management.jmxremote.port, en die connector kan met com.sun.management.jmxremote.rmi.port vasgepen word eerder as om dit aan die stapel oor te laat. Stel albei uitdruklik wanneer daar 'n firewall of 'n sekuriteitsgroep tussen die kliënt en die bediener is, want 'n onvoorspelbare tweede poort kan nie vooraf toegelaat word nie, en 'n wye reeks wat oopgemaak word om dit te akkommodeer is erger as om een waarde vas te pen.
Bevestig dan met ss -ltn of netstat -an op die bediener dat albei poorte luister en op watter adresse. 'n Luisteraar wat aan loopback gebind is, is korrek vir 'n suiwer plaaslike ontplooiing en nutteloos vir hierdie een.
Wanneer die aangekondigde naam verkeerd is
Die gasheernaam wat in die afgeleë verwysing voorkom, word deur java.rmi.server.hostname gestel. Dit beïnvloed wat die stomp aankondig; dit is op sigself nie 'n opdrag om elke luisteraar aan een koppelvlak te bind nie, en daarom lewer dit nie altyd die gedrag met een poort op wat mense verwag nie. Stel dit, herbegin die proses en verifieer dan wat die stomp werklik bevat. Kies 'n naam of adres wat die kliënt kan oplos en deur die tonnel kan bereik, en herbegin die proses sodat die stomp herbou word.
Houernetwerk maak dit erger, want die adres wat die proses sien, kan 'n interne een wees wat niks buite die houer kan roeteer nie. Publiseer die beoogde gasheernaam uitdruklik eerder as om die platform te laat kies.
As jy met SSH eerder as 'n VPN tonnel, verskyn dieselfde probleem in 'n ander jas: om net die registry-poort deur te stuur, laat die tweede eindpunt na 'n adres wys wat jou kliënt nie kan bereik nie. Stuur albei poorte deur en maak dat die aangekondigde naam oplos na iets wat die kliënt plaaslik kan bereik.
Moenie die bestuurssekuriteit afskakel om dit te vereenvoudig nie
Brokkies wat stawing en TLS afskakel, is maklik om te vind en laat die verbinding werk op 'n manier wat jy later sal moet ongedaan maak. Remote JMX is 'n bestuurskoppelvlak met dieselfde voorregte as die proses wat dit ondersoek; hou sy toegangsbeheer, en as die kliënt nie geloofsbriewe kan voorlê nie, maak dit eerder reg.
Nadat die eindpunte korrek is, bewaar die volgende fout wat jy sien. 'n Weiering deur 'n truststore of rekening kom later as 'n onbereikbare connector en beteken die netwerkwerk is klaar.