VPN na hostu ili unutar VM-a? Priručnik za odluku
Vlasnik tunela odlučuje šta šta pokriva. Odaberite smještaj na hostu ili gostu, pa to potvrdite provjerama rute, DNS-a i izlaza unutar gosta.
Izgradnja tunela unutar gosta i izgradnja na hostu oboje mijenjaju adresu koju preglednik prijavljuje, i tu sličnost prestaje. Tunel koji posjeduje gost drži svoje ključeve, svoju zadanu rutu i svoj razrješivač unutar jezgre gosta, dok host prosljeđuje šifrirane pakete na jednu udaljenu adresu. Tunel koji posjeduje host je zrcalna slika: klijent na hostu drži sesiju i primjenjuje rute i politiku, a gost posuđuje ono što izađe. Odaberete li pogrešnog vlasnika, svaki kasniji simptom šalje vas na pogrešan stroj. Dvije naredbe rješavaju pitanje za otprilike minutu, a ostatak ovog priručnika je što učiniti s odgovorom.
Odlučite vlasnika prije nego što dotaknete klijenta
Pravilo se odnosi na to gdje se proizvodi šifrirani tekst, a ne na to koji stroj prikazuje ikonu VPN-a. Ako ga proizvodi gost, gostu treba radna ruta do VPN poslužitelja i ništa drugo s hosta. Ako ga proizvodi host, gostu treba da put kroz host preživi bilo koju politiku koju klijent na hostu nameće lokalnom prometu.
Tri pitanja obično odaberu smještaj umjesto vas. Mora li promet gosta preživjeti korporativni klijent na hostu? Tada tunel pripada gostu. Treba li više gostiju jedan akreditiv i jednu izlaznu adresu? Tada pripada hostu, s prosljeđivanjem namjerno postavljenim. Treba li promet gosta ostati posve izvan VPN-a hosta? Tada je tunel u gostu jedini raspored koji vam to daje samom konstrukcijom.
Zapišite odgovor u jednom retku uz ime VM-a: guest-owned ili host-owned. U laboratoriju od šest strojeva ta bilješka štedi više vremena od bilo kojeg koraka ispod, jer vas sprječava da tražite kvar u tunelu kojeg nikad nije bilo u stroju na koji ste se prijavili.
WSL1 i WSL2 su suprotni slučajevi
WSL1 nije virtualni stroj, pa pitanje smještaja uglavnom ispari. Njegove Linux binarne datoteke rade prema mrežnom stogu Windowsa kroz sloj prevođenja, a Linux VPN klijent nema neovisna sučelja za konfiguriranje. Raspored koji radi je tunel na strani Windowsa, pri čemu distribucija koristi rezultat ne posjedujući ništa.
WSL2 je obrnuto. Pokreće pravu jezgru u laganom pomoćnom VM-u iza virtualnog preklopnika Hyper-V, a njegov adresni prostor prevodi se kroz adapter na strani hosta. Linux klijent unutar distribucije stoga se ponaša kao na fizičkom Linux stroju: stvara tun0 ili wg0, instalira vlastite rute i radi. Kvar živi na strani hosta. Kad se Windows VPN klijent spoji s politikom koja blokira promet na lokalnim mrežama, podmrežu WSL2 tretira kao nepouzdanu lokalnu mrežu i presijeca NAT put. Tada distribucija izgubi DNS i izlazni pristup dok je njezin vlastiti tunel još zdrav: wg show izvještava o rukovanju, ip route izgleda ispravno, a curl visi.
Koji popravak možete upotrijebiti zavisi od izdanja Windowsa. Stariji je iznimka u klijentu na hostu za podmrežu WSL, dodana pod postavkama lokalne mreže ili podijeljenog tunela u klijentu. Noviji, na izdanjima Windows 11 koja ga podržavaju, jest zrcalno umrežavanje: stavite networkingMode=mirrored u odjeljak [wsl2] datoteke %UserProfile%\.wslconfig, pokrenite wsl --shutdown, i distribucija dijeli sučelja hosta umjesto privatne NAT podmreže. Zrcalni način također mijenja ponašanje localhosta i ulaznih portova, pa ga tretirajte kao migraciju, a ne kao prekidač.
NAT, premosnik i što host može vidjeti
Pod NAT-om paketi tunela gosta adresirani su na javnu adresu VPN poslužitelja i izlaze kroz adapter hosta kao šifrirani UDP ili TCP. Host vidi jedan tok i broj njegovih bajtova, ništa o odredištima unutar njega. Pod premosnim adapterom gost ima vlastiti identitet sloja 2 na fizičkoj LAN mreži, uzima vlastiti DHCP najam i izgleda svakoj politici utemeljenoj na MAC adresi kao drugi uređaj. Nijedan način ne dopušta hostu čitanje korisnog tereta tunela; premosni gost je jednostavno mnogo vidljiviji mreži oko sebe.
Postoji i donja granica izolacije. Gost se ne može sakriti od stroja koji posjeduje njegovu memoriju, a tko kontrolira host može čitati ključeve iz RAM-a gosta. Tunel u gostu daje vam granicu usmjeravanja i granicu za zloćudni softver, a ne zaštitu od osobe koja drži prijenosnik. Dokumentirani načini adaptera vrijedi imati otvorene dok birate, jer način mijenja i što host vidi i što LAN vidi.
Priručnik: smjestite, konfigurirajte, dokažite
Pokrenite ove četiri provjere po redu u svježoj ljusci gosta i zaustavite se na prvoj koja se ne slaže s vlasnikom kojeg ste zapisali.
ip route get 1.1.1.1koji vraćatun0iliwg0znači da tunel posjeduje gost, aeth0s privatnim sljedećim skokom znači da ga posjeduje host.resolvectl query example.com, ili pročitajte/etc/resolv.confondje gdje gost ne pokreće uslugu razrješivača. Tunel koji nosi promet ali ne DNS najčešće je stanje napola konfiguriranog slučaja.- Usporedite izlaze:
curl -4 -s https://ifconfig.meu gostu premacurl.exe -4 -s https://ifconfig.mena hostu. Različite adrese znače da gost posjeduje tunel, a host na VPN-u s gostom koji pokazuje kućnog ISP-a jest slučaj u kojem ništa nije naslijeđeno. - Ponovite oboje s
-6. Tunel samo za v4 propušta v6 osim ako ga klijent blokira ili usmjeri, a mnogi klijenti ostavljaju v6 na fizičkom sučelju po zadanom.
Za dizajn s host-ulazom, gdje više gostiju dijeli jedan tunel, host mora prosljeđivati i prevoditi. Na Linux hostu to su tri dijela, a gost se tiho vraća na svoju običnu rutu kad bilo koji od njih nedostaje:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
iptables -A FORWARD -i virbr0 -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Na strani WireGuarda AllowedIPs hostovog para mora uključivati podmrežu gostiju, primjerice 192.168.122.0/24, inače povratni paketi nikad ne stignu i postava izgleda kao problem vatrozida. Windows host postiže isti rezultat s Internet Connection Sharing ili NAT pravilom na preklopniku Hyper-V i treba istu provjeru povratnog puta.
Kad je raspored još otvoren, ova tablica pokriva rasporede koji se najčešće pojavljuju:
| Situation | Owner | Check first |
|---|---|---|
| One VM, host also on a corporate VPN | Guest | Does the host client block local networks? |
| Six lab VMs, one exit address | Host plus forwarding | ip_forward, NAT rule, server AllowedIPs |
| Malware or research VM | Guest, NAT | Snapshot age and resolver state |
| Bridged VM on an office LAN | Guest | DHCP lease and port security |
Dva tunela, dva gosta i sukobi među njima
Kad trebate dva izlaza odjednom, uzorak koji se drži je jedan tunel po gostu. Svaki VM čuva svoju zadanu rutu i razrješivač, host ostaje na običnoj mreži, i dva se tunela nikad ne svađaju oko iste tablice usmjeravanja. Povezivanje dvaju gostiju premosnikom također ne spaja njihove rute: virtualna mreža daje put, a svakom klijentu još treba reći da taj lokalni promet smije zaobići tunel.
Pokretanje hostovog i gostovog tunela zajedno legitimno je, a namjerno gniježđenje katkad je točno ono što želite, pri čemu gost izlazi kroz svoj tunel, a taj tunel izlazi kroz hostov. Ono što to pretvara u prekid jest da nitko nije zapisao koje se odredište doseže kroz koji sloj. Vodite popis od dva stupca s odredištem i vlasnikom, i sukob ruta postaje pretraga umjesto popodneva otkrivanja.
Provjerite, a zatim ostavite oporavak vlasniku
Testirajte iz unutrašnjosti gosta svježim procesom aplikacije: promet, razrješavanje imena, obje obitelji adresa i što se događa kad tunel padne. Ikona VPN-a na hostu ne govori ništa o pokrivenosti gosta, i to je najčešća lažna potvrda u cijelom ovom području.
Oporavak također pripada vlasniku. Tunel koji posjeduje gost vraća se vlastitim klijentom gosta i rutama koje je zapisao. Dizajn koji posjeduje host vraća se slijedom podizanja hosta, a pravila prosljeđivanja ne prežive ponovno podizanje ako ih neka jedinica ili početni zadatak ponovno ne primijeni. Vraćena snimka je implementacija, a ne poništavanje, jer vraća stare akreditive i stare rute zajedno s diskom. Prije nego što posao proglasite završenim, potvrdite da se vlasnik još podudara s retkom koji ste zapisali, da se DNS i obje obitelji adresa razrješavaju unutar gosta, da mrtav tunel ostavlja upotrebljivu mrežu umjesto crne rupe, i da ponovno podizanje ili vraćanje snimke daje isto stanje.