Nastavitev DNS na adapterju VPN v sistemu Windows s PowerShellom in nato preverjanje
Windows pripne DNS predora na adapter, ne na profil VPN. Nastavite ga po povezavi v PowerShellu in nato preverite, ali ga ponovna povezava obdrži.
Povezava VPN v sistemu Windows ne shranjuje strežnikov DNS v profilu, ki ga urejate v Nastavitvah. Ko se predor dvigne, odjemalec izpogaja konfiguracijo IP s prehodom, prehod pošlje seznam razreševalnikov in Windows ga uporabi na adapterju predora. Ta adapter je ločen vmesnik od vašega Wi-Fi ali Ethernet, seznam pa pripada vmesniku, ne profilu. Ko veste, kateri objekt ima vrednost, je prepis v PowerShellu en sam ukaz; poskrbeti, da prepis preživi ponovno povezavo, je del, ki zahteva odločitev.
Kateri objekt ima naslov
RAS ustvari adapter predora, ko povezava uspe, in ga odstrani, ko povezava pade. Strežniki DNS, ki jih vidite v ipconfig /all, pridejo med to izmenjavo konfiguracije, ob naslovih IPv4 in IPv6 ter poteh. Ker je vrednost pripeta na vmesnik, Set-DnsClientServerAddress piše v nekaj, kar obstaja le toliko časa, kolikor obstaja povezava.
To eno dejstvo pojasni večino zmede okoli DNS pri VPN. Profil je mogoče pregledati, ko ste odklopljeni, vendar ni vmesnika, na katerega bi kazali, zato prijavna skripta, ki pokliče cmdlet na alias VPN, spodleti, preden se kdor koli poveže. Pojasni tudi spremembo, ki se zdi, da se povrne: nič se ni povrnilo, vmesnik je bil uničen in znova zgrajen z vrednostmi, ki jih je poslal prehod.
Poiščite alias, preden se dotaknete DNS
Ime profila in alias vmesnika sta običajno isti niz, vendar nista isti objekt. Get-VpnConnection izpiše profile; Get-NetAdapter izpiše vmesnike, ki jih Windows dejansko ima. Cmdleti DNS želijo drugega, in ta dva se razhajata pogosteje, kot ljudje pričakujejo, zlasti ko odjemalec imenu adapterja doda opis, kot je "(RAS)".
Če profil ne obstaja, lahko PowerShell ustvari izvorni vnos. Vrsta predora in preverjanje pristnosti se morata ujemati s tem, kar ponuja prehod, ker se neujemanje pokaže ob povezovanju in ne ob ustvarjanju:
Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
-TunnelType Ikev2 -EncryptionLevel Required `
-AuthenticationMethod Eap -AllUserConnection
Povežite se enkrat, nato preberite pravi alias, preden napišete kateri koli ukaz DNS:
rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"
Uporabite prepis v pravilnem vrstnem redu
Vrstni red je pomembnejši od skladnje. Adapter mora biti aktiven, alias se mora razrešiti in račun mora imeti dovoljenje za spreminjanje nastavitev vmesnika. Povezava na uporabnika običajno sprejme spremembo prijavljenega uporabnika; povezava za vse uporabnike, ustvarjena z -AllUserConnection, praviloma potrebuje lupino z višjimi pravicami.
Sam cmdlet je ena vrstica, dokumentiran v Microsoftovi referenci Set-DnsClientServerAddress:
Set-DnsClientServerAddress -InterfaceAlias "Corporate" -ServerAddresses 10.20.0.53,10.20.0.54
Get-DnsClientServerAddress -InterfaceAlias "Corporate" -AddressFamily IPv4
Dva načina odpovedi velja prepoznati na prvi pogled. Napačen alias vrne napako cmdleta in to je dober izid, ker bi tišina bila slabša. Pravilen cmdlet brez vidnega učinka običajno pomeni, da gledate napačen adapter: preostali adapter predora od drugega odjemalca, fizično omrežno kartico s podobnim opisom ali drugi navidezni adapter, ki ga je ustvarilo orodje za omrežja v izoliranem okolju.
Zakaj lahko ponovna povezava razveljavi spremembo
Prepis pripada eni sami instanci vmesnika. Ko odjemalec adapter razstavi in ga ob naslednji povezavi znova zgradi, se poslane vrednosti znova uporabijo in vaš seznam izgine. Nekateri odjemalci vmesnik ustvarijo znova ob vsaki povezavi; drugi ga uporabljajo vso življenjsko dobo seje. Primerjajte indeks vmesnika v Get-NetAdapter med dvema povezavama in vedeli boste, kakšno vedenje imate.
Obstajajo trije trajni odgovori in njihovo kopičenje ustvarja lastne hrošče. Pripona DNS, značilna za povezavo, skupaj s pravilom NRPT pošlje le notranji imenski prostor notranjemu razreševalniku, javna imena pa pusti pri miru. Nastavitev skupinske politike ali MDM, uporabljena na povezavi VPN, nastavi DNS ob povezavi brez skripte. Načrtovano opravilo, ki se odzove na dogodek povezave in znova zažene cmdlet, je groba možnost, vendar deluje in pusti dnevnik. Izberite enega lastnika DNS in zapišite, kateri je.
Notranja imena z eno oznako potrebujejo tudi seznam za iskanje pripon. Set-DnsClientGlobalSetting -SuffixSearchList velja za celoten računalnik, zato spremeni razreševanje za vsak adapter v računalniku, vključno z Ethernetom. Preizkusite ga na laboratorijskem računalniku, preden gre v sliko.
Preverite razreševanje, ne le nastavitve
Razreševalnik, naveden na adapterju, dokazuje le, da je bila vrednost zapisana. Vprašajte predvideni strežnik neposredno, nato vprašajte po običajni poti:
Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example
Razdelitev vam pove, kje je napaka. Neposredna poizvedba odgovori in običajna poizvedba spodleti: nastavitev adapterja ali seznam pripon ne velja. Spodletita obe: razreševalnik ni dosegljiv skozi predor, zato pred ponovnim posegom v DNS poglejte poti in pravila požarnega zidu. Neposredna poizvedba spodleti, medtem ko običajna odgovori od drugod: razdeljeni DNS je napačno nastavljen in na notranje ime odgovarja javni razreševalnik, kar je najprej problem politike in šele nato povezljivosti.
Zaženite test dvakrat, enkrat takoj po povezavi in enkrat po odklopu in ponovni povezavi, ter primerjajte izhod Get-DnsClientServerAddress iz obeh zagonov. Če se poslana vrednost vrne ob drugi povezavi, je prepis živel in umrl z adapterjem in obdržalo se bo le pravilo NRPT ali pot politike iz prejšnjega razdelka. Shranite oba zapisa in časovne žige povezave; hitreje razrešijo vprašanje, ali se obdrži, kot še en krog urejanja.