Izvorni port klijenta naspram serverskog slušaoca u VPN toku
Uporedite dva broja portova u jednom tunelu: fiksni slušalac servera i kratkotrajni izvor klijenta, te kako se prevođenje rutera nalazi između njih.
U istom razgovoru pojavljuju se dva broja i nijedan nije pogrešan. Serverski dnevnik pokazuje slušaoca koji nudi uslugu, laptop pokazuje socket koji je poslao datagram, a ruter između može prepisati drugi na izlazu. Korisnije je uporediti krajeve razgovora nego same cifre. Poređenje ispod drži slušaoca, klijentski socket i prevedeni izvor odvojeno, jer odgovaraju na različita pitanja.
Dva broja koja opisuju suprotne krajeve
Konfigurisani port servera je odredište na koje se klijent spaja. Njega fiksira politika, pojavljuje se u profilu i mora biti otvoren na strani servera. Izvorni port klijenta bira se lokalno, obično iz efemernog opsega, i postoji da bi odgovor imao gdje sletjeti. Može se promijeniti pri svakom ponovnom spajanju i ništa u dizajnu ne zavisi od toga da bude stabilan.
Ruter između može prepisati taj izvor u sopstveno 'NAT' mapiranje. Zato broj koji se vidi na serveru često nema nikakve veze s onim koji je laptop izabrao.
Gdje se broj izvora mijenja na izlazu
Uzmite izmišljeni primjer s IPv4: klijent iza rutera koji prevodi, server s jednim 'UDP' slušaocem i jedan datagram koji prelazi oba. Tabela imenuje svaku krajnju tačku i šta se s njom događa, umjesto da ponovo pušta paket na tri mjesta posmatranja.
| 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 |
Odredište je konstantno u svakom redu, a mijenja se samo identitet izvora. Zahtjevi UDP NAT-a razlikuju unutrašnju adresu i port od vanjskog mapiranja, što je upravo razlika između drugog i trećeg reda. Ruter može zadržati izvorni port klijenta ili izabrati drugi; zadržavanje nije nešto što aplikacija smije pretpostaviti.
Pročitajte tri krajnje tačke s hostova samih
Liste ispod dolaze s tri različita računara i zajedno pokazuju cijeli razgovor. Pokrenite prvu na serveru, drugu na klijentu, a treću gdje god mapiranje postoji. Jedna linija dnevnika nikad ne pokazuje sve tri.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
Prva lista dokazuje da je server vezan za servisni port i pokazuje koji proces ga drži. Druga pokazuje lokalni socket klijenta i odredište na koje se spojio. Treća pokazuje mapiranje koje je ruter stvorio, a to je jedino mjesto gdje se prevedeni izvor pojavljuje. Čitajte ih tim redom i dva broja prestaju izgledati proturječno.
Šta ponovno spajanje mijenja, a šta ne
Neki ruteri zadrže izvorni port klijenta kad je slobodan, a neki svaki put dodijele drugi. Oba ponašanja su normalna, a aplikacija koja zahtijeva prvo slomit će se na drugom. Promjena mapiranja nakon ponovnog spajanja ili promjene mreže nije kvar servera: klijent otvara novi socket, ruter dodjeljuje šta ima, a server vidi novi izvor na istom slušaocu. Kvar bi bio očekivati da server prihvati saobraćaj adresiran na proizvoljan klijentski port.
Klijenti iz zajednice OpenVPN dobijaju ovo ponašanje kroz nobind, što operativnom sistemu prepušta izbor lokalnog porta; udaljeni port i dalje dolazi iz profila. Eksplicitno vezivanje je svjesna odluka, a ne zahtjev protokola. Server nastavlja nuditi jednu krajnju tačku dok klijenti biraju sopstvene lokalne identitete.
Označite slojeve odvojeno u zapisu
Unutar tunela postoji drugi razgovor sa sopstvenim portovima. HTTPS zahtjev koji tunel nosi ima odredište TCP 443, dok vanjska šifrirana veza koristi UDP 1194, pa promjena vanjskog izvornog porta ne mijenja ništa na unutrašnjoj usluzi.
Čak i na vanjskom sloju protokol je važan. UDP 1194 i TCP 1194 su različite krajnje tačke i 'TCP' slušalac nikada neće primiti UDP datagram zato što se broj poklapa. Kad dokumentujete postavljanje, označite serverski slušalac, klijentski socket i prevedeni izvor kao tri različite stvari i dodajte transport svakoj.
Zatim neka politika prati uloge. Server otvara predviđeni transport na svom slušaocu i dalje provjerava identitet druge strane; klijentski firewall propušta odgovore na vlastitu odlaznu razmjenu bez objavljivanja dolazne usluge. Filter bez stanja treba izričito napisan povratni smjer, i to je praktični razlog zašto razlika vrijedi i izvan urednih dijagrama.