Tame pačiame pokalbyje atsiranda du numeriai, ir nė vienas nėra klaidingas. Serverio žurnalas rodo klausytoją, kuris siūlo paslaugą, nešiojamasis kompiuteris rodo lizdą, kuris išsiuntė datagramą, o maršrutizatorius tarp jų gali perrašyti antrąjį išeinant. Naudingiau palyginti pokalbio galus nei pačius skaitmenis. Toliau pateiktas palyginimas atskiria klausytoją, kliento lizdą ir išverstą šaltinį, nes jie atsako į skirtingus klausimus.

Du numeriai, apibūdinantys priešingus galus

Sukonfigūruotas serverio prievadas yra paskirties vieta, į kurią klientas skambina. Jį fiksuoja politika, jis rodomas profilyje ir turi būti atidarytas serverio pusėje. Kliento šaltinio prievadas parenkamas vietoje, paprastai iš efemerinio diapazono, ir egzistuoja tam, kad atsakymas turėtų kur nusileisti. Jis gali keistis kiekvieno prisijungimo metu, ir niekas dizaine nepriklauso nuo jo stabilumo.

Maršrutizatorius tarp jų gali perrašyti tą šaltinį į savo 'NAT' atvaizdavimą. Todėl serveryje matomas numeris dažnai neturi jokio ryšio su tuo, kurį pasirinko nešiojamasis kompiuteris.

Kur šaltinio numeris pasikeičia išeinant

Paimkite išgalvotą IPv4 pavyzdį: klientas už verčiančio maršrutizatoriaus, serveris su vienu 'UDP' klausytoju ir vienas datagramas, kertantis abu. Lentelė įvardija kiekvieną galą ir tai, kas jam nutinka, o ne atkuria paketą trijuose stebėjimo taškuose.

EndpointWhat stays fixedWhat changes on reconnectWho owns it
Server listenerThe service port and the address the profile namesNothing; the listener does not follow the clientThe server operator
Client socketThe destination it dialsThe local source port, chosen per socketThe client, or its operating system
Translated sourceUsually the public address of the routerThe port, and sometimes the address after a network switchThe NAT device or the upstream carrier

Paskirties vieta kiekvienoje eilutėje yra pastovi, ir keičiasi tik šaltinio tapatybė. UDP NAT reikalavimai atskiria vidinį adresą ir prievadą nuo išorinio atvaizdavimo, ir tai yra būtent skirtumas tarp antrosios ir trečiosios eilučių. Maršrutizatorius gali išsaugoti kliento šaltinio prievadą arba pasirinkti kitą; išsaugojimas nėra tai, ką programa turėtų daryti prielaidą.

Skaitykite tris galus pačiuose mazguose

Žemiau pateikti sąrašai gaunami iš trijų skirtingų mašinų ir kartu parodo visą pokalbį. Pirmąjį paleiskite serveryje, antrąjį kliente, o trečiąjį ten, kur atvaizdavimas egzistuoja. Viena žurnalo eilutė niekada neparodo visų trijų.

ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194

Pirmasis sąrašas įrodo, kad serveris susietas su paslaugos prievadu, ir parodo, kuris procesas jį valdo. Antrasis parodo vietinį kliento lizdą ir paskirties vietą, į kurią jis skambino. Trečiasis parodo maršrutizatoriaus sukurtą atvaizdavimą, ir tai vienintelė vieta, kur pasirodo išverstas šaltinis. Skaitykite juos šia tvarka ir du numeriai nustos atrodyti prieštaringi.

Ką keičia prisijungimas iš naujo, o ko ne

Kai kurie maršrutizatoriai išsaugo kliento šaltinio prievadą, kai jis laisvas, o kiti kiekvieną kartą skiria kitą. Abi elgsenos yra normalios, ir programa, kuri reikalauja pirmosios, suges antrojoje. Atvaizdavimo pasikeitimas po prisijungimo iš naujo ar tinklo pakeitimo nėra serverio gedimas: klientas atidaro naują lizdą, maršrutizatorius skiria tai, ką turi, o serveris tame pačiame klausytoje pamato naują šaltinį. Gedimas būtų tikėtis, kad serveris priims srautą, adresuotą į savavališką kliento prievadą.

Bendruomenės OpenVPN klientai šią elgseną gauna per nobind, kuris leidžia operacinei sistemai pasirinkti vietinį prievadą; nuotolinis prievadas vis dar gaunamas iš profilio. Aiškus susiejimas yra sąmoningas pasirinkimas, o ne protokolo reikalavimas. Serveris toliau siūlo vieną galą, o klientai renkasi savo vietines tapatybes.

Žymėkite sluoksnius atskirai įraše

Tunelio viduje vyksta antras pokalbis su savo prievadais. Tunelio nešama HTTPS užklausa turi paskirties vietą TCP 443, o išorinis šifruotas ryšys naudoja UDP 1194, todėl išorinio šaltinio prievado pakeitimas nieko nekeičia vidinėje paslaugoje.

Net išoriniame sluoksnyje protokolas yra svarbus. UDP 1194 ir TCP 1194 yra skirtingi galai, ir 'TCP' klausytojas niekada negaus UDP datagramos vien todėl, kad numeris sutampa. Dokumentuodami diegimą, pažymėkite serverio klausytoją, kliento lizdą ir išverstą šaltinį kaip tris skirtingus dalykus ir kiekvienam pridėkite transportą.

Tada leiskite politikai sekti vaidmenimis. Serveris atidaro numatytą transportą savo klausytoje ir vis dar autentifikuoja partnerį; kliento ugniasienė praleidžia atsakymus į jo paties išeinančius mainus neskelbdama įeinančios paslaugos. Būsenos neturintis filtras turi aiškiai įrašytą grįžimo kryptį, ir tai yra praktinė priežastis, kodėl šis skirtumas svarbus už tvarkingų diagramų ribų.

Susiję straipsniai