resolv.conf di WSL 2: DNS mati saat VPN tersambung
WSL membuat ulang resolv.conf dari adaptor Windows yang terlihat, jadi resolver VPN bisa tidak pernah tiba. Hentikan pembuatan berkas, lalu uji nama korporat.
Menjelajah di dalam distribusi berfungsi, dan nama host internal pertama gagal begitu terowongan naik. Refleksnya adalah menambahkan resolver publik, yang memulihkan internet dan membuat nama korporat tidak terjangkau selama sisa hari. Di WSL 2, /etc/resolv.conf adalah keluaran yang dibuat, bukan konfigurasi, dan mekanisme itulah yang layak dipahami. Perbaikannya bukan resolver yang lebih baik, melainkan kepemilikan atas berkas.
Berkas dibuat, bukan dikonfigurasi
WSL 2 menulis berkas saat mulai dari adaptor Windows yang terlihat saat itu, dan mencetak komentar di atasnya yang menyatakan hal itu. Ketika klien VPN menambahkan atau menulis ulang adaptor sesudahnya, distribusi tidak selalu membuat ulang apa pun, dan berkas tetap menggambarkan jaringan yang sudah tidak ada.
Mode kegagalan kedua lebih senyap: WSL mungkin hanya menyalin server dari sebagian adaptor. Jika adaptor fisik sudah punya resolver IPv6, server IPv4 yang disediakan adaptor VPN bisa dibuang alih-alih ditambahkan, dan berkas tampak lengkap sambil justru menghilangkan yang menjawab nama internal.
Bandingkan tampilan Windows dengan tampilan Linux
Baca kedua sisi sebelum menyunting. Di dalam distribusi, lihat isi berkas dan apakah itu berkas biasa atau tautan. Di Windows, daftarkan resolver untuk setiap adaptor, termasuk yang dibuat VPN:
ls -l /etc/resolv.conf
cat /etc/resolv.conf
Get-DnsClientServerAddress -AddressFamily IPv4
Get-NetAdapter | Where-Object Status -eq 'Up'
Ketika adaptor VPN menampilkan server korporat dan Linux menampilkan hal lain, ketidaksepakatannya ada pada pembuatan, bukan keterjangkauan. Bandingkan daftar adaptor sekaligus alamatnya, karena adaptor yang hilang menjelaskan server yang hilang. Perbedaan itulah yang menentukan apakah Anda memperbaiki WSL atau firewall, dan keduanya tidak punya kesamaan.
Matikan pembuatan dan tulis berkas Anda sendiri
Satu pengaturan terdokumentasi menghentikan WSL menulis ulang berkas, dan letaknya di /etc/wsl.conf. Tambahkan bagian jaringan ke berkas itu:
[network]
generateResolvConf = false
Lalu hentikan distribusi dari Windows dengan wsl --shutdown dan jalankan lagi. Jika jalurnya tautan simbolik dan bukan berkas biasa, hapus tautannya sebelum menulis isi Anda sendiri, karena menulis melalui tautan dapat membuat ulang target yang dibuat pada start berikutnya. Sejak saat itu berkas itu milik Anda dan tidak ada yang menulis ulang.
nameserver 172.28.4.10
nameserver 172.28.4.11
search site.corp.example
options timeout:1 attempts:2 rotate
Tanpa domain pencarian, nama host tak berkualifikasi dilengkapi dengan akar publik dan kembali sebagai tidak ada domain semacam itu. timeout mencegah server pertama yang mati menyumbat setiap pencarian, attempts membatasi berapa percobaan yang dihabiskan satu pencarian, dan rotate menyebar percobaan ulang alih-alih selalu mulai dari atas. Tukarannya, berkas tidak lagi mengikuti VPN yang alamat resolver-nya berubah antar sesi.
Tangani resolver yang berpindah, lalu verifikasi
Sebagian klien memberikan resolver khusus sesi, sehingga berkas statis rusak pada koneksi berikutnya. Dua pendekatan bisa dipertahankan. Tulis berkas dari skrip kecil setiap kali alamat berubah, atau biarkan pembuatan aktif dan pastikan adaptor yang disalin WSL membawa server korporat. Yang kedua tidak butuh kait dan gagal setiap kali pembuatan melewati adaptor VPN; keduanya tetap menuntut konflik IPv6 diselesaikan lebih dulu.
Windows juga menerapkan kebijakan nama sendiri, seperti daftar pencarian sufiks atau kebijakan resolusi untuk domain tertentu, dan menyalin alamat adaptor tidak mereproduksi aturan itu. Jika sebuah nama teresolusi di Windows dan tidak di distribusi dengan server yang sama, bandingkan penanganan sufiks sebelum menyalahkan terowongan.
Uji dengan nama, bukan paket: getent hosts sensor-access0.corp.example melewati tumpukan resolver, sedangkan ping bisa berhasil terhadap alamat tersimpan atau literal. Lalu ulangi setelah memutus dan menyambung kembali, karena pengaturan yang berhasil sekali dan dibuat ulang saat melanjutkan tidak pernah diperbaiki. Simpan isi sebelumnya dan catat komponen mana yang memiliki jalur di mesin itu, agar perubahan berikutnya dimulai dengan bukti.