Kliento šaltinio prievadas prieš serverio klausymosi prievadą VPN sraute
Palyginkite du prievadų numerius viename tunelyje: fiksuotą serverio klausytoją ir trumpalaikį kliento šaltinį, ir kaip tarp jų atsiduria maršrutizatoriaus vertimas.
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.
| Endpoint | What stays fixed | What changes on reconnect | Who owns it |
|---|---|---|---|
| Server listener | The service port and the address the profile names | Nothing; the listener does not follow the client | The server operator |
| Client socket | The destination it dials | The local source port, chosen per socket | The client, or its operating system |
| Translated source | Usually the public address of the router | The port, and sometimes the address after a network switch | The 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ų.