Čo je tunel VPN a kde sa ochrana končí
Tunel obalí vybrané pakety druhým obalom nad spojením, ktoré ste už mali. Sledujte jednu požiadavku a uvidíte, ktorú adresu stránka skutočne zaznamená.
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.
| Address | Where it appears | Who can see it |
|---|---|---|
| Endpoint address | Outer header, the peer you connect to | Your access network and the path to it |
| Inner tunnel address | Inside the envelope, on the virtual interface | The peer, and anything the peer routes to |
| Exit address | Source of the packet that reaches the website | The 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ť.