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

Повезани чланци