Lidhu me portën e regjistrit përmes tunelit, shiko si fillon shtrëngimi i duarve dhe më pas shiko si JConsole skadon gjithsesi. Kjo ndodh sepse lidhja e parë TCP nuk është lidhja e menaxhimit: është një kërkim. Regjistri RMI përgjigjet me një referencë që emërton një host dhe një portë të dytë, dhe JConsole më pas shkon atje ku iu tha. Nëse tuneli arrin vetëm portën e parë të serverit, ose referenca emërton një adresë që ekziston vetëm në LAN-in e vetë serverit, klienti ngec pas një suksesi të dukshëm.

Miti: një portë e hapur është një lidhje

JMX në distancë përmes RMI përfshin të paktën dy pika fundore, dhe ato zgjidhen nga pjesë të ndryshme të sistemit. Porta e regjistrit është ajo që shtyp në klient, dhe ekziston për të dhënë stub-in që përshkruan lidhësin e vërtetë. Nëse merr socket-in e parë të suksesshëm si provë se rruga e menaxhimit është e hapur, një diagnozë dy minutëshe kthehet në një pasdite me kërkesa për firewall.

Shiko gabimin e vetë klientit, jo listën e dëgjuesve të serverit. Një dështim pas fillimit të shtrëngimit të duarve të thotë se lidhja e dytë, jo e para, nuk u përfundua.

Çfarë kthen regjistri

Stub-i përmban një adresë dhe një portë, të serializuara në momentin kur u krijua lidhësi. Në një server me disa ndërfaqe, stiva mund të ketë zgjedhur një adresë të arritshme nga rrjeti lokal dhe jo nga i yti. Klienti nuk e njeh ndryshimin; ai thjesht zgjedh vlerën që iu dha, dhe paketa ndjek rrugën që ekziston për atë adresë, e cila në një klient VPN shpesh nuk është asnjë. Ky është momenti kur provohet lidhja e dytë.

Kjo është edhe arsyeja pse dështimi është i ndërprerë mes mjediseve: i njëjti server mund të sillet ndryshe për një përdorues në LAN dhe për një përdorues në tunel, pa asnjë ndryshim në konfigurimin e JMX.

Dy porta dhe dy veti që i fiksojnë ato

Porta e regjistrit vjen nga com.sun.management.jmxremote.port, dhe lidhësi mund të fiksohet me com.sun.management.jmxremote.rmi.port në vend që të lihet në atë që cakton stiva. Vendosi të dyja në mënyrë eksplicite kur midis klientit dhe serverit ka një firewall ose një grup sigurie, sepse një portë e dytë e paparashikueshme nuk mund të lejohet paraprakisht, dhe një interval i gjerë i hapur për të është më keq sesa fiksimi i një vlere të vetme.

Më pas konfirmo me ss -ltn ose netstat -an në server që të dyja portat dëgjojnë dhe në cilat adresa. Një dëgjues i lidhur me loopback është i saktë për një vendosje vetëm lokale dhe i padobishëm për këtë.

Kur emri i shpallur është i gabuar

Emri i hostit që shfaqet në referencën e largët vendoset nga java.rmi.server.hostname. Ai ndikon në atë që shpall stub-i; nuk është në vetvete një udhëzim për të lidhur çdo dëgjues me një ndërfaqe të vetme, prandaj vendosja e tij nuk jep gjithmonë sjelljen e pritur me një portë të vetme. Vendose, rinis procesin dhe më pas verifiko çfarë përmban vërtet stub-i. Zgjidh një emër ose adresë që klienti mund ta zgjidhë dhe ta arrijë përmes tunelit, dhe rinis procesin që stub-i të rindërtohet.

Rrjetet e kontejnerëve e përkeqësojnë këtë, sepse adresa që sheh procesi mund të jetë e brendshme dhe e paarritshme nga jashtë kontejnerit. Publiko në mënyrë eksplicite emrin e synuar të hostit në vend që ta lërë platformën të zgjedhë.

Nëse e bën tunelin me SSH në vend të një VPN, i njëjti problem shfaqet në një petk tjetër: përcjellja vetëm e portës së regjistrit e lë pikën e dytë fundore duke treguar një adresë që klienti yt nuk mund ta arrijë. Përcill të dyja portat dhe bëj që emri i shpallur të zgjidhet në diçka që klienti mund ta arrijë lokalisht.

Mos e çaktivizo sigurinë e menaxhimit për ta thjeshtuar

Fragmentet që çaktivizojnë autentikimin dhe TLS gjenden lehtë dhe e bëjnë lidhjen të funksionojë në një mënyrë që do të duhet ta zhbësh më vonë. JMX në distancë është një ndërfaqe menaxhimi me të njëjtat privilegje si procesi që inspekton; mbaji kontrollet e tij të aksesit, dhe nëse klienti nuk mund të paraqesë kredenciale, rregullo pikërisht atë.

Kur pikat fundore janë të sakta, ruaj gabimin e radhës që sheh. Një refuzim nga truststore ose nga llogaria është një fazë më e vonë sesa një lidhës i paarritshëm dhe do të thotë që puna e rrjetit ka përfunduar.

Artikuj të ngjashëm