Klient Windows môže mať funkčný tunel, nosiť firemný resolver a napriek tomu posielať interné názvy do domáceho routera. Ktorý server odpovie, rozhodujú tri rôzne mechanizmy a zlyhávajú rôznym spôsobom. Netreba opravovať všetky tri: príznak vám povie, ktorý je v hre. Rozhodovací strom nižšie zaberie pár minút a zabráni obvyklému výsledku, keď zmena metriky, preusporiadanie registra a pravidlo NRPT pristanú spolu a nikto nevie, ktoré z toho čo urobilo.

Rozhodujú tri mechanizmy a zvyčajne je jeden nesprávny

Metrika rozhrania zoraďuje adaptéry pre danú rodinu adries. Poradie väzieb pod Tcpip\Linkage je zoznam identifikátorov rozhraní platný pre celý počítač, ktorý staršie cesty kódu stále čítajú. Tabuľka zásad prekladu názvov (NRPT) viaže priestor názvov na konkrétne servery a zoznam prípon rozhoduje, či sa krátky názov vôbec rozšíri. Sú nezávislé, a preto správny resolver na adaptéri VPN prehráva so zastaranou preferenciou inde.

What you seeMechanism to checkFirst command
Every name is slow, public names sometimes wrongGlobal adapter order: metric, then LinkageGet-NetIPInterface
Internal names resolve to a public addressThe query left through the home resolver, not the tunnelResolve-DnsName intranet.corp.example -Type A, then the same query with -Server 10.20.0.10
Only corp.example names fail, public names fineNamespace binding: NRPT or suffixGet-DnsClientNrptRule
Short name fails, fully qualified name worksSuffix list on the adapter, with the corporate suffix ahead of other entries, or pushed by the serverGet-DnsClientGlobalSetting
Works, then breaks after a reconnectRuntime setting that was never persistedGet-VpnConnection for the stored profile, then Get-NetIPInterface again after a reconnect

Žiadny z týchto mechanizmov nie je druhá strana tunela. Ak server, ktorý VPN pretláča, nedokáže názov preložiť, každé nastavenie na strane klienta je len dekorácia, takže prvým rozhodnutím je, či samotný resolver dokáže odpovedať, keď sa ho opýtate priamo.

Rozhodnutie prvé: dokáže pretlačený resolver vôbec odpovedať?

Opýtajte sa servera výslovne a porovnajte to s bežným dopytom. Rozdiel medzi odpoveďami oddeľuje problém výberu od problému dosiahnuteľnosti, a tu je najrýchlejšie rozvetvenie:

Resolve-DnsName intranet.corp.example -Server 10.20.0.10 -Type A
Resolve-DnsName intranet.corp.example -Type A

Ak prvý uspeje a druhý zlyhá, resolver je dosiahnuteľný a Windows volí zle; prejdite k rozhodnutiam o priestore názvov a poradí nižšie. Ak zlyhá aj prvý, nič na klientovi nepomôže: skontrolujte, či sa UDP a TCP 53 dostanú cez tunel na server, či hostiteľský firewall na serveri nezahadzuje fond a či sú vlastné preposielače servera zdravé.

Zastavte sa na tomto rozvetvení. Použitie pravidla NRPT na resolver, ku ktorému sa nedostanete, dáva tú istú poruchu s väčším množstvom konfigurácie na vrátenie a skrýva skutočnú chybu za pravidlom, ktoré vyzerá autoritatívne.

Rozhodnutie druhé: jeden priestor názvov alebo každý dopyt?

Rozsah rozhoduje o nástroji. Keď zlyhávajú len firemné názvy, zviažte priestor názvov namiesto preusporiadania počítača: pravidlo NRPT pošle túto príponu resolveru tunela a ostatné nechá na pokoji. Keď je zasiahnutý každý dopyt, problémom je globálna preferencia adaptérov, a metrika je miesto, kde začať, pretože nemení žiadne nastavenie servera.

Nastavte metriku pre každú rodinu adries, na oboch rozhraniach, a potom potvrďte poradie:

Get-NetIPInterface | Select-Object ifIndex, InterfaceAlias, AddressFamily, InterfaceMetric
Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 1 -AddressFamily IPv4
Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 1 -AddressFamily IPv6

Nahraďte 11 hodnotou ifIndex adaptéra tunela z riadku vyššie; ak je 11 adaptér LAN, ten istý príkaz zníži nesprávnu cestu. Zdvihnutie adaptéra LAN dosiahne to isté poradie z druhej strany: netsh int ip set interface interface="Ethernet" metric=15, a pre druhú rodinu netsh int ipv6 set interface interface="Ethernet" metric=15, pretože int ip sa dotýka len IPv4.

Poradie väzieb je posledná možnosť, nie prvý krok. HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage obsahuje zoznam Bind identifikátorov zariadení a presun identifikátora tunela dopredu naozaj zmení, ktorý adaptér sa pýta prvý, ale je to hodnota registra platná pre celý počítač bez rozsahu pre priestor názvov. Pred úpravou ju exportujte a potom tunel znova pripojte, aby poradie platilo v stave, ktorý klient očakáva.

Pre jediný priestor názvov dajte prednosť užšiemu nástroju:

Add-DnsClientNrptRule -Namespace ".corp.example" -NameServers 10.20.0.10
Get-DnsClientNrptRule | Select-Object Namespace, NameServers

Rozhodnutie tretie: prežije oprava opätovné pripojenie?

Metrika, ktorá funguje do ďalšieho vytáčaného pripojenia, nikdy nebola uložená. L2TP/IPsec a ďalšie profily pripojenia sa pri štarte spojenia znova vytvárajú, takže uložená hodnota žije v zázname telefónneho zoznamu ako IpInterfaceMetric, nielen na živom rozhraní. Niektoré prostredia ten údaj skriptujú práve preto; iné pretláčajú preferenciu zo zásad správy a koncový bod nechajú na pokoji.

Medzipamäť a registrácia sú samostatná vrstva. Spustenie týchto krokov po zdvihnutí tunela opraví zastarané záznamy a znova zaregistruje klienta, ale ani jedno nepreusporiada adaptér:

ipconfig /registerdns
ipconfig /flushdns

V tej istej vrstve je vypínač. Vypnutie dynamickej registrácie na fyzickom adaptéri zabráni klientovi ohlasovať svoju adresu na strane VPN pod nesprávnym názvom, čo je iná oprava než obnovenie vyššie.

IPv6 si v rozhodnutí zaslúži vlastný riadok. Ak má fyzický adaptér globálnu adresu IPv6, kým tunel nesie len IPv4, Windows môže uprednostniť cestu bez tunela na preklad názvov. Skontrolujte túto rodinu oddelene, pretože metrika nastavená pre IPv4 o nej nič nehovorí:

Get-NetIPInterface -AddressFamily IPv6 | Select-Object ifIndex, InterfaceAlias, InterfaceMetric

Vypnutie IPv6 na adaptéri LAN odstráni tú cestu aj protokol s ňou; zmena metriky na rozhraní IPv6 alebo pravidlo NRPT pre firemný priestor názvov rodinu zachová a preferenciu opraví. Vyberte užšiu, ak ste sa nerozhodli, že to spojenie nemá mať IPv6.

Overujte s pomenovaným zdrojom a udržte jedného vlastníka

Overujte nástrojmi, ktoré hlásia, ktorý zdroj platí, nie len či sa stránka načíta:

ipconfig /all
Get-DnsClientServerAddress -AddressFamily IPv4
Resolve-DnsName fileserver.corp.example -Server 10.20.0.10 -Type A

Potom oddeľte filtrovanie od výberu, pretože z vnútra aplikácie vyzerajú rovnako. block-outside-dns v OpenVPN blokuje port 53 na ostatných adaptéroch; resolver nevyberá. Ak teraz zlyhá každý dopyt, filter môže blokovať jediný dostupný server; ak sa konfigurovaný resolver ignoruje, poradie alebo pravidlo priestoru názvov je nesprávne. Zmena oboch naraz robí zablokovaný dopyt a ignorovaný dopyt nerozoznateľnými.

Udržte jedného vlastníka zásad DNS: profil VPN, zásadu správy alebo pravidlo NRPT, nie dve z nich. Pred uzavretím:

  • Pretlačený resolver odpovedá, keď sa naň výslovne opýtate, a bežný dopyt ho používa.
  • Pravidlo alebo metrika, ktorú ste zmenili, pokrýva rodinu adries, ktorá dopyty skutočne nesie.
  • Nastavenie prežije odpojenie a opätovné pripojenie, alebo ste ho presunuli do uloženého profilu.
  • Autoritatívny je práve jeden mechanizmus a ostatné zostali tak, ako boli.

Berte poradie ako stav prostredia a nie ako vec, ktorú dokončíte. Skontrolujte ho znova po opätovnom pripojení a po aktualizácii Windows, ktorá zasiahne sieťový zásobník, pretože ktorákoľvek z nich môže fyzický adaptér vrátiť dopredu.

Súvisiace články