Дистрибутив ішінде шолу жұмыс істейді, ал туннель көтерілген сәтте бірінші ішкі хост атауы сәтсіз болады. Рефлекс — жария резолвер қосу, ол интернетті қайтарады және корпоративтік атауды күннің қалғанында қолжетімсіз етеді. WSL 2-де /etc/resolv.conf конфигурация емес, жасалған шығыс, және түсінуге тұрарлық механизм осы. Түзету — жақсырақ резолвер емес, файлға иелік ету.

Файл жасалады, конфигурацияланбайды

WSL 2 файлды іске қосылу кезінде сол сәтте көретін Windows адаптерлерінен жазады және жоғарыда соны айтатын түсініктеме шығарады. Кейін VPN клиенті адаптерді қосқанда немесе қайта жазғанда, дистрибутив міндетті түрде бірдеңені қайта жасамайды, және файл енді жоқ желіні сипаттай береді.

Сәтсіздіктің екінші режимі тынышырақ: WSL серверлерді тек кейбір адаптерлерден көшіруі мүмкін. Егер физикалық адаптерде әлдеқашан IPv6 резолвері болса, VPN адаптері ұсынатын IPv4 серверлері қосылудың орнына тасталуы мүмкін, және файл толық көрінеді, бірақ дәл ішкі атауларға жауап беретін серверді жіберіп алады.

Windows көрінісін Linux көрінісімен салыстырыңыз

Өңдеуден бұрын екі жағын оқыңыз. Дистрибутив ішінде файлда не бар екенін және оның қарапайым файл немесе сілтеме екенін қараңыз. Windows-та әр адаптердің резолверін тізімдеңіз, VPN жасаған адаптерді қоса:

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

VPN адаптері корпоративтік серверлерді көрсетіп, Linux басқа нәрсе көрсетсе, келіспеушілік қолжетімділікте емес, жасауда. Адаптерлер тізімін де, мекенжайларды да салыстырыңыз, өйткені жоқ адаптер жоқ серверді түсіндіреді. Бұл айырмашылық WSL-ды немесе брандмауэрді жөндеп жатқаныңызды шешеді, ал екеуінің ортақ ештеңесі жоқ.

Жасауды өшіріп, өз файлыңызды жазыңыз

Бір құжатталған параметр WSL-ға файлды қайта жазуды тоқтатады, ол /etc/wsl.conf ішінде. Сол файлға желі бөлімін қосыңыз:

[network]
generateResolvConf = false

Содан кейін дистрибутивті Windows-тан wsl --shutdown арқылы тоқтатып, қайта іске қосыңыз. Егер жол қарапайым файл емес, символдық сілтеме болса, өз мазмұныңызды жазбас бұрын сілтемені жойыңыз, өйткені сілтеме арқылы жазу келесі іске қосылуда жасалған мақсатты қайта жасауы мүмкін. Сол сәттен бастап файл сіздікі және оны ештеңе қайта жазбайды.

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

Іздеу домені жоқ болса, толық емес хост атауы жария түбірмен толықтырылып, мұндай домен жоқ деген жауаппен оралады. timeout өлі бірінші сервердің әр іздеуді бұғаттауын болдырмайды, attempts бір іздеудің қанша әрекет жұмсайтынын шектейді, ал rotate қайта әрекеттерді әрдайым жоғарыдан бастаудың орнына таратады. Айырбас — файл енді резолвер мекенжайы сессиялар арасында өзгеретін VPN-ға бағынбайды.

Жылжымалы резолвермен айналысып, кейін тексеріңіз

Кейбір клиенттер сессияға тән резолвер береді, сондықтан статикалық файл келесі қосылымда сынады. Екі тәсіл қорғауға тұрарлық. Мекенжай өзгерген сайын файлды шағын скрипттен жазыңыз, немесе жасауды қосып, WSL көшіретін адаптердің корпоративтік серверді алып жүргеніне көз жеткізіңіз. Екіншісі ілгек қажет етпейді және жасау VPN адаптерін өткізіп жіберген сайын сәтсіз болады; екеуі де алдымен IPv6 қақтығысын шешуді талап етеді.

Windows өзінің атау саясаттарын да қолданады, мысалы жұрнақ іздеу тізімі немесе белгілі бір домендер үшін шешу саясаты, және адаптер мекенжайларын көшіру бұл ережелерді қайта шығармайды. Егер атау Windows-та шешіліп, дистрибутивте сол сервермен шешілмесе, туннельді кінәлаудан бұрын жұрнақтардың өңделуін салыстырыңыз.

Пакетпен емес, атаумен тексеріңіз: getent hosts sensor-access0.corp.example резолвер стекінен өтеді, ал ping кэштелген немесе тура мекенжайға қарсы сәтті болуы мүмкін. Содан кейін ажыратып, қайта қосқаннан кейін қайталаңыз, өйткені бір рет жұмыс істеп, жалғастырғанда қайта жасалатын параметр ешқашан түзетілмеген. Алдыңғы мазмұнды сақтап, сол машинада жолды қай компонент иеленетінін белгілеп қойыңыз, сонда келесі өзгеріс дәлелмен басталады.

Қатысты мақалалар