Прелистувањето внатре во дистрибуцијата работи, а првото внатрешно име на домаќин паѓа во моментот кога тунелот се крева. Рефлексот е да се додаде јавен резолвер, што го враќа интернетот и го прави корпоративното име недостапно до крајот на денот. Во WSL 2, /etc/resolv.conf е генериран излез, а не конфигурација, и токму тој механизам вреди да се разбере. Поправката не е подобар резолвер, туку сопственост над датотеката.

Датотеката се генерира, не се конфигурира

WSL 2 ја запишува датотеката при стартување од Windows адаптерите што ги гледа во тој момент, и печати коментар на врвот што го кажува тоа. Кога VPN клиент подоцна додава или препишува адаптер, дистрибуцијата не мора нужно да регенерира нешто, и датотеката продолжува да опишува мрежа што повеќе не постои.

Вториот начин на откажување е потивок: WSL може да копира сервери само од некои адаптери. Ако физичкиот адаптер веќе има IPv6 резолвер, IPv4 серверите што ги дава VPN адаптерот можат да бидат отфрлени наместо додадени, и датотеката изгледа целосна додека го испушта токму тој што одговара на внатрешните имиња.

Споредете го погледот од 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 може да успее против кеширана или буквална адреса. Потоа повторете по исклучување и повторно поврзување, бидејќи поставување што работи еднаш и се регенерира при продолжување никогаш не било поправено. Зачувајте ја претходната содржина и забележете која компонента ја поседува патеката на таа машина, за да почне следната промена со докази.

Поврзани статии