Mengapa WSL kehilangan nama hos kerja apabila VPN disambungkan?
Nama yang sama berfungsi dalam Windows dan gagal dalam WSL sebaik sahaja terowong naik. Semak mod DNS platform dan pengatasan lama sebelum menambah penyelesai.
Windows menyelesaikan hos dalaman tanpa sebarang aduan, dan nama yang sama gagal dalam WSL pada saat terowong naik. Pembaikan biasa ialah menulis penyelesai awam ke dalam pengedaran, yang memulihkan pelayaran biasa dan menjadikan nama hos kerja tidak dapat diselesaikan. Itu menukar satu kegagalan dengan kegagalan lain, dan menyembunyikan lapisan yang sebenarnya rosak. Sebelum menambah atau membuang mana-mana baris penyelesai, tentukan lapisan mana antara tiga yang gagal.
Singkirkan dahulu kegagalan penghalaan
Tanya nama yang sama sepenuhnya layak pada kedua-dua belah, bukan dua nama yang kelihatan serupa. Kejayaan dalam Windows dan kegagalan dalam WSL untuk rentetan yang sama ialah tandatangan dua laluan penyelesaian, dan sedikit perkara lain menghasilkan corak itu dengan begitu bersih. Jika WSL juga tidak dapat mencapai perkhidmatan pada alamat berangkanya yang diketahui, masalah penghalaan atau penapisan juga wujud. Dalam kes itu kerja DNS tidak akan mendedahkannya, dan petang itu pergi ke lapisan yang salah.
Tiga gejala meliputi kebanyakan kes ini, dan setiap satu menunjuk ke tempat yang berbeza. Baca baris yang sepadan sebelum membuka fail konfigurasi:
| 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 |
Baris tengah ialah yang orang salah baca, kerana perubahan yang merosakkannya dibuat beberapa minggu lebih awal dan kelihatan berjaya pada masa itu. Baris ketiga ialah yang orang salah diagnosis, kerana nama yang diselesaikan terasa seperti bukti bahawa rangkaian sihat. Kedua-dua baris menghantar anda ke bahagian yang berbeza di bawah.
Terowong DNS mempunyai had versi minimum
Microsoft mendokumenkan mod rangkaian WSL yang menerowongkan permintaan DNS ke penyelesai Windows melalui saluran virtualisasi. Pada binaan Windows 11 yang disokong ia diaktifkan secara lalai, sebab itulah dua mesin pada rangkaian korporat yang sama berkelakuan berbeza. Pemboleh ubahnya ialah nombor binaan, bukan dasar korporat.
Panduan rangkaian WSL menerangkan mod itu dan versi yang menyokongnya. Ciri ini penting kerana dasar DNS korporat biasanya tinggal dalam penyelesai Windows, dan pengedaran yang mewarisi laluan Windows mewarisi dasar itu juga. Pengedaran yang bertanya kepada penyelesai awam tidak mempunyai laluan ke nama peribadi, sesuci mana pun konfigurasinya sendiri kelihatan. Mekanisme itulah yang menerangkan seluruh gejala, dan menerangkan mengapa penyelesaian penyelesai awam gagal.
Baca binaan sebelum mengubah apa-apa. Tetapan yang disalin daripada pemasangan yang lebih baharu bukan bukti bahawa pemasangan lebih lama melaksanakannya. Catat nombor binaan di sebelah perubahan, kerana perbezaan antara dua mesin hampir selalu versi, bukan dasar.
Pengatasan lama hidup lebih lama daripada masalah yang diselesaikannya
Resipi lama melumpuhkan fail penyelesai yang dijana, mengekod keras pelayan nama atau mengunci fail dengan atribut tidak berubah. Perubahan itu kekal di tempatnya lama selepas masalah sambungan yang mencetuskannya hilang, dan biasanya itulah sebabnya tetapan yang lebih baharu kelihatan tidak melakukan apa-apa. Ia juga bertahan selepas pemasangan semula pengedaran dalam bentuk profil shell yang menulis semula fail pada setiap log masuk. Yang terakhir paling sukar ditemui, kerana ia tidak kelihatan daripada fail yang semua orang periksa.
Cari fail penyelesai yang ditulis tangan, atribut tidak berubah padanya, dan skrip permulaan yang menulis semula fail itu. Semak bendera tidak berubah sebelum menyunting, kerana penulisan ke fail yang dikunci gagal dengan cara yang terbaca seperti masalah kebenaran. Selepas itu semak profil shell, kerana skrip di situ memulihkan kandungan lama dalam beberapa saat selepas pembaikan anda.
Membuang pengatasan mempunyai akibat, jadi catat apa yang anda buang dan mengapa. Pengedaran yang benar-benar memerlukan penyelesai statik untuk tujuan lain akan rosak apabila fail yang dijana kembali.
Dua fail, dua peranan berbeza
Kedua-dua fail konfigurasi tinggal di tempat berbeza dan mengawal perkara berbeza, dan mengelirukannya menghasilkan suntingan yang dikenakan pada lapisan yang salah. Fail di sebelah Windows menetapkan sifat mesin maya, manakala fail di sebelah pengedaran menetapkan bagaimana pengedaran itu membina konfigurasi penyelesainya sendiri. Tiada satu mengatasi yang lain, sebab itu kedua-duanya mesti bersetuju.
Bagi pemasangan yang menyokong ciri itu, serpihan di sebelah Windows adalah pendek. Itulah seluruh perubahan di sebelah itu:
[wsl2]
dnsTunneling=trueSerpihan itu tergolong dalam profil pengguna Windows dan terpakai kepada mesin maya, bukan kepada satu pengedaran. Penerowongan juga memerlukan pengedaran tidak melumpuhkan penjanaan penyelesai, jadi fail di sebelah pengedaran mesti membiarkan tingkah laku itu. Tukar satu tanpa yang lain dan mod itu secara senyap tidak melakukan apa-apa, dan itulah cara paling biasa pembaikan ini dilaporkan sebagai rosak. Semak kedua-dua fail dalam sesi yang sama, kerana dua suntingan yang dibuat berasingan beberapa minggu ialah dua suntingan yang tiada siapa dapat mengaitkan.
Mulakan semula, kemudian tanya dari kedua-dua belah
Tetapan ini dibaca apabila persekitaran bermula, jadi shell baharu dalam pengedaran yang sedang berjalan tidak akan memuat semulanya. Matikan persekitaran dan bukan memulakan semula shell, dan simpan dahulu apa-apa kerja yang sedang berjalan kerana setiap pengedaran berhenti bersamanya. Kelalaian itu sahaja menerangkan kebanyakan laporan bahawa sesuatu perubahan tiada kesan.
Kemudian tanya soalan yang sama dari kedua-dua belah. Output juga menunjukkan penyelesai mana yang akhirnya digunakan oleh pengedaran:
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'Perintah pertama menamatkan persekitaran, yang kedua menunjukkan penyelesai mana yang digunakan oleh pengedaran sekarang, dan dua yang terakhir mengemukakan soalan yang sama kepada setiap belah. Bandingkan jawapannya, bukan status tetapan. Pertanyaan yang masih gagal selepas permulaan semula bersih dengan kedua-dua fail betul menunjuk kepada dasar penyelesai korporat, dan perbualan itu mempunyai pemilik lain.