resolv.conf sistēmā WSL 2: DNS nomirst, kad pieslēdzas VPN
WSL no jauna ģenerē resolv.conf no tiem Windows adapteriem, ko redz, tāpēc VPN risinātājs var nekad neierasties. Apturiet ģenerēšanu, pēc tam pārbaudiet uzņēmuma nosaukumu.
Pārlūkošana distribūcijas iekšienē darbojas, un pirmais iekšējais resursdatora nosaukums neizdodas tajā brīdī, kad tuneļis paceļas. Reflekss ir pievienot publisku risinātāju, kas atjauno internetu un padara uzņēmuma nosaukumu nesasniedzamu atlikušajai dienas daļai. WSL 2 gadījumā /etc/resolv.conf ir ģenerēta izvade, nevis konfigurācija, un tieši šis mehānisms ir tā vērts, lai to saprastu. Risinājums nav labāks risinātājs, bet gan faila piederība.
Fails tiek ģenerēts, nevis konfigurēts
WSL 2 ieraksta failu startēšanas laikā no tiem Windows adapteriem, ko tajā brīdī redz, un augšā izdrukā komentāru, kas to pasaka. Kad VPN klients vēlāk pievieno vai pārraksta adapteri, distribūcija ne vienmēr kaut ko ģenerē no jauna, un fails turpina aprakstīt tīklu, kura vairs nav.
Otrs kļūmes veids ir klusāks: WSL var kopēt serverus tikai no dažiem adapteriem. Ja fiziskajam adapterim jau ir IPv6 risinātājs, VPN adaptera piegādātos IPv4 serverus var izmest, nevis pievienot, un fails izskatās pilnīgs, kamēr izlaiž tieši to, kas atbild uz iekšējiem nosaukumiem.
Salīdziniet Windows skatu ar Linux skatu
Pirms rediģēšanas izlasiet abas puses. Distribūcijas iekšienē apskatiet, ko fails satur un vai tas ir parasts fails vai saite. Operētājsistēmā Windows uzskaitiet risinātāju katram adapterim, tostarp tam, ko izveidoja VPN:
ls -l /etc/resolv.conf
cat /etc/resolv.conf
Get-DnsClientServerAddress -AddressFamily IPv4
Get-NetAdapter | Where-Object Status -eq 'Up'
Kad VPN adapteris rāda uzņēmuma serverus un Linux rāda ko citu, nesakritība ir ģenerēšanā, nevis sasniedzamībā. Salīdziniet adapteru sarakstu un arī adreses, jo trūkstošs adapters izskaidro trūkstošu serveri. Šī atšķirība izšķir, vai labojat WSL vai ugunsmūri, un abiem nav nekā kopīga.
Izslēdziet ģenerēšanu un ierakstiet savu failu
Viens dokumentēts iestatījums neļauj WSL pārrakstīt failu, un tas atrodas /etc/wsl.conf. Pievienojiet šim failam tīkla sadaļu:
[network]
generateResolvConf = false
Pēc tam pārtrauciet distribūciju no Windows ar wsl --shutdown un palaidiet to vēlreiz. Ja ceļš ir simboliskā saite, nevis parasts fails, pirms sava satura rakstīšanas noņemiet saiti, jo rakstīšana caur saiti nākamajā startā var izveidot ģenerēto mērķi no jauna. No tā brīža fails ir jūsu, un nekas to nepārraksta.
nameserver 172.28.4.10
nameserver 172.28.4.11
search site.corp.example
options timeout:1 attempts:2 rotate
Bez meklēšanas domēna nekvalificēts resursdatora nosaukums tiek papildināts ar publisko sakni un atgriežas kā tāda domēna nav. timeout neļauj mirušam pirmajam serverim kavēt katru meklēšanu, attempts ierobežo, cik mēģinājumu meklēšana iztērē, un rotate izkliedē atkārtotos mēģinājumus, nevis vienmēr sāk no augšas. Darījums ir tāds, ka fails vairs neseko VPN, kura risinātāja adrese mainās starp sesijām.
Tiekiet galā ar kustīgu risinātāju, pēc tam pārbaudiet
Daži klienti izsniedz sesijai raksturīgu risinātāju, tāpēc statisks fails salūzt nākamajā savienojumā. Divas pieejas ir attaisnojamas. Rakstiet failu no maza skripta ikreiz, kad adrese mainās, vai atstājiet ģenerēšanu ieslēgtu un pārliecinieties, ka adapteris, no kura WSL kopē, satur uzņēmuma serveri. Otrajam nav vajadzīgs āķis, un tas neizdodas ikreiz, kad ģenerēšana izlaiž VPN adapteri; abiem joprojām vispirms jāatrisina IPv6 konflikts.
Windows piemēro arī savas nosaukumu politikas, piemēram, sufiksu meklēšanas sarakstu vai atrisināšanas politiku konkrētiem domēniem, un adapteru adrešu kopēšana šos noteikumus neatveido. Ja nosaukums tiek atrisināts Windows vidē, bet ne distribūcijā ar to pašu serveri, pirms tuneļa vainošanas salīdziniet sufiksu apstrādi.
Pārbaudiet ar nosaukumu, nevis paketi: getent hosts sensor-access0.corp.example iet caur risinātāja steku, kamēr ping var izdoties pret kešatmiņā saglabātu vai burtisku adresi. Pēc tam atkārtojiet pēc atvienošanas un atkārtotas pievienošanas, jo iestatījums, kas darbojas vienreiz un tiek no jauna ģenerēts, atsākot darbu, nekad nav ticis salabots. Saglabājiet iepriekšējo saturu un atzīmējiet, kura komponente šajā mašīnā pārvalda ceļu, lai nākamā izmaiņa sāktos ar pierādījumiem.