Przeglądanie wewnątrz dystrybucji działa, a pierwsza wewnętrzna nazwa hosta zawodzi w chwili, gdy tunel się podnosi. Odruchem jest dodanie publicznego resolvera, co przywraca internet i czyni nazwę firmową nieosiągalną do końca dnia. W WSL 2 /etc/resolv.conf jest generowanym wyjściem, a nie konfiguracją, i to ten mechanizm warto zrozumieć. Poprawką nie jest lepszy resolver, lecz własność pliku.

Plik jest generowany, nie konfigurowany

WSL 2 zapisuje plik przy starcie na podstawie tych adapterów Windows, które wtedy widzi, i drukuje na górze komentarz, który to mówi. Gdy klient VPN później doda lub nadpisze adapter, dystrybucja niekoniecznie coś regeneruje, a plik nadal opisuje sieć, która już nie istnieje.

Drugi tryb awarii jest cichszy: WSL może kopiować serwery tylko z niektórych adapterów. Jeśli adapter fizyczny ma już resolver IPv6, serwery IPv4 dostarczane przez adapter VPN mogą zostać odrzucone zamiast dodane, a plik wygląda na kompletny, pomijając dokładnie ten, który odpowiada na nazwy wewnętrzne.

Porównaj widok z Windows z widokiem z Linuksa

Przeczytaj obie strony przed edycją. Wewnątrz dystrybucji sprawdź, co zawiera plik i czy jest to zwykły plik, czy dowiązanie. W Windows wylistuj resolver dla każdego adaptera, w tym tego utworzonego przez VPN:

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

Gdy adapter VPN pokazuje serwery firmowe, a Linux coś innego, rozbieżność jest w generowaniu, a nie w osiągalności. Porównaj listę adapterów oraz adresy, bo brakujący adapter wyjaśnia brakujący serwer. To rozróżnienie decyduje, czy naprawiasz WSL, czy zaporę, a te dwie rzeczy nie mają nic wspólnego.

Wyłącz generowanie i napisz własny plik

Jedno udokumentowane ustawienie powstrzymuje WSL przed przepisywaniem pliku i znajduje się w /etc/wsl.conf. Dodaj do tego pliku sekcję sieciową:

[network]
generateResolvConf = false

Następnie zatrzymaj dystrybucję z Windows za pomocą wsl --shutdown i uruchom ją ponownie. Jeśli ścieżka jest dowiązaniem symbolicznym, a nie zwykłym plikiem, usuń dowiązanie przed zapisaniem własnej treści, bo zapis przez dowiązanie może odtworzyć generowany cel przy następnym starcie. Od tego momentu plik jest twój i nic go nie przepisuje.

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

Bez domeny wyszukiwania niekwalifikowana nazwa hosta jest uzupełniana korzeniem publicznym i wraca jako brak takiej domeny. timeout powstrzymuje martwy pierwszy serwer przed blokowaniem każdego zapytania, attempts ogranicza, ile prób zużywa zapytanie, a rotate rozprasza ponowienia zamiast zawsze zaczynać od góry. Ceną jest to, że plik nie podąża już za VPN, którego adres resolvera zmienia się między sesjami.

Obsłuż resolver, który się przemieszcza, a potem zweryfikuj

Niektórzy klienci wydają resolver specyficzny dla sesji, więc statyczny plik psuje się przy następnym połączeniu. Dwa podejścia są obronne. Zapisuj plik z małego skryptu za każdym razem, gdy adres się zmieni, albo zostaw generowanie włączone i upewnij się, że adapter, z którego kopiuje WSL, niesie serwer firmowy. Drugie nie wymaga haczyka i zawodzi, gdy generowanie pomija adapter VPN; oba nadal wymagają najpierw rozwiązania konfliktu IPv6.

Windows stosuje też własne zasady nazw, takie jak lista wyszukiwania sufiksów lub zasada rozwiązywania dla konkretnych domen, a kopiowanie adresów adapterów nie odtwarza tych reguł. Jeśli nazwa rozwiązuje się w Windows, a nie w dystrybucji z tym samym serwerem, porównaj obsługę sufiksów, zanim oskarżysz tunel.

Testuj nazwą, a nie pakietem: getent hosts sensor-access0.corp.example przechodzi przez stos resolvera, podczas gdy ping może się udać wobec adresu z pamięci podręcznej lub dosłownego. Potem powtórz po rozłączeniu i ponownym połączeniu, bo ustawienie, które działa raz i jest regenerowane przy wznowieniu, nigdy nie zostało naprawione. Zapisz poprzednią treść i zanotuj, który komponent posiada ścieżkę na tej maszynie, aby następna zmiana zaczęła się od dowodów.

Powiązane artykuły