Povežite se s portom registra kroz tunel, promatrajte kako počinje rukovanje i zatim vidite kako JConsole ipak istekne po vremenu. To se događa jer prva TCP veza nije upravljačka veza: ona je pretraga. Registar RMI odgovara referencom koja navodi host i drugi port, a JConsole zatim ide tamo gdje joj je rečeno. Ako tunel doseže samo prvi port poslužitelja ili referenca navodi adresu koja postoji samo na vlastitoj lokalnoj mreži poslužitelja, klijent zastane nakon prividnog uspjeha.

Mit: jedan otvoreni port je jedna veza

Udaljeni JMX preko RMI-ja uključuje najmanje dvije krajnje točke, a biraju ih različiti dijelovi sustava. Port registra je onaj koji upisujete u klijent i postoji kako bi izdao stub koji opisuje stvarni konektor. Ako prvi uspješni socket uzmete kao dokaz da je put upravljanja otvoren, dijagnoza od dvije minute pretvara se u cijelo poslijepodne zahtjeva za firewall.

Gledajte pogrešku samog klijenta, a ne popis slušatelja na poslužitelju. Pogreška nakon početka rukovanja govori vam da nije dovršena druga veza, a ne prva.

Što registar vraća

Stub sadrži adresu i port, serijalizirane u trenutku kada je konektor stvoren. Na poslužitelju s nekoliko sučelja stack je možda odabrao adresu dostupnu iz lokalne mreže i nedostupnu iz vaše. Klijent ne zna razliku; jednostavno bira dobivenu vrijednost, a paket ide rutom koja postoji za tu adresu, a na VPN klijentu često je nema uopće. Tada se pokušava druga veza.

Zato je pogreška nestabilna među okruženjima: isti se poslužitelj može ponašati drukčije za korisnika na lokalnoj mreži i za korisnika u tunelu, bez ikakve promjene u JMX konfiguraciji.

Dva porta i dva svojstva koja ih fiksiraju

Port registra dolazi iz com.sun.management.jmxremote.port, a konektor se može fiksirati s com.sun.management.jmxremote.rmi.port umjesto da se prepusti stacku. Postavite oba eksplicitno kada između klijenta i poslužitelja postoji firewall ili sigurnosna grupa, jer nepredvidiv drugi port ne može se dopustiti unaprijed, a širok raspon otvoren zbog njega gori je od jednog fiksnog porta.

Zatim potvrdite pomoću ss -ltn ili netstat -an na poslužitelju da oba porta slušaju i na kojim adresama. Slušatelj vezan uz loopback ispravan je za raspoređivanje samo na lokalnom računalu i beskoristan za ovaj slučaj.

Kada je objavljeno ime pogrešno

Ime hosta u udaljenoj referenci postavlja java.rmi.server.hostname. Ono utječe na to što stub objavljuje; samo po sebi nije uputa da se svaki slušatelj veže uz jedno sučelje, zato njegovo postavljanje ne daje uvijek očekivano ponašanje s jednim portom. Postavite ga, ponovno pokrenite proces i zatim provjerite što stub zapravo sadrži. Odaberite ime ili adresu koju klijent može razriješiti i dosegnuti kroz tunel, i ponovno pokrenite proces da se stub ponovno izgradi.

Mreže kontejnera pogoršavaju to jer adresa koju proces vidi može biti unutarnja i nedostupna za rutiranje izvana. Objavite željeno ime hosta eksplicitno umjesto da platformi prepustite izbor.

Ako tunel gradite preko SSH-a umjesto VPN-a, isti se problem pojavljuje u drugom ruhu: prosljeđivanje samo porta registra ostavlja drugu krajnju točku usmjerenu na adresu koju vaš klijent ne može dosegnuti. Proslijedite oba porta i učinite da se objavljeno ime razriješi u nešto što klijent može dosegnuti lokalno.

Ne isključujte sigurnost upravljanja da biste pojednostavili

Isječci koji isključuju autentikaciju i TLS lako se pronalaze i tjeraju vezu da radi na način koji ćete kasnije morati poništiti. Udaljeni JMX je upravljačko sučelje s istim privilegijama kao proces koji pregledava; zadržite njegove kontrole pristupa i ako klijent ne može predočiti vjerodajnice, popravite upravo to.

Kada su krajnje točke ispravne, sačuvajte sljedeću pogrešku koju vidite. Odbijanje od truststorea ili računa kasnija je faza od nedostupnog konektora i znači da je mrežni posao završen.

Povezani članci