WSL2 erfir ekki fyrirtækja-VPN-inu, og það er gallinn
WSL2 keyrir í eigin sýndarneti og erfir aldrei VPN-stafla hýsilsins. Aðskiljið nafnamistök frá slóðamistökum áður en þið breytið resolv.conf yfirleitt.
Innra wikiið hleðst í Edge, en git clone inni í dreifingunni rennur út á tíma. Þessi eina athugun er venjulega lesin sem «VPN-ið lokar WSL2», og næsta klukkustund fer í að breyta /etc/resolv.conf. Hagnýtari lestur er að WSL2 hafði aldrei netssóð hýsilsins: það keyrir í hjálpar-VM með eigin millistykki, eigin leiðum og resolver-skrá sem Windows býr til fyrir það. Allt sem á eftir kemur fer eftir því hverju af þessum þremur þið vantið í raun.
VM-ið hefur eigin stafla, mælingar og resolver
Í sjálfgefinni NAT-stillingu situr dreifingin bak við sýndarrofa og nær internetinu í gegnum hýsilinn, en sér ekki millistykki hýsilsins. ip addr sýnir eitt viðmót með einkaaðsetri, ip route sýnir sjálfgefna leið í gegnum þann rofa, og /etc/resolv.conf er mynduð skrá sem bendir á stub-resolver sem Windows valdi. Ekkert af þessu breytist vegna þess að VPN-klient var ræstur á Windows-hliðinni.
Þess vegna sannar «vafrinn virkar» svo litlu. Vafrinn notar stafla hýsilsins, göngin og resolver-stefnu hýsilsins. Skelin þín notar annan stafla sem deilir fyrir tilviljun líkamlegu netkorti. Þeir eru sammála í góða tilvikinu og greinast nákvæmlega þegar VPN-ið setur upp síu, endurskrifar DNS-listann eða bætir við leið fyrir undirnet sýndarrofans.
Tvær prófanir ráða því í hvaða heimi þið eruð, og þær verða að keyra inni í dreifingunni:
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
Nöfn sem mistakast á meðan bókstaflegt netfang svarar er resolver-vandamál. Nöfn og netföng sem mistakast saman er slóðavandamál, og engin resolver-breyting mun snerta það. Sannanir frá Windows-hlið koma næst: Get-NetAdapter | Get-DnsClientServerAddress og route print -4 sýna hvort göngin hafa gert tilkall til undirnetsins sem VM-ið þitt býr í.
Fyrsta goðsögn: fyrirtækja-DNS-þjónarnir laga það
Að breyta resolver-skránni er klassíska ráðið, og það er rétt um það bil helminginn af tímanum. Þegar það er rétt er það rétt af ákveðinni ástæðu: myndaða skráin bendir á resolver sem þekkir aðeins opinber nöfn, svo fyrirspurn um intranet.example.internal kemur til baka sem ótilgreind þótt slóðin sé í lagi.
Að festa netþjóna VPN-sins þýðir að stöðva Windows í að endurskapa skrána, því hverri skrá sem þið skrifið handvirkt er skipt út við næstu ræsingu:
[network]
generateResolvConf = false
Vistið það sem /etc/wsl.conf, keyrið wsl --shutdown frá Windows, ræsið þá dreifinguna og skrifið /etc/resolv.conf með netþjónum ganganna fyrst og opinberan resolver aðeins sem varaleið. Þetta er varanleg breyting með viðhaldskostnaði: skráin fylgir hýsilnum ekki lengur, svo þegar fyrirtækja-DNS-viðföngin breytast heldur dreifingin áfram að spyrja um þau gömlu. Einhver verður að eiga þá skrá.
Það gerir líka ekkert þegar mistökin eru víðtækari. Ef curl að 1.1.1.1 rennur út á tíma er klientur ganganna að sía sýndarrofann eða beina undirneti VM-sins inn í göngin, og réttur resolver gefur þér bara nöfn sem enn er ekki hægt að ná til.
Önnur goðsögn: mælingabreytingin endist
Þegar nöfn leysast en umferð fer út um líkamlega millistykkiið eru viðmótsmælingar stöngin. Gefið VPN-millistykkinu háan kostnað og WSL-rofann lágum:
Get-NetAdapter | Where-Object InterfaceDescription -Match "AnyConnect" | Set-NetIPInterface -InterfaceMetric 4000
Get-NetIPInterface -InterfaceAlias "vEthernet (WSL)" | Set-NetIPInterface -InterfaceMetric 1
Munið þá að í mörgum klientbyggingum er millistykki ganganna endurskapað við hverja tengingu og mælingin fer aftur í sjálfgefið gildi. Einskiptisskipun er viðgerð sem rennur út hljóðlega, venjulega yfir helgi, og miðinn kemur til baka með «það virkaði í síðustu viku». Tímasett verkefni sem VPN-atburðurinn hleypir af stað, eða skrift sem notandinn keyrir eftir tengingu, er heiðarleg útgáfa af þessari viðgerð.
Sama lok gildir um hýsilsleiðir sem voru bætt við fyrir eitt þrjóskt forskeyti. Þær eru þess virði sem greining, því þær segja hvort vandamálið er einn áfangastaður eða öll slóðin, en þær eru ekki arkitektúr.
Þriðja goðsögn: ein viðgerð nær yfir hverja Windows-byggingu
| 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 er sidecar-mynstrið: lítil dreifing á slóðina á hýsilhlið og sendir áfram fyrir aðrar dreifingar um sýndarsocket, svo umferð forrita hættir að vera háð síuðu rofanum. Það þarf venjulegu slóðina til að virka, sem þýðir að fjarlægja yfirskriftir networkingMode og dnsTunneling úr %UserProfile%\.wslconfig, endurheimta generateResolvConf = true í hverri virkri dreifingu og ræsa þjónustuna við innskráningu.
Speglaður hamur er innbyggða valkosturinn í Windows 11 22H2 og nýrri, og hann er ein stilling plús slokknun:
[wsl2]
networkingMode=mirrored
Inni í dreifingunni telur ip addr þá upp millistykki hýsilsins, göngin geta birst á meðal þeirra, og DNS-göng senda fyrirspurnir í gegnum resolver Windows jafnvel þegar klienturinn endurskrifar DNS-listann. Það er ekki algilt: sumir síureklar sleppa speglaðri slóð enn, og Hyper-V eldveggsreglur gætu þurft skýrt leyfi. WSL-netleiðarvísir Microsoft er síðan sem þarf að bera saman við bygginguna þína áður en þú beitir uppskrift sem skrifuð er fyrir nýrri.
Prófið þrjá hluti eftir hverja breytingu
Veljið eina aðferð á hverja vél og skrifið hana niður, því þær tvær blandast illa. Sidecar ofan á speglaðan ham tvöfaldar framsendinguna, og speglaður hýsill með úrelta sidecar-færslu í .wslconfig hefur tilhneigingu til að mistakast eftir uppfærslu, ekki fyrir hana.
Hvað sem þið völduð, samþykktarprófið eru sömu þrjár beiðnirnar inni í dreifingunni: innra nafn, opinbert nafn og hrátt netfang. Endurtakið þær svo eftir að hafa aftengt og endurtengt göngin, og eftir wsl --shutdown. Ef aðeins innra nafnið mistekst er það resolver-stefna; ef innra og opinbert nafn mistakast saman með virku netfangi er það enn resolver-stefna; ef allt mistekst er það slóðin.
Ef einn innri hýsill mistekst á meðan restin virkar, hættið að horfa á resolverinn og leitið að vantar leið fyrir það forskeyti. Ef allt virkar þar til næsta endurtengingar hafið þið fundið viðgerð sem er háð stöðu keyrslutíma, og hana verður að beita aftur sjálfkrafa eða skipta út fyrir eina af tveimur aðferðunum hér að ofan.