Klient hlási pripojené, zámok je zamknutý a stránka napriek tomu zaznamenáva adresu vášho bytu. Nič nezlyhalo. Tunel nenahrádza vaše Wi-Fi ani mobilné pripojenie; obalí vybrané pakety druhým obalom a tento obal pošle po sieti, ktorú ste už mali. Pochopiť trik znamená hlavne sledovať jednu požiadavku a všimnúť si, kde sa obal otvára, pretože takmer každý mätúci príznak, od úniku domácej adresy po zaseknuté veľké sťahovanie, pochádza práve z tejto hranice.

Dva obaly, jedno fyzické spojenie

Váš notebook si zachováva bežné pripojenie k routeru a router si zachováva bežné pripojenie k poskytovateľovi. Na tejto ceste sa pri vztyčení tunela nič nemení. Mení sa to, že vybrané pakety sa odovzdajú virtuálnemu rozhraniu, zabalia do nového paketu adresovaného partnerovi VPN a odošlú ako bežná prevádzka po fyzickom spojení.

Prijímajúca strana je zariadenie, ktoré obal rozbalí a pôvodný paket odošle ďalej k jeho cieľu. Medzi oboma koncami pozorovateľ vidí vonkajšiu hlavičku a o vnútornej nič, ak ju protokol nešifruje, čo robí väčšina spotrebiteľských protokolov a všeobecná technika to nevyžaduje.

Preto je virtuálne rozhranie zároveň skutočné aj zavádzajúce. Existuje ako objekt jadra s adresou a maximálnou prenosovou jednotkou a operačný systém doň smeruje prevádzku ako do ktoréhokoľvek iného rozhrania. Nie je to kábel a jeho existencia dokazuje len to, že je nainštalovaná komponenta. Či ho váš prehliadač používa, rozhodujú trasy, nie to, že rozhranie je aktívne.

Sledujte jednu požiadavku na ceste

Vyberte cieľ a spýtajte sa jadra, ktoré rozhranie použije. Tento jediný príkaz vyrieši väčšinu sporov o tom, či tunel niečo robí:

ip route get 203.0.113.7
ip -brief addr show
ip -4 addr show dev wg0

Ak výstup trasy uvádza rozhranie tunela, paket bude obalený. Ak uvádza fyzické rozhranie, nebude, a žiadne reštartovanie klienta to nezmení. Druhý príkaz zobrazuje obe rozhrania vedľa seba a práve tak odhalíte tunel, ktorý sa vztyčil bez adresy alebo s adresou z nesprávnej rodiny.

Potom sa pozrite na prvý skok zvnútra obalu a porovnajte ho s prvým skokom zvonku:

traceroute -n -m 3 203.0.113.7
sudo tcpdump -ni wg0 -c 5

Vnútri tunela je prvým skokom vnútorná adresa partnera, nie váš router. Zachytenie na rozhraní tunela ukazuje vnútorné pakety, teda prevádzku, o ktorej si aplikácia myslí, že ju odosiela. Súčasné zachytenie na fyzickom rozhraní ukazuje vonkajšie pakety a oboje spolu je najjasnejšou ukážkou toho, čo tunel skutočne robí.

Tri adresy a stránka vidí iba jednu

Ľudia si to mýlia neustále a zmätok vytvára falošné hlásenia o úniku. Sú to rôzne polia v rôznych hlavičkách s rôznou životnosťou.

AddressWhere it appearsWho can see it
Endpoint addressOuter header, the peer you connect toYour access network and the path to it
Inner tunnel addressInside the envelope, on the virtual interfaceThe peer, and anything the peer routes to
Exit addressSource of the packet that reaches the websiteThe website and its upstream

Číslo vedľa virtuálneho adaptéra je druhý riadok. Nie je to adresa, ktorú stránka zaznamenáva, a uvádzať ho ako vašu verejnú IP je jednoducho chyba. Adresu, ktorú stránka vidí, prideľuje výstup a pri tuneli do súkromnej siete nemusí existovať žiadny verejný výstup, pretože cieľ žije vnútri organizácie a nie na internete.

Tunel medzi lokalitami je rovnaký mechanizmus s inými koncovými bodmi. Dva routery obaľujú prevádzku medzi sieťami a žiadne jednotlivé zariadenie nemá nainštalovaného klienta. Obal je principiálne totožný, administratívna hranica nie.

Kde sa obal otvára a čo ho prežije

Tunel končí u svojho partnera. Ak vlastné šifrovanie aplikácie siaha ďalej, prežije túto hranicu, čo je bežný prípad HTTPS: relácia prehliadača končí na stránke, takže výstup preposiela šifrovaný text, ktorý nedokáže prečítať.

Nič iné v predvolenom nastavení neprežije. Nešifrovaná požiadavka je na výstupe čitateľná presne tak, ako bola čitateľná na Wi-Fi v kaviarni, a tunel nepridáva ochranu, ktorú aplikácia nikdy nemala. Rovnako pravidlá firewallu a politika preposielania na výstupe rozhodujú, čo bude ďalej; úspešný handshake je fakt o spojení s partnerom, nie o zvyšku cesty.

Režia je druhým viditeľným dôsledkom. Každý paket nesie hlavičku navyše a vonkajší transport môže pridať svoju, takže použiteľná záťaž na paket sa zmenšuje. Na ceste s pevnou maximálnou prenosovou jednotkou je to presne dôvod, prečo tunel prejde pingom a zasekne veľké nahrávanie.

Skontrolujte cestu, ktorou aplikácia skutočne išla

Posledným krokom je potvrdiť konkrétnu aplikáciu, nie stroj všeobecne. Preložte cieľ, pozrite sa na trasu pre túto adresu a potom sledujte spojenie, kým je otvorené:

getent hosts example.com
ip route get "$(getent hosts example.com | awk '{print $1; exit}')"
ss -tnp state established '( dport = :443 )'

Ak trasa uvádza tunel, ale zoznam socketov ukazuje spojenie so zdrojovou adresou z fyzického rozhrania, aplikácia je viazaná na niečo konkrétne, alebo o predvolenú trasu súťaží druhý tunel. Je to otázka smerovania a odpovedať na ňu možno z týchto troch výstupov, nie z obrazovky stavu klienta.

Bezpečnostná architektúra RFC 4301 opisuje verziu tejto obálky na úrovni IP pre IPsec a tá istá logika vrstiev platí pre WireGuard a OpenVPN. Keď dokážete ukázať na vnútorný paket a vonkajší paket ako na oddelené objekty, väčšina správania tunela prestane byť záhadná a stane sa smerovacou tabuľkou, ktorú môžete čítať.

Súvisiace články