Prečo WSL stratí názov pracovného hostiteľa, keď sa pripojí VPN?
Ten istý názov funguje vo Windows a zlyhá vo vnútri WSL hneď, ako sa zdvihne tunel. Skontrolujte režim DNS platformy a zastarané prepisy, než pridáte resolver.
Windows preloží interného hostiteľa bez akýchkoľvek sťažností a ten istý názov vo vnútri WSL zlyhá v okamihu, keď sa tunel zdvihne. Zvyčajná oprava je zapísať do distribúcie verejný resolver, čo obnoví bežné prehliadanie a urobí názov pracovného hostiteľa nepreložiteľným. Tým sa jedna porucha vymení za druhú a skryje sa vrstva, ktorá sa skutočne pokazila. Skôr než pridáte alebo odoberiete akýkoľvek riadok resolvera, zistite, ktorá z troch vrstiev zlyháva.
Najprv vylúčte poruchu smerovania
Opýtajte sa na ten istý plne kvalifikovaný názov na oboch stranách, nie na dva podobné názvy. Úspech vo Windows a zlyhanie vo WSL pre ten istý reťazec je podpis dvoch ciest prekladu a máloco iné vytvára tento vzor tak čisto. Ak sa WSL nedostane na službu ani na jej známu číselnú adresu, prítomná je aj porucha smerovania alebo filtrovania. V takom prípade to práca na DNS neodhalí a popoludnie ide na nesprávnu vrstvu.
Tri príznaky pokrývajú väčšinu takýchto prípadov a každý ukazuje inam. Prečítajte si zodpovedajúci riadok, než otvoríte konfiguračný súbor:
| Symptom inside WSL | Likely layer | Where to look |
|---|---|---|
| Private name fails while public browsing works | Resolver path | Tunneling mode and the Windows build |
| A name that worked yesterday fails today | Stale override | Generated resolver file, immutable flag, shell profile |
| The name resolves but the service does not | Routing or filtering | The resolved address and the path to it |
Prostredný riadok ľudia čítajú nesprávne, pretože zmena, ktorá ho pokazila, bola vykonaná týždne predtým a vtedy vyzerala úspešne. Tretí riadok ľudia nesprávne diagnostikujú, pretože názov, ktorý sa preloží, pôsobí ako dôkaz, že sieť je zdravá. Oba riadky vás posielajú do inej časti nižšie.
Tunelovanie DNS má spodnú hranicu verzie
Microsoft dokumentuje sieťový režim WSL, ktorý tuneluje požiadavky DNS do resolvera Windows cez kanál virtualizácie. Na podporovaných zostaveniach Windows 11 je predvolene zapnutý, a preto sa dva počítače v tej istej firemnej sieti správajú odlišne. Premennou je číslo zostavenia, nie firemná politika.
Sprievodca sieťami WSL opisuje tento režim a verzie, ktoré ho podporujú. Funkcia je dôležitá, pretože firemná politika DNS zvyčajne žije v resolveri Windows, a distribúcia, ktorá dedí cestu Windows, dedí aj politiku. Distribúcia, ktorá sa pýta verejného resolvera, nemá žiadnu cestu k súkromnému názvu, nech jej vlastná konfigurácia vyzerá akokoľvek upratane. Tento mechanizmus vysvetľuje celý príznak a vysvetľuje, prečo obchádzka s verejným resolverom zlyháva.
Prečítajte si zostavenie, než čokoľvek upravíte. Nastavenie skopírované z novšej inštalácie nie je dôkazom, že ho staršia implementuje. Zapíšte číslo zostavenia vedľa zmeny, pretože rozdiel medzi dvoma počítačmi je takmer vždy verzia, nie politika.
Staré prepisy prežijú problém, ktorý vyriešili
Staršie postupy vypínali generované súbory resolvera, natvrdo nastavovali server názvov alebo uzamkli súbor atribútom nemennosti. Tieto zmeny zostávajú na mieste dlho po tom, ako problém s pripojením, ktorý ich vyvolal, zmizol, a zvyčajne sú dôvodom, prečo sa zdá, že novšie nastavenie nič nerobí. Prežijú aj preinštalovanie distribúcie v podobe profilu shellu, ktorý súbor prepisuje pri každom prihlásení. Posledný sa hľadá najťažšie, pretože je neviditeľný zo súboru, ktorý všetci kontrolujú.
Hľadajte ručne písaný súbor resolvera, atribút nemennosti na ňom a spúšťací skript, ktorý ho prepisuje. Pred úpravou skontrolujte príznak nemennosti, pretože zápis do uzamknutého súboru zlyhá spôsobom, ktorý sa číta ako problém s právami. Potom skontrolujte profil shellu, pretože skript tam obnoví starý obsah v priebehu sekúnd po vašej oprave.
Odstránenie prepisu má dôsledky, preto si zapíšte, čo ste odstránili a prečo. Distribúcia, ktorá statický resolver naozaj potrebuje na iný účel, sa pokazí, keď sa generovaný súbor vráti.
Dva súbory, dve rôzne úlohy
Oba konfiguračné súbory žijú na rôznych miestach a riadia rôzne veci, a ich zámena vedie k úpravám aplikovaným na nesprávnu vrstvu. Súbor na strane Windows nastavuje vlastnosti virtuálneho počítača, zatiaľ čo súbor na strane distribúcie nastavuje, ako táto distribúcia zostavuje vlastnú konfiguráciu resolvera. Ani jeden neprepisuje druhý, preto sa oba musia zhodovať.
Pre inštaláciu, ktorá túto funkciu podporuje, je fragment na strane Windows krátky. To je celá zmena na tej strane:
[wsl2]
dnsTunneling=trueTento fragment patrí do používateľského profilu Windows a platí pre virtuálny počítač, nie pre jednu distribúciu. Tunelovanie tiež vyžaduje, aby distribúcia nevypnula generovanie resolvera, takže súbor na strane distribúcie musí toto správanie nechať na pokoji. Zmeňte jedno bez druhého a režim ticho nič nerobí, a to je najčastejší spôsob, akým sa táto oprava hlási ako pokazená. Skontrolujte oba súbory v tej istej relácii, pretože dve úpravy vykonané s odstupom týždňov sú dve úpravy, ktoré nikto nemôže pripísať.
Reštartujte a potom sa dopytujte z oboch strán
Tieto nastavenia sa čítajú pri štarte prostredia, takže nový shell vo vnútri bežiacej distribúcie ich znova nenačíta. Vypnite prostredie namiesto reštartovania shellu a najprv uložte akúkoľvek bežiacu prácu, pretože každá distribúcia sa s ním zastaví. Samotné toto opomenutie vysvetľuje väčšinu hlásení o zmene bez účinku.
Potom položte tú istú otázku z oboch strán. Výstup tiež ukazuje, s ktorým resolverom distribúcia naozaj skončila:
wsl.exe --shutdown
wsl.exe -e sh -c 'cat /etc/resolv.conf'
wsl.exe -e sh -c 'getent hosts files.corp.example'
wsl.exe -e powershell -Command 'Resolve-DnsName files.corp.example'Prvý príkaz ukončí prostredie, druhý ukazuje, ktorý resolver distribúcia teraz používa, a posledné dva kladú tú istú otázku každej strane. Porovnávajte odpovede, nie stav nastavenia. Dopyt, ktorý po čistom reštarte pri oboch správnych súboroch stále zlyháva, ukazuje na firemnú politiku resolvera a ten rozhovor má iného vlastníka.