Дистрибутивдин ичинде сүзүү иштейт, ал эми туннель көтөрүлгөн учурда биринчи ички хост аты ишке ашпайт. Рефлекс — коомдук резолвер кошуу, ал интернетти кайтарат жана корпоративдик атты күндүн калганында жеткиликсиз кылат. 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 кэштелет же сөзмө-сөз дарекке каршы ийгиликтүү болушу мүмкүн. Анан ажыратып, кайра туташкандан кийин кайталаңыз, анткени бир жолу иштеп, уланганда кайра түзүлгөн жөндөө эч качан оңдолгон эмес. Мурунку мазмунду сактап, ошол машинада жолду кайсы компонент ээлегенин белгилеп коюңуз, кийинки өзгөртүү далил менен башталсын.

Тектеш макалалар