Покренути VPN на хосту или унутар VM-а? Приручник за одлуку
Власник тунела одлучује шта шта покрива. Изаберите смештај на хосту или код госта, па то потврдите проверама руте, DNS-а и излаза унутар госта.
Изградња тунела унутар госта и изградња на хосту обоје мењају адресу коју пријављује прегледач, и ту се сличност завршава. Тунел у власништву госта држи своје кључеве, своју подразумевану руту и свој резолвер унутар језгра госта, док хост прослеђује шифроване пакете на једну удаљену адресу. Тунел у власништву хоста је огледална слика: клијент на хосту држи сесију и примењује руте и политику, а гост позајмљује оно што изађе. Изаберете ли погрешног власника, сваки каснији симптом шаље вас на погрешну машину. Две наредбе решавају питање за око минут, а остатак овог приручника је шта учинити са одговором.
Одлучите власника пре него што дотакнете клијента
Правило се односи на то где се ствара шифровани текст, а не на то која машина приказује икону VPN-а. Ако га ствара гост, госту треба радионица рута до VPN сервера и ништа друго са хоста. Ако га ствара хост, гост мора да има пут кроз хост који ће преживети сваку политику коју клијент на хосту намеће локалном саобраћају.
Три питања обично изаберу смештај уместо вас. Мора ли саобраћај госта да преживи корпоративног клијента на хосту? Онда тунел припада госту. Треба ли више гостију један акредитив и једну излазну адресу? Онда припада хосту, са прослеђивањем намерно постављеним. Треба ли саобраћај госта да остане потпуно изван VPN-а хоста? Онда је тунел у госту једини распоред који то даје самом конструкцијом.
Запишите одговор у једном реду поред имена VM-а: guest-owned или host-owned. У лабораторији од шест машина та белешка штеди више времена од било ког корака испод, јер вас спречава да тражите квар у тунелу којег никада није било у машини на коју сте се пријавили.
WSL1 и WSL2 су супротни случајеви
WSL1 није виртуелна машина, па питање смештаја углавном испари. Његови Linux бинарни фајлови раде према мрежном стеку Windows-а кроз слој превођења, а Linux VPN клијент нема независна сучеља за конфигурисање. Распоред који ради је тунел на страни Windows-а, при чему дистрибуција користи резултат не поседујући ништа.
WSL2 је обрнуто. Покреће праву језгру у лаганом помоћном VM-у иза виртуелног прекидача Hyper-V, а његов адресни простор се преводи кроз NAT преко адаптера на страни хоста. Linux клијент унутар дистрибуције стога се понаша као на физичкој Linux кутији: ствара tun0 или wg0, инсталира своје руте и ради. Квар живи на страни хоста. Када се Windows VPN клијент повеже са политиком која блокира саобраћај на локалним мрежама, третира подмрежу WSL2 као неповерљиву локалну мрежу и пресеца NAT пут. Дистрибуција тада губи DNS и излазни приступ, док је њен сопствени тунел још здрав: wg show извештава о руковању, ip route изгледа исправно, а curl виси.
Коју поправку можете да користите зависи од издања Windows-а. Старија је изузетак у клијенту на хосту за подмрежу WSL, додат под подешавањима локалне мреже или подељеног тунела клијента. Новија, на издањима Windows 11 која га подржавају, је огледалско умрежавање: ставите networkingMode=mirrored у одељак [wsl2] датотеке %UserProfile%\.wslconfig, покрените wsl --shutdown, и дистрибуција дели сучеља хоста уместо приватне NAT подмреже. Огледалски режим такође мења понашање localhost-а и улазних портова, па га третирајте као миграцију, а не као прекидач.
NAT, мост и шта хост може да види
Под NAT-ом пакети тунела госта адресирају се на јавну адресу VPN сервера и излазе кроз адаптер хоста као шифровани UDP или TCP. Хост види један ток и број његових бајтова, ништа о одредиштима унутра. Под мостовним адаптером гост има сопствени идентитет слоја 2 на физичкој LAN мрежи, узима сопствени DHCP закуп и за сваку политику засновану на MAC изгледа као други уређај. Ниједан режим не дозвољава хосту да чита терет тунела; мостовни гост је једноставно много видљивији мрежи око себе.
Изолација такође има доњу границу. Гост не може да се сакрије од машине која поседује његову меморију, а ко контролише хост може да чита кључеве из RAM-а госта. Тунел у госту даје вам границу усмеравања и границу за злонамерни софтвер, а не заштиту од особе која држи преносни рачунар. Документовани режими адаптера вреди држати отворене док бирате, јер режим мења и оно што хост види и оно што LAN види.
Приручник: сместите, конфигуришите, докажите
Покрените ове четири провере по реду у свежој шкољци госта и зауставите се на првој која се не слаже са записаним власником.
ip route get 1.1.1.1који враћаtun0илиwg0значи власништво госта, аeth0са приватним следећим скоком значи власништво хоста.resolvectl query example.com, или прочитајте/etc/resolv.confтамо где гост не покреће услугу резолвера. Тунел који носи саобраћај али не DNS најчешће је стање напола конфигурисано.- Упоредите излазе:
curl -4 -s https://ifconfig.meу госту премаcurl.exe -4 -s https://ifconfig.meна хосту. Различите адресе значе да гост поседује тунел, а хост на VPN-у са гостом који показује кућног провајдера је случај у којем ништа није наслеђено. - Поновите обоје са
-6. Тунел само за v4 пропушта v6 осим ако га клијент блокира или усмерава, а многи клијенти подразумевано остављају v6 на физичком сучељу.
У дизајну са хост-пролазом, где више гостију дели један тунел, хост мора да прослеђује и преводи. На Linux хосту то су три дела, а гост се тихо враћа на своју обичну руту када било који недостаје:
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
На страни WireGuard-а AllowedIPs хост-партнера мора да укључи подмрежу гостију, на пример 192.168.122.0/24, иначе повратни пакети никада не стижу и подешавање изгледа као проблем са заштитним зидом. Windows хост постиже исти резултат дељењем интернет везе или NAT правилом на прекидачу Hyper-V и треба му иста провера повратног пута.
Када је распоред још отворен, ова табела покрива најчешће поставке:
| 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 |
Два тунела, два госта и сукоби међу њима
Када вам требају два излаза истовремено, образац који се држи је један тунел по госту. Сваки VM држи своју подразумевану руту и резолвер, хост остаје на обичној мрежи, и два тунела се никада не свађају око исте табеле усмеравања. Повезивање два госта мостом такође не спаја њихове руте: виртуелна мрежа даје пут, а сваком клијенту још треба рећи да овај локални саобраћај сме да заобиђе тунел.
Покретање хост-тунела и гост-тунела заједно је легитимно, а намерно угнежђивање је понекад управо оно што желите, при чему гост излази кроз свој тунел, а тај тунел излази кроз хостов. Оно што то претвара у прекид јесте да нико није записао која се крајња тачка достиже кроз који слој. Држите листу од две колоне са одредиштем и власником, и сукоб рута постаје претрага уместо поподнева откривања.
Проверите, а затим оставите опоравак власнику
Тестирајте из унутрашњости госта свежим процесом апликације: саобраћај, разрешавање имена, обе фамилије адреса и шта се дешава када тунел падне. Икона VPN-а на хосту не говори ништа о покривености госта, и то је најчешћа лажна потврда у целом овом подручју.
Опоравак такође припада власнику. Тунел у власништву госта обнавља сопствени клијент госта и руте које је записао. Дизајн у власништву хоста обнавља се низом подизања хоста, а правила прослеђивања не преживљавају поновно подизање ако их јединица или задатак при покретању поново не примени. Враћена слика је распоређивање, не опозив, јер враћа старе акредитиве и старе руте заједно са диском. Пре него што посао прогласите завршеним, потврдите да власник још одговара записаном реду, да се DNS и обе фамилије адреса разрешавају унутар госта, да мртав тунел оставља употребљиву мрежу уместо црне рупе и да поновно подизање или враћање слике репродукује исто стање.