WSL 2 da resolv.conf: VPN ulanganda DNS ishlamay qoladi
WSL o‘zi ko‘radigan Windows adapterlaridan resolv.conf ni qayta yaratadi, shu sababli VPN resolveri hech qachon yetib kelmasligi mumkin. Yaratishni to‘xtating, so‘ng korporativ nomni sinab ko‘ring.
Distributiv ichida ko‘rish ishlaydi, tunnel ko‘tarilgan paytda birinchi ichki xost nomi muvaffaqiyatsiz bo‘ladi. Refleks — ommaviy resolver qo‘shish, bu internetni qaytaradi va korporativ nomni kunning qolgan qismida yetib bo‘lmaydigan qiladi. WSL 2 da /etc/resolv.conf konfiguratsiya emas, yaratilgan chiqish, va tushunishga arziydigan mexanizm aynan shu. Tuzatish yaxshiroq resolver emas, faylga egalikdir.
Fayl yaratiladi, konfiguratsiya qilinmaydi
WSL 2 faylni ishga tushish paytida o‘sha damda ko‘radigan Windows adapterlaridan yozadi va yuqorida buni aytadigan izohni chop etadi. Keyin VPN mijozi adapter qo‘shganda yoki qayta yozganda, distributiv albatta biror narsani qayta yaratmaydi, va fayl endi mavjud bo‘lmagan tarmoqni tasvirlashda davom etadi.
Ikkinchi nosozlik usuli jimroq: WSL serverlarni faqat ba’zi adapterlardan nusxalashi mumkin. Agar jismoniy adapterda allaqachon IPv6 resolveri bo‘lsa, VPN adapteri taqdim etadigan IPv4 serverlari qo‘shilish o‘rniga tashlab yuborilishi mumkin, va fayl to‘liq ko‘rinadi, ammo ichki nomlarga javob beradigan serverning o‘zini tashlab ketadi.
Windows ko‘rinishini Linux ko‘rinishi bilan solishtiring
Tahrirlashdan oldin ikkala tomonni o‘qing. Distributiv ichida faylda nima borligini va u oddiy faylmi yoki havolami ko‘ring. Windowsda har bir adapterning resolverini sanang, VPN yaratgan adapterni ham qo‘shib:
ls -l /etc/resolv.conf
cat /etc/resolv.conf
Get-DnsClientServerAddress -AddressFamily IPv4
Get-NetAdapter | Where-Object Status -eq 'Up'
VPN adapteri korporativ serverlarni ko‘rsatib, Linux boshqa narsani ko‘rsatsa, kelishmovchilik yetib borishda emas, yaratishda. Adapterlar ro‘yxatini ham, manzillarni ham solishtiring, chunki yo‘q adapter yo‘q serverni izohlaydi. Bu farq WSLni yoki xavfsizlik devorini tuzatayotganingizni hal qiladi, va ikkalasining umumiy hech narsasi yo‘q.
Yaratishni o‘chiring va o‘z faylingizni yozing
WSLning faylni qayta yozishini to‘xtatadigan bitta hujjatlashtirilgan sozlama bor va u /etc/wsl.conf ichida. O‘sha faylga tarmoq bo‘limini qo‘shing:
[network]
generateResolvConf = false
So‘ng distributivni Windowsdan wsl --shutdown bilan to‘xtatib, qayta ishga tushiring. Agar yo‘l oddiy fayl emas, ramziy havola bo‘lsa, o‘z mazmuningizni yozishdan oldin havolani olib tashlang, chunki havola orqali yozish keyingi ishga tushishda yaratilgan maqsadni qayta yaratishi mumkin. O‘sha paytdan fayl sizniki va uni hech narsa qayta yozmaydi.
nameserver 172.28.4.10
nameserver 172.28.4.11
search site.corp.example
options timeout:1 attempts:2 rotate
Qidiruv domeni bo‘lmasa, to‘liq bo‘lmagan xost nomi ommaviy ildiz bilan to‘ldiriladi va bunday domen yo‘q degan javob bilan qaytadi. timeout o‘lik birinchi serverni har bir so‘rovni bloklashdan saqlaydi, attempts bitta so‘rov qancha urinish sarflashini cheklaydi, rotate esa qayta urinishlarni har doim yuqoridan boshlash o‘rniga taqsimlaydi. Savdo — fayl endi resolver manzili sessiyalar orasida o‘zgaradigan VPNga ergashmaydi.
Ko‘chib yuruvchi resolver bilan shug‘ullaning, so‘ng tekshiring
Ba’zi mijozlar sessiyaga xos resolver beradi, shuning uchun statik fayl keyingi ulanishda buziladi. Ikki yondashuv himoyalanishi mumkin. Manzil o‘zgarganda faylni kichik skriptdan yozing, yoki yaratishni yoqib qo‘yib, WSL nusxa oladigan adapter korporativ serverni olib yurishiga ishonch hosil qiling. Ikkinchisi ilgak talab qilmaydi va yaratish VPN adapterini chetlab o‘tganda muvaffaqiyatsiz bo‘ladi; ikkalasi ham avval IPv6 ziddiyatini hal qilishni talab qiladi.
Windows o‘zining nom siyosatlarini ham qo‘llaydi, masalan qo‘shimcha qidiruv ro‘yxati yoki ayrim domenlar uchun yechish siyosati, va adapter manzillarini nusxalash bu qoidalarni qayta yaratmaydi. Agar nom Windowsda yechilib, distributivda o‘sha server bilan yechilmasa, tunnelni ayblashdan oldin qo‘shimchalarning ishlanishini solishtiring.
Paket bilan emas, nom bilan sinang: getent hosts sensor-access0.corp.example resolver stekidan o‘tadi, ping esa keshlangan yoki so‘zma-so‘z manzilga qarshi muvaffaqiyatli bo‘lishi mumkin. So‘ng ulanishni uzib, qayta ulangandan keyin takrorlang, chunki bir marta ishlab, davom etilganda qayta yaratiladigan sozlama hech qachon tuzatilmagan. Avvalgi mazmunni saqlang va o‘sha mashinada yo‘l qaysi komponentga tegishli ekanini yozib qo‘ying, keyingi o‘zgarish dalildan boshlansin.