WSL2 ma jirtix il-VPN korporattiva, u dan huwa l-bug
WSL2 jaħdem fin-netwerk virtwali tiegħu u qatt ma jirt il-munġamenti VPN tal-host. Issepara l-fallimenti tal-ismijiet mill-fallimenti tal-passa qabel ma teditja resolv.conf.
Il-wiki interna tgħabbi f'Edge, filwaqt li git clone ġewwa d-distribuzzjoni jispiċċa f'timeout. Dan l-osservazzjoni waħedha normalment tinqara bħala «il-VPN qed jimblokka WSL2», u s-siegħa li jmiss tmur f'li teditja /etc/resolv.conf. Il-qari aktar utli huwa li WSL2 qatt ma kellu l-passa tan-netwerk tal-host: jaħdem f'VM awżiljarja bl-adapter tiegħu, ir-rotot tiegħu u fajl resolver li Windows jiġġenera għalih. Kull ma jiġi wara jiddependi minn liema minn dawn it-tlieta fil-fatt hija nieqsa għalik.
Il-VM għandha l-munġament, il-metriċi u r-resolver tagħha
Fil-modalità NAT awtomatika, id-distribuzzjoni tinsab wara switch virtwali u tilħaq l-internet permezz tal-host, iżda ma tarax l-adapters tal-host. ip addr juri interface waħda b'indirizz privat, ip route juri rotta awtomatika permezz ta' dak is-switch, u /etc/resolv.conf huwa fajl iġġenerat li jindika lejn stub resolver li għażel Windows. Xejn minn dan ma jinbidel għax klijent VPN inbeda fuq in-naħa ta' Windows.
Huwa għalhekk li «il-browser jaħdem» jipprova daqshekk ftit. Il-browser juża l-munġamenti tal-host, it-tunnel u l-politika tar-resolver tal-host. Il-qoxra tiegħek tuża munġament ieħor li b'kumbinazzjoni jaqsam karta tan-netwerk fiżika. Jaqblu fil-każ tajjeb u jiddevjazzjoni eżattament meta l-VPN jinstalla filtru, jikteb mill-ġdid il-lista DNS jew iżid rotta għas-subnet tas-switch virtwali.
Żewġ testijiet jiddeċiedu f'liema dinja int, u jridu jiġu esegwiti ġewwa d-distribuzzjoni:
getent hosts example.com
curl -sS -m 8 -o /dev/null -w "%{http_code}\n" 1.1.1.1
ip route
cat /etc/resolv.conf
Li l-ismijiet ifallu waqt li indirizz letterali jweġib huwa problema ta' resolver. Li l-ismijiet u l-indirizzi ifallu flimkien hija problema ta' passa, u l-ebda editjar tar-resolver mhu se jmissha. Imbagħad jiġu l-provi min-naħa ta' Windows: Get-NetAdapter | Get-DnsClientServerAddress u route print -4 juru jekk it-tunnel ħax is-subnet fejn tgħix il-VM tiegħek.
L-ewwel mit: is-servers DNS korporattivi jżommuha
L-editjar tal-fajl tar-resolver huwa l-parir klassiku, u huwa tajjeb madwar nofs il-ħin. Meta jkun tajjeb, ikun tajjeb għal raġuni speċifika: il-fajl iġġenerat jindika lejn resolver li jaf biss ismijiet pubbliċi, għalhekk mistoqsija għal intranet.example.internal tiġi lura bħala li ma teżistix anki jekk il-passa hija sew.
Li tippinna s-servers tal-VPN ifisser li twaqqaf lil Windows milli jiġġenera mill-ġdid il-fajl, għax kull fajl li tikteb bl-idejn jiġi sostitwit fil-bidu li jmiss:
[network]
generateResolvConf = false
Issejvja dan bħala /etc/wsl.conf, esegwi wsl --shutdown minn Windows, imbagħad ibda d-distribuzzjoni u ikteb /etc/resolv.conf bis-servers tat-tunnel l-ewwel u resolver pubbliku biss bħala riżerva. Dan huwa tibdil dejjiemi bi spiża ta' manutenzjoni: il-fajl m'għadux isegwi l-host, għalhekk meta l-indirizzi DNS korporattivi jinbidlu d-distribuzzjoni tkompli tistaqsi dawk qodma. Xi ħadd irid ikun is-sid ta' dak il-fajl.
Ma jagħmel xejn lanqas meta l-falliment ikun usa'. Jekk curl lejn 1.1.1.1 jispiċċa f'timeout, il-klijent tat-tunnel qed jiffiltra s-switch virtwali jew qed jgħaddi s-subnet tal-VM fit-tunnel, u resolver korrett jagħtik biss ismijiet li għadhom ma jistgħux jintlaħqu.
It-tieni mit: il-bidla tal-metrika tibqa'
Meta l-ismijiet jiġu solvuti iżda t-traffiku joħroġ mill-adapter fiżiku, il-lieva hija l-metriċi tal-interface. Agħti spiża għolja lill-adapter VPN u waħda baxxa lis-switch WSL:
Get-NetAdapter | Where-Object InterfaceDescription -Match "AnyConnect" | Set-NetIPInterface -InterfaceMetric 4000
Get-NetIPInterface -InterfaceAlias "vEthernet (WSL)" | Set-NetIPInterface -InterfaceMetric 1
Imbagħad ftakar li f'ħafna builds tal-klijent l-adapter tat-tunnel jerġa' jinħoloq f'kull konnessjoni u l-metrika terġa' lura għall-default tagħha. Komanda ta' darba hija tiswija li tiskadi bil-kwiet, normalment matul tmiem il-ġimgħa, u t-ticket jerġa' lura b'«il-ġimgħa li għaddiet kienet taħdem». Task skedat li jiġi attivat mill-avveniment tal-VPN, jew skript li l-utent iħaddem wara li jikkonnettja, hija l-verżjoni onesta ta' din it-tiswija.
L-istess skadenza tapplika għar-rotot tal-host miżjuda għal prefiss wieħed iebes. Huma ta' valur bħala dijanjostika, għax jgħidu jekk il-problema hijiex destinazzjoni waħda jew il-passa kollha, iżda mhumiex arkitettura.
It-tielet mit: tiswija waħda tkopri kull build ta' Windows
| Approach | What it actually does |
|---|---|
| Resolver pin | Fixes private names only; no effect on path failures |
| Sidecar distribution | Forwards traffic over a socket to a helper VM, so the switch's filter no longer matters |
| Mirrored networking | Gives the distribution the host's interface set; also enables DNS tunnelling |
wsl-vpnkit huwa l-mudell sidecar: distribuzzjoni żgħira għandha l-passa fuq in-naħa tal-host u tibgħat għal distribuzzjonijiet oħra permezz ta' socket virtwali, għalhekk it-traffiku tal-applikazzjonijiet jieqaf jiddependi mis-switch iffiltra. Jeħtieġ li l-passa standard taħdem, jiġifieri tneħħi l-override networkingMode u dnsTunneling minn %UserProfile%\.wslconfig, tirrestawra generateResolvConf = true f'kull distribuzzjoni li taħdem u tibda s-servizz fil-login.
Il-modalità mirror hija l-alternattiva integrata fi Windows 11 22H2 u aktar ġodda, u hija setting wieħed flimkien ma' għeluq:
[wsl2]
networkingMode=mirrored
Ġewwa d-distribuzzjoni ip addr imbagħad jelenka l-adapters tal-host, it-tunnel jista' jidher fosthom, u t-tunnel DNS jgħaddi t-tfittxijiet permezz tar-resolver ta' Windows anki meta l-klijent jikteb mill-ġdid il-lista DNS. Mhuwiex universali: xi drivers tal-filtru għadhom iwarrbu l-passa mirror, u r-regoli tal-firewall ta' Hyper-V jistgħu jeħtieġu permess espliċitu. Il-gwida tan-netwerk WSL ta' Microsoft hija l-paġna li għandha tiġi mqabbla mal-build tiegħek qabel ma tapplika riċetta miktuba għal waħda aktar ġdida.
Ittestja tliet affarijiet wara kull bidla
Agħżel mekkaniżmu wieħed għal kull magna u ikteb, għax it-tnejn jingħaqdu ħażin. Sidecar fuq il-modalità mirror jirdoppja l-ġarr, u host mirror b'entrata sidecar skaduta f'.wslconfig għandu tendenza li jfalli wara aġġornament, mhux qablu.
X'ikun li għażilt, it-test ta' aċċettazzjoni huma l-istess tliet talbiet ġewwa d-distribuzzjoni: isem intern, isem pubbliku u indirizz nej. Imbagħad erġa' għamilhom wara li tiskonnettja u terġa' tikkonnettja t-tunnel, u wara wsl --shutdown. Jekk jonqos biss l-isem intern hija politika tar-resolver; jekk jonqsu flimkien l-isem intern u dak pubbliku b'indirizz li jaħdem għadha politika tar-resolver; jekk jonqos kollox hija l-passa.
Jekk host intern wieħed ifalli filwaqt li l-bqija jaħdmu, waqaf milli tħares lejn ir-resolver u fittex rotta nieqsa għal dak il-prefiss. Jekk kollox jaħdem sal-konnessjoni mill-ġdid li jmiss, sibt tiswija li tiddependi mill-istat tal-ħin tal-eżekuzzjoni, u trid tiġi applikata mill-ġdid awtomatikament jew sostitwita b'wieħed miż-żewġ mekkaniżmi hawn fuq.