WSL2 yn colli DNS ar ôl i’r VPN gysylltu? Dau achos
Mae ffeil resolver hen a metrig llwybr cystadleuol yn cynhyrchu’r un symptom y tu mewn i WSL2. Cofnodwch y ddwy ochr, yna trwsiwch yr un sydd wir yn ddiffygiol.
Mae ping drwy gyfeiriad yn gweithio y tu mewn i’r dosbarthiad, nid yw gosodiadau pecynnau na thynnu git, a daeth y methiant i’r golwg yn syth ar ôl i’r twnnel godi. Dim ond enwau a beidiodd â datrys, sy’n awgrymu DNS yn hytrach na chysylltedd. Ailosod pecynnau yw’r cam cyntaf anghywir mwyaf poblogaidd yma. Mae gan WSL2 ddwy ffordd annibynnol o greu’r union symptom hwnnw, ac mae angen trwsio gwahanol ar y ddwy.
Pam mae’r dosbarthiad yn cadw ei resolver ei hun
Ni ddefnyddir cleient DNS Windows y tu mewn i’r dosbarthiad. Mae WSL2 yn adeiladu ei ffeil resolver ei hun wrth gychwyn, yn pwyntio at gyfeiriad stub y mae Windows yn ei gyhoeddi ar y newidydd rhithwir ar gyfer y peiriant rhithwir cynorthwyol.
Mae’r trefniant hwnnw’n sefydlog ar draws newidiadau rhwydwaith cyffredin oherwydd fe’i hysgrifennir unwaith ac fe’i hailddefnyddir. Mae’r trefniant yn peidio â bod yn gywir pan fydd cleient twnnel yn ailysgrifennu rhestr addaswyr y gwesteiwr ar ôl i’r peiriant rhithwir cynorthwyol ddechrau’n barod.
Nid oes dim o fewn y dosbarthiad yn gwylio’r newid, felly mae’r ffeil yn parhau i bwyntio at gyfeiriad na fydd efallai ar y llwybr mwyach. Yna mae’r chwiliad nesaf yn aros, yn dod i ben, neu’n cael ateb gan weinydd nad yw erioed wedi clywed am y parth mewnol. O’r tu mewn, mae’r resolver yn syml yn stopio ateb, ac mae pob enw yn methu ar unwaith.
Casglwch dystiolaeth ar y ddwy ochr yn gyntaf
Cofnodwch yr hyn mae’r dosbarthiad yn ei weld, yna’r hyn mae Windows yn ei weld, cyn newid y naill na’r llall. Mae’r ddwy olwg gyda’i gilydd yn gwahaniaethu’r moddau methu.
Y tu mewn i’r dosbarthiad, printiwch y ffeil resolver, y tabl llwybro ac un chwiliad mewnol ac un cyhoeddus:
ip -4 route
cat /etc/resolv.conf
getent hosts intranet.corp.example
getent hosts example.comAr Windows, rhestrwch y gweinyddwyr DNS fesul addasydd a’r tabl IPv4 gyda metrigau. Mae cleient VPN fel rheol yn gosod llwybr ar gyfer isrwyd WSL2, a’i fetrig sy’n penderfynu a yw’r traffig hwnnw’n gadael drwy’r twnnel neu’n aros yn lleol.
Get-NetAdapter | Get-DnsClientServerAddress
route print -4
Metrig llwybr neu ffeil hen
Y methiant cyntaf yw’r ffeil hen. Ysgrifennwyd y resolver ar gyfer cyflwr yr addasydd wrth gychwyn, a newidiodd y twnnel y cyflwr hwnnw. Efallai nad yw ei gyfeiriad stub bellach yn gyrraeddadwy, neu mae’n enwi gweinydd nad yw’n gwybod dim am y parth mewnol.
Yr ail yw problem llwybro. Pan fydd y VPN yn ychwanegu llwybr sy’n gorchuddio isrwyd WSL2 â metrig is na llwybr cyswllt y gwesteiwr, mae pecynnau a gyfeiriwyd at y peiriant rhithwir cynorthwyol yn mynd i’r twnnel. Yna daw pob gwasanaeth WSL2 i ben, nid DNS yn unig.
Mae’r prawf gwahaniaethol yn costio un llinell. Os yw cyfeiriad rhifiadol fel resolver cyhoeddus yn dal i ateb ping tra bod enwau’n methu, mae’r llwybr yn gyfan a DNS yw’r broblem. Dyma’r achos lle mae newid resolver yn gyfiawn, ac mae’r achos lle nad yw hefyd yn dod yn amlwg. Os yw’r prawf rhifiadol hefyd yn methu, mae’r peiriant rhithwir cynorthwyol wedi colli ei lwybr ac ni fydd unrhyw ffeil resolver yn trwsio hynny.
Ar gyfer achos llwybro, rhowch y gorau i’r metrig awtomatig ar addasydd y twnnel a rhowch rif uwchben llwybr cyswllt WSL2 iddo:
Get-NetAdapter | Where-Object InterfaceDescription -Match VPN | Set-NetIPInterface -InterfaceMetric 5500
wsl.exe --shutdown
Mae’r diffodd yn bwysig. Nid yw newid y metrig yn ailysgrifennu’r peiriant rhithwir cynorthwyol sy’n rhedeg, felly rhaid ailadeiladu’r dosbarthiad cyn i’r newid fod yn weladwy.
Cymerwch y ffeil drosodd, yn fwriadol
Os yw llwybro’n gywir a dim ond enwau mewnol yn methu, y resolver sydd ar fai ac fe allwch stopio’r generadur. Newid bwriadol yw hwn gyda chost cynnal, nid datrysiad dros dro i’w osod yn ddi-hid.
Crëwch /etc/wsl.conf y tu mewn i’r dosbarthiad gyda’r adran rhwydwaith sy’n analluogi cynhyrchu, yna ysgrifennwch y ffeil resolver eich hun, gweinydd corfforaethol yn gyntaf ac un cyhoeddus wrth gefn yn ail:
[network]
generateResolvConf = falsesearch corp.example
nameserver 10.88.4.53
nameserver 9.9.9.9
Mae trefn yn bwysig. Ni all resolver cyhoeddus ateb enw mewnol, ac mae’r un wrth gefn yn bodoli ar gyfer chwiliadau rhyngrwyd yn unig. Unwaith y bydd y ffeil yn un i chi, nid oes dim yn ei hailsilnu, felly mae resolver corfforaethol sy’n symud yn dod yn ddiffodd y mae’n rhaid i chi sylwi arno eich hun.
Gwiriwch enwau, yna pecynnau
Gwiriwch un enw mewnol ac un cyhoeddus gyda resolver y system, yna ailadroddwch y weithred a fethodd. Mae rheolwyr pecynnau weithiau’n defnyddio resolver eu hunain, a dyna pam y gall getent sy’n gweithio gydfodoli â gosodiad diffygiol.
Os ydych yn awtomeiddio’r ailysgrifennu, gwnewch ef yn idempotent: heb dwnnel, cadwch y ffeil sydd eisoes yn bodoli yn lle ysgrifennu rhestr gweinyddwyr wag.
getent hosts intranet.corp.example
resolvectl status | head -20
getent hosts example.com
Mae chwiliad mewnol sy’n gweithio a chwiliad cyhoeddus sy’n gweithio, o’r tu mewn i’r dosbarthiad, yn ganlyniad sydd werth ei gofnodi. Nid yw eicon VPN gwyrdd ar y gwesteiwr yn profi’r naill na’r llall.