Zdrojový port klienta verzus naslúchajúci port servera vo VPN toku
Porovnajte dve čísla portov v jednom tuneli: pevný naslúchajúci port servera a efemérny zdroj klienta a tiež preklad smerovača medzi nimi.
V tej istej konverzácii sa objavujú dve čísla a ani jedno nie je nesprávne. Protokol servera ukazuje naslúchajúci port, ktorý ponúka službu, notebook ukazuje soket, ktorý odoslal datagram, a smerovač medzi nimi môže druhý pri ceste von prepísať. Užitočnejšie je porovnať konce konverzácie než samotné číslice. Nasledujúce porovnanie drží naslúchajúci port, klientsky soket a preložený zdroj oddelene, pretože odpovedajú na rôzne otázky.
Dve čísla, ktoré opisujú protilehlé konce
Nakonfigurovaný port servera je cieľ, na ktorý klient volá. Určuje ho politika, objavuje sa v profile a musí byť na strane servera otvorený. Zdrojový port klienta sa volí lokálne, zvyčajne z efemérneho rozsahu, a existuje preto, aby odpoveď mala kam doraziť. Môže sa zmeniť pri každom opätovnom pripojení a nič v návrhu nezávisí od toho, že zostane stabilný.
Smerovač medzi nimi môže tento zdroj prepísať do svojho vlastného 'NAT' mapovania. Preto číslo pozorované na serveri často nemá žiadny vzťah k tomu, ktoré si notebook vybral.
Kde sa číslo zdroja cestou von mení
Vezmite vymyslený príklad s IPv4: klient za prekladajúcim smerovačom, server s jedným 'UDP' naslúchajúcim portom a jediný datagram, ktorý prejde oboma. Tabuľka pomenúva každý koncový bod a čo sa s ním deje, namiesto prehrávania paketu v troch bodoch pozorovania.
| 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 |
Cieľ je v každom riadku rovnaký a mení sa iba identita zdroja. Požiadavky UDP NAT rozlišujú vnútornú adresu a port od vonkajšieho mapovania, čo je presne rozdiel medzi druhým a tretím riadkom. Smerovač môže zdrojový port klienta zachovať alebo zvoliť iný; zachovanie nie je niečo, čo by aplikácia mala predpokladať.
Prečítajte tri koncové body zo samotných hostiteľov
Výpisy nižšie pochádzajú z troch rôznych strojov a spolu ukazujú celú konverzáciu. Spustite prvý na serveri, druhý na klientovi a tretí tam, kde mapovanie existuje. Jediný riadok protokolu nikdy neukáže všetky tri.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
Prvý výpis dokazuje, že server je viazaný na port služby, a ukazuje, ktorý proces ho vlastní. Druhý ukazuje lokálny soket klienta a cieľ, na ktorý volal. Tretí ukazuje mapovanie, ktoré vytvoril smerovač, a to je jediné miesto, kde sa preložený zdroj objavuje. Prečítajte ich v tomto poradí a dve čísla prestanú vyzerať protirečivo.
Čo opätovné pripojenie mení a čo nie
Niektoré smerovače zachovajú zdrojový port klienta, keď je voľný, iné pridelia zakaždým iný. Obe správania sú normálne a aplikácia, ktorá vyžaduje prvé, sa na druhom zlomí. Zmena mapovania po opätovnom pripojení alebo prepnutí siete nie je chyba servera: klient otvorí nový soket, smerovač pridelí, čo má, a server vidí nový zdroj na tom istom naslúchajúcom porte. Chybou by bolo očakávať, že server prijme prevádzku adresovanú na ľubovoľný klientsky port.
Komunitní klienti OpenVPN získavajú toto správanie pomocou nobind, čo nechá operačný systém zvoliť lokálny port; vzdialený port stále pochádza z profilu. Explicitné zviazanie je vedomá voľba, nie požiadavka protokolu. Server naďalej ponúka jeden koncový bod, zatiaľ čo klienti si volia vlastné lokálne identity.
Označte vrstvy v zázname oddelene
Vnútri tunela prebieha druhá konverzácia s vlastnými portami. Požiadavka HTTPS nesená tunelom má cieľ TCP 443, zatiaľ čo vonkajšie šifrované spojenie používa UDP 1194, takže zmena vonkajšieho zdrojového portu na vnútornej službe nič nemení.
Aj vo vonkajšej vrstve záleží na protokole. UDP 1194 a TCP 1194 sú rôzne koncové body a 'TCP' naslúchajúci port nikdy neprijme UDP datagram len preto, že číslo súhlasí. Pri dokumentovaní nasadenia označte naslúchajúci port servera, klientsky soket a preložený zdroj ako tri odlišné veci a ku každému pridajte transport.
Potom nechajte politiku nasledovať roly. Server otvorí zamýšľaný transport na svojom naslúchajúcom porte a stále overuje protistranu; firewall klienta prepustí odpovede na jeho vlastnú odchádzajúcu výmenu bez zverejnenia prichádzajúcej služby. Bezstavový filter potrebuje výslovne zapísaný spätný smer, a to je praktický dôvod, prečo na rozlíšení záleží aj mimo úhľadných diagramov.