Melayari dalam distribusi berfungsi, dan nama hos dalaman pertama gagal pada saat terowong naik. Refleksnya ialah menambah penyelesai awam, yang memulihkan internet dan menjadikan nama korporat tidak tercapai sepanjang hari. Dalam WSL 2, /etc/resolv.conf ialah output yang dijana dan bukan konfigurasi, dan mekanisme itulah yang wajar difahami. Pembaikannya bukan penyelesai yang lebih baik, tetapi pemilikan fail.

Fail dijana, bukan dikonfigurasi

WSL 2 menulis fail semasa permulaan daripada penyesuai Windows yang dilihatnya pada saat itu, dan mencetak komen di atas yang menyatakannya. Apabila klien VPN menambah atau menulis semula penyesuai selepas itu, distribusi tidak semestinya menjana semula apa-apa, dan fail terus menerangkan rangkaian yang tidak lagi wujud.

Mod kegagalan kedua lebih senyap: WSL mungkin menyalin pelayan hanya daripada sesetengah penyesuai. Jika penyesuai fizikal sudah mempunyai penyelesai IPv6, pelayan IPv4 yang dibekalkan penyesuai VPN boleh digugurkan dan bukannya ditambah, dan fail kelihatan lengkap sambil tepat meninggalkan yang menjawab nama dalaman.

Bandingkan pandangan Windows dengan pandangan Linux

Baca kedua-dua belah sebelum menyunting. Dalam distribusi, lihat kandungan fail dan sama ada ia fail biasa atau pautan. Pada Windows, senaraikan penyelesai bagi setiap penyesuai, termasuk yang dicipta VPN:

ls -l /etc/resolv.conf
cat /etc/resolv.conf
Get-DnsClientServerAddress -AddressFamily IPv4
Get-NetAdapter | Where-Object Status -eq 'Up'

Apabila penyesuai VPN menunjukkan pelayan korporat dan Linux menunjukkan sesuatu yang lain, percanggahannya dalam penjanaan dan bukan dalam ketercapaian. Bandingkan senarai penyesuai serta alamat, kerana penyesuai yang hilang menjelaskan pelayan yang hilang. Perbezaan itulah yang menentukan sama ada anda membaiki WSL atau firewall, dan kedua-duanya tidak mempunyai persamaan.

Matikan penjanaan dan tulis fail anda sendiri

Satu tetapan terdokumentasi menghalang WSL daripada menulis semula fail, dan ia terletak dalam /etc/wsl.conf. Tambah bahagian rangkaian pada fail itu:

[network]
generateResolvConf = false

Kemudian tamatkan distribusi dari Windows dengan wsl --shutdown dan mulakannya semula. Jika laluan itu pautan simbolik dan bukan fail biasa, buang pautan sebelum menulis kandungan anda sendiri, kerana menulis melalui pautan boleh mencipta semula sasaran yang dijana pada permulaan seterusnya. Dari saat itu fail itu milik anda dan tiada apa menulis semulanya.

nameserver 172.28.4.10
nameserver 172.28.4.11
search site.corp.example
options timeout:1 attempts:2 rotate

Tanpa domain carian, nama hos tidak layak dilengkapkan dengan akar awam dan kembali sebagai tiada domain sebegitu. timeout menghalang pelayan pertama yang mati daripada menyekat setiap carian, attempts mengehadkan berapa cubaan yang dibelanjakan satu carian, dan rotate menyebarkan cubaan semula dan bukannya sentiasa bermula dari atas. Tukar gantinya ialah fail itu tidak lagi mengikut VPN yang alamat penyelesainya berubah antara sesi.

Kendalikan penyelesai yang berubah, kemudian sahkan

Sesetengah klien memberikan penyelesai khusus sesi, jadi fail statik pecah pada sambungan berikutnya. Dua pendekatan boleh dipertahankan. Tulis fail daripada skrip kecil setiap kali alamat berubah, atau biarkan penjanaan hidup dan pastikan penyesuai yang disalin WSL membawa pelayan korporat. Yang kedua tidak memerlukan cangkuk dan gagal setiap kali penjanaan melangkau penyesuai VPN; kedua-duanya masih memerlukan konflik IPv6 diselesaikan dahulu.

Windows juga menggunakan dasar nama sendiri, seperti senarai carian akhiran atau dasar penyelesaian untuk domain tertentu, dan menyalin alamat penyesuai tidak menghasilkan semula peraturan itu. Jika sesuatu nama diselesaikan pada Windows tetapi tidak dalam distribusi dengan pelayan yang sama, bandingkan pengendalian akhiran sebelum menyalahkan terowong.

Uji dengan nama dan bukan dengan paket: getent hosts sensor-access0.corp.example melalui timbunan penyelesai, manakala ping mungkin berjaya terhadap alamat yang dicache atau literal. Kemudian ulangi selepas memutuskan dan menyambung semula, kerana tetapan yang berfungsi sekali dan dijana semula apabila disambung semula tidak pernah dibaiki. Simpan kandungan sebelumnya dan catat komponen mana yang memiliki laluan pada mesin itu, supaya perubahan seterusnya bermula dengan bukti.

Artikel berkaitan