Pieslēdzieties reģistra portam caur tuneli, vērojiet, kā sākas rokasspiediens, un tad skatieties, kā JConsole tomēr beidzas ar taimautu. Tas notiek tāpēc, ka pirmais TCP savienojums nav pārvaldības savienojums: tas ir meklējums. RMI reģistrs atbild ar atsauci, kurā norādīts resursdators un otrs ports, un JConsole tad dodas tur, kur tai teica. Ja tunelis sasniedz tikai servera pirmo portu vai atsauce norāda adresi, kas pastāv tikai paša servera lokālajā tīklā, klients iestrēgst pēc šķietamiem panākumiem.

Mīts: viens atvērts ports ir viens savienojums

Attālinātais JMX pār RMI ietver vismaz divus galapunktus, un tos izvēlas dažādas sistēmas daļas. Reģistra ports ir tas, ko ievadāt klientā, un tas pastāv, lai izsniegtu stublu, kas apraksta īsto savienotāju. Ja pirmo veiksmīgo socket uzskatāt par pierādījumu, ka pārvaldības ceļš ir atvērts, divu minūšu diagnostika pārvēršas par veselu pēcpusdienu ugunsmūra pieteikumu.

Skatieties uz paša klienta kļūdu, nevis uz servera klausītāju sarakstu. Kļūda pēc rokasspiediena sākuma stāsta, ka nav pabeigts otrais savienojums, nevis pirmais.

Ko reģistrs atgriež

Stublā ir adrese un ports, serializēti brīdī, kad savienotājs tika izveidots. Serverī ar vairākām saskarnēm steks varēja izvēlēties adresi, kas sasniedzama no lokālā tīkla un nesasniedzama no jūsējā. Klients nezina atšķirību; tas vienkārši izvēlas saņemto vērtību, un pakete seko maršrutam, kas šai adresei pastāv, bet VPN klientā tā bieži nav vispār. Tas ir brīdis, kad tiek mēģināts otrais savienojums.

Tas ir arī iemesls, kāpēc kļūda starp vidēm parādās neregulāri: viens un tas pats serveris var uzvesties citādi lietotājam lokālajā tīklā un lietotājam tunelī, bez jebkādām JMX konfigurācijas izmaiņām.

Divi porti un divas īpašības, kas tos nofiksē

Reģistra ports nāk no com.sun.management.jmxremote.port, un savienotāju var nofiksēt ar com.sun.management.jmxremote.rmi.port, nevis atstāt to, ko piešķir steks. Iestatiet abus skaidri, ja starp klientu un serveri ir ugunsmūris vai drošības grupa, jo neparedzamu otru portu nevar atļaut iepriekš, un plašs diapazons, kas atvērts tā dēļ, ir sliktāks par vienu fiksētu portu.

Pēc tam serverī ar ss -ltn vai netstat -an pārbaudiet, vai abi porti klausās un kuros adresēs. Klausītājs, kas piesaistīts loopback, ir pareizs tikai lokālai izvietošanai un šim gadījumam neder.

Kad izziņotais nosaukums ir nepareizs

Resursdatora nosaukumu attālinātajā atsaucē iestata java.rmi.server.hostname. Tas ietekmē to, ko izziņo stublā; pats par sevi tas nav norādījums piesaistīt katru klausītāju vienai saskarnei, tāpēc tā iestatīšana ne vienmēr dod gaidīto viena porta uzvedību. Iestatiet to, restartējiet procesu un pēc tam pārbaudiet, ko stublā faktiski satur. Izvēlieties nosaukumu vai adresi, ko klients var atrisināt un sasniegt caur tuneli, un restartējiet procesu, lai stublā tiktu pārbūvēta.

Konteinertīkli to pasliktina, jo adrese, ko redz process, var būt iekšēja un nav maršrutējama no konteinera ārpuses. Publicējiet paredzēto resursdatora nosaukumu skaidri, nevis ļaujiet platformai izvēlēties.

Ja tuneli veidojat ar SSH, nevis VPN, tā pati problēma parādās citā ietērpā: pāradresējot tikai reģistra portu, otrs galapunkts norāda uz adresi, ko jūsu klients nevar sasniegt. Pāradresējiet abus portus un panāciet, lai izziņotais nosaukums atrisinātos uz kaut ko, ko klients sasniedz lokāli.

Neizslēdziet pārvaldības drošību, lai vienkāršotu

Fragmenti, kas izslēdz autentifikāciju un TLS, ir viegli atrodami un liek savienojumam darboties tā, ka vēlāk tas būs jāatceļ. Attālinātais JMX ir pārvaldības saskarne ar tādām pašām privilēģijām kā process, ko tā pārbauda; saglabājiet tās piekļuves kontroli, un, ja klients nevar uzrādīt akreditācijas datus, izlabojiet tieši to.

Kad galapunkti ir pareizi, saglabājiet nākamo kļūdu, ko redzat. Uzticības krātuves vai konta noraidījums ir vēlāks posms nekā nesasniedzams savienotājs, un tas nozīmē, ka tīkla darbs ir pabeigts.

Saistītie raksti