JConsole se poveže z registrom, nato pa RMI pošlje povezavo drugam
To, da vrata registra odgovorijo, je le prvi skok. Oddaljeni strežnik JMX lahko objavi drugega gostitelja in druga vrata konektorja, tunel pa mora doseči oboje.
Povežite se z vrati registra skozi tunel, opazujte začetek rokovanja in nato glejte, kako JConsole vseeno poteče po času. To se zgodi zato, ker prva povezava TCP ni upravljalna povezava: je poizvedba. Register RMI odgovori z referenco, ki navaja gostitelja in druga vrata, JConsole pa nato gre tja, kamor so ji rekli. Če tunel doseže le prva vrata strežnika ali referenca navaja naslov, ki obstaja samo v lokalnem omrežju strežnika, se odjemalec ustavi po navideznem uspehu.
Mit: ena odprta vrata so ena povezava
Oddaljeni JMX prek RMI vključuje vsaj dve končni točki, izberejo pa ju različni deli sistema. Vrata registra so tista, ki jih vnesete v odjemalca, in obstajajo zato, da izdajo ogrodje, ki opisuje dejanski konektor. Če prvi uspešni socket vzamete kot dokaz, da je upravljalna pot odprta, se diagnoza v dveh minutah spremeni v popoldne zahtevkov za požarni zid.
Opazujte napako odjemalca samega, ne seznama poslušalcev na strežniku. Napaka po začetku rokovanja vam pove, da se ni dokončala druga povezava, ne prva.
Kaj register vrne
Ogrodje vsebuje naslov in vrata, serializirana v trenutku, ko je bil konektor ustvarjen. Na strežniku z več vmesniki je sklad morda izbral naslov, dosegljiv iz lokalnega omrežja in nedosegljiv iz vašega. Odjemalec razlike ne pozna; preprosto pokliče vrednost, ki jo je dobil, paket pa sledi poti, ki za ta naslov obstaja, na odjemalcu VPN pa je pogosto ni. To je trenutek, ko se poskusi druga povezava.
Zato je napaka med okolji občasna: isti strežnik se lahko obnaša drugače za uporabnika v lokalnem omrežju in za uporabnika v tunelu, čeprav se konfiguracija JMX sploh ne spremeni.
Dvoje vrat in dve lastnosti, ki ju pripneta
Vrata registra izhajajo iz com.sun.management.jmxremote.port, konektor pa je mogoče pripeti z com.sun.management.jmxremote.rmi.port, namesto da bi ga prepustili skladu. Nastavite oboje izrecno, kadar je med odjemalcem in strežnikom požarni zid ali varnostna skupina, saj nepredvidljivih drugih vrat ni mogoče dovoliti vnaprej, širok razpon, odprt zaradi njih, pa je slabši od ene fiksne vrednosti.
Nato s ss -ltn ali netstat -an na strežniku potrdite, da poslušata obe vrati in na katerih naslovih. Poslušalec, vezan na loopback, je pravilen za povsem lokalno postavitev in neuporaben za to.
Ko je oglašeno ime napačno
Ime gostitelja v oddaljeni referenci nastavi java.rmi.server.hostname. Vpliva na to, kaj ogrodje oglašuje; samo po sebi ni navodilo, naj se vsak poslušalec veže na en vmesnik, zato njegova nastavitev ne da vedno pričakovanega vedenja z enimi vrati. Nastavite ga, znova zaženite proces in nato preverite, kaj ogrodje dejansko vsebuje. Izberite ime ali naslov, ki ga odjemalec lahko razreši in doseže skozi tunel, in znova zaženite proces, da se ogrodje znova zgradi.
Omrežja zabojnikov to poslabšajo, ker je naslov, ki ga vidi proces, lahko notranji in ga ni mogoče usmeriti od zunaj zabojnika. Objavite želeno ime gostitelja izrecno, namesto da izbiro prepustite platformi.
Če tunel gradite s SSH namesto z VPN, se ista težava pojavi v drugi preobleki: posredovanje samo vrat registra pusti drugo končno točko usmerjeno na naslov, ki ga vaš odjemalec ne more doseči. Posredujte oboje vrat in poskrbite, da se oglašeno ime razreši v nekaj, kar odjemalec doseže lokalno.
Upravljalne varnosti ne izklopite zaradi poenostavitve
Izseki, ki izklopijo preverjanje pristnosti in TLS, so lahko najdljivi in povezavo spravijo v delovanje na način, ki ga boste morali pozneje razveljaviti. Oddaljeni JMX je upravljalni vmesnik z enakimi pravicami kot proces, ki ga pregleduje; ohranite njegove nadzore dostopa in če odjemalec ne more predložiti poverilnic, popravite to.
Ko so končne točke pravilne, shranite naslednjo napako, ki jo vidite. Zavrnitev iz skladišča zaupanja ali računa je poznejša stopnja od nedosegljivega konektorja in pomeni, da je omrežno delo končano.