JConsole konektiĝas al la registro, kaj tiam RMI sendas ĝin aliloken
Tio, ke la registra pordo respondas, estas nur la unua salto. Fora JMX-servilo povas anonci alian gastiganton kaj alian konektilan pordon, kaj la tunelo devas atingi ambaŭ.
Konektiĝu al la registra pordo tra la tunelo, rigardu la manpremon komenciĝi kaj poste rigardu JConsole tamen tempĉesi. Tio okazas ĉar la unua TCP-konekto ne estas la administra konekto: ĝi estas serĉo. La RMI-registro respondas per referenco, kiu nomas gastiganton kaj duan pordon, kaj JConsole tiam iras tien, kien oni sendis ĝin. Se la tunelo atingas nur la unuan pordon de la servilo, aŭ se la referenco nomas adreson, kiu ekzistas nur en la propra LAN de la servilo, la kliento haltas post ŝajne sukcesi.
La mito: unu malfermita pordo estas unu konekto
Fora JMX super RMI implicas almenaŭ du finpunktojn, kaj ili estas elektitaj de malsamaj partoj de la sistemo. La registra pordo estas tiu, kiun vi tajpas en la klienton, kaj ĝi ekzistas por fordoni la stumpon, kiu priskribas la realan konektilon. Kapti la unuan sukcesan ingoton kiel pruvon, ke la administra vojo estas malfermita, estas tio, kio transformas du-minutan diagnozon en posttagmezon da fajrormuraj biletoj.
Rigardu la eraron de la kliento mem anstataŭ la aŭskultan liston de la servilo. Malsukceso post la komenco de la manpremo diras al vi, ke la dua konekto, ne la unua, ne finiĝis.
Kion la registro redonas
La stumpo enhavas adreson kaj pordon, seriigitajn en la momento, kiam la konektilo estis kreita. Sur servilo kun pluraj interfacoj, la stako eble elektis adreson atingeblan de la loka reto kaj ne de via. La kliento ne scias la diferencon; ĝi simple vokas la valoron, kiun ĝi ricevis, kaj la paketo sekvas la vojon, kiu ekzistas por tiu adreso, kiu sur VPN-kliento ofte estas neniu. Tio estas la momento, kiam la dua konekto estas provata.
Tio ankaŭ estas la kialo, ke la malsukceso estas intermita inter medioj: la sama servilo povas konduti malsame por uzanto en la LAN kaj uzanto en la tunelo, sen iu ajn ŝanĝo en la JMX-agordo.
Du pordoj kaj du ecoj, kiuj fiksas ilin
La registra pordo venas de com.sun.management.jmxremote.port, kaj la konektilo povas esti fiksita per com.sun.management.jmxremote.rmi.port anstataŭ lasi ĝin al tio, kion la stako asignas. Agordu ambaŭ eksplicite, kiam inter la kliento kaj la servilo estas fajroŝirmilo aŭ sekureca grupo, ĉar neantaŭvidebla dua pordo ne povas esti permesita anticipe, kaj larĝa intervalo malfermita por akomodi ĝin estas pli malbona ol fiksi unu valoron.
Poste konfirmu per ss -ltn aŭ netstat -an sur la servilo, ke ambaŭ pordoj aŭskultas kaj sur kiuj adresoj. Aŭskultanto ligita al loopback estas ĝusta por tute loka deplojo kaj senutila por ĉi tiu.
Kiam la anoncita nomo estas malĝusta
La gastigantnomo, kiu aperas en la fora referenco, estas agordita de java.rmi.server.hostname. Ĝi influas tion, kion la stumpo anoncas; ĝi mem ne estas instrukcio ligi ĉiun aŭskultanton al unu interfaco, kaj tial agordi ĝin ne ĉiam produktas la atendatan unu-pordan konduton. Agordu ĝin, restartigu la procezon kaj poste kontrolu, kion la stumpo fakte enhavas. Elektu nomon aŭ adreson, kiun la kliento povas solvi kaj atingi tra la tunelo, kaj restartigu la procezon, por ke la stumpo estu rekonstruita.
Konteneraj retoj plimalbonigas tion, ĉar la adreso, kiun la procezo vidas, povas esti interna, al kiu nenio ekster la kontenero povas enkursigi. Publikigu la celatan gastigantnomon eksplicite anstataŭ lasi la platformon elekti.
Se vi tunelas per SSH anstataŭ VPN, la sama problemo aperas en alia kostumo: plusendi nur la registran pordon lasas la duan finpunkton montri al adreso, kiun via kliento ne povas atingi. Plusendu ambaŭ pordojn kaj igi la anoncitan nomon solviĝi al io, kion la kliento povas atingi loke.
Ne malŝaltu la administran sekurecon por simpligi ĝin
Fragmentoj, kiuj malŝaltas aŭtentikigon kaj TLS, estas facile troveblaj kaj igas la konekton funkcii tiel, ke vi devos malfari tion poste. Fora JMX estas administra interfaco kun la samaj privilegioj kiel la procezo, kiun ĝi inspektas; konservu ĝiajn alirkontrolojn, kaj se la kliento ne povas prezenti akreditaĵojn, riparu tion anstataŭe.
Post kiam la finpunktoj estas ĝustaj, konservu la sekvan eraron, kiun vi vidas. Rifuzo de truststore aŭ konto estas posta stadio ol neatingebla konektilo kaj signifas, ke la reta laboro finiĝis.