Postavite DNS na Windows VPN adapteru pomoću PowerShell-a, zatim provjerite
Windows veže DNS tunela za adapter, ne za VPN profil. Postavite ga nakon povezivanja u PowerShell-u, pa provjerite da li ga ponovno povezivanje zadržava.
VPN veza u Windows-u ne čuva DNS servere u profilu koji uređujete u Postavkama. Kada tunel oživi, klijent pregovara IP konfiguraciju s pristupnikom, pristupnik pošalje popis razrješivača, a Windows ga primijeni na adapter tunela. Taj je adapter zasebno sučelje od vašeg Wi-Fi ili Ethernet-a, a popis pripada sučelju, ne profilu. Kad znate koji objekt posjeduje vrijednost, njezino premošćivanje u PowerShell-u je jedna naredba; učiniti da premošćenje preživi ponovno povezivanje dio je koji traži odluku.
Koji objekt posjeduje adresu
RAS stvara adapter tunela kad veza uspije i uklanja ga kad veza padne. DNS serveri koje vidite u ipconfig /all dolaze tijekom te razmjene konfiguracije, uz IPv4 i IPv6 adrese i rute. Budući da je vrijednost vezana za sučelje, Set-DnsClientServerAddress piše u nešto što postoji samo dok veza postoji.
Ta jedna činjenica objašnjava većinu zbrke oko VPN DNS-a. Profil se može pregledati dok je odspojen, ali nema sučelja na koje bi se pokazalo, pa prijavna skripta koja poziva naredbu protiv VPN alijasa pada prije nego se itko povezao. To objašnjava i promjenu koja izgleda kao povratak: ništa se nije vratilo, sučelje je uništeno i ponovno izgrađeno s vrijednostima koje je pristupnik poslao.
Nađite alijas prije nego dirnete DNS
Naziv profila i alijas sučelja obično su isti niz, ali nisu isti objekt. Get-VpnConnection izlistava profile; Get-NetAdapter izlistava sučelja koja Windows doista ima. DNS naredbe žele drugo, a njih se dvoje razilaze češće nego što ljudi očekuju, posebno kad klijent imenu adaptera doda opisnik poput "(RAS)".
Ako profil ne postoji, PowerShell može stvoriti izvorni unos. Vrsta tunela i provjera autentičnosti moraju odgovarati onome što pristupnik nudi, jer se nepodudarnost pokaže pri povezivanju, a ne pri stvaranju:
Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
-TunnelType Ikev2 -EncryptionLevel Required `
-AuthenticationMethod Eap -AllUserConnection
Povežite se jednom, pa pročitajte pravi alijas prije nego napišete bilo koju DNS naredbu:
rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"
Primijenite premošćenje u ispravnom redoslijedu
Redoslijed je važniji od sintakse. Adapter mora biti aktivan, alijas se mora razriješiti i račun mora smjeti mijenjati postavke sučelja. Veza po korisniku obično prihvaća promjenu od prijavljenog korisnika; veza za sve korisnike stvorena s -AllUserConnection obično zahtijeva povišenu ljusku.
Sama naredba je jedan redak, dokumentiran u Microsoftovu 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 neuspjeha vrijedi prepoznati na prvi pogled. Pogrešan alijas proizvodi pogrešku naredbe, što je dobar ishod, jer bi tišina bila gora. Ispravna naredba bez vidljivog učinka obično znači da gledate pogrešan adapter: zaostali adapter tunela od drugog klijenta, fizički NIC sa sličnim opisom ili drugi virtualni adapter koji je stvorio alat za izoliranu mrežu.
Zašto ponovno povezivanje može poništiti promjenu
Premošćenje pripada jednoj instanci sučelja. Kad klijent razmontira adapter i obnovi ga pri sljedećem povezivanju, poslane vrijednosti primijene se ponovno i vaš popis nestaje. Neki klijenti obnavljaju sučelje pri svakom povezivanju; drugi ga koriste iznova cijeli sesiju. Usporedite indeks sučelja u Get-NetAdapter kroz dvije veze i znat ćete kakvo ponašanje imate.
Postoje tri trajna odgovora, a njihovo slaganje stvara vlastite bugove. DNS sufiks specifičan za vezu plus NRPT pravilo šalje samo unutarnji prostor imena unutarnjem razrješivaču i ostavlja javna imena na miru. Group Policy ili MDM postavka primijenjena na VPN vezu postavlja DNS pri povezivanju bez ikakve skripte. Zakazani zadatak koji reagira na događaj veze i ponovno pokreće naredbu grubo je rješenje, ali radi i ostavlja zapisnik. Odaberite jednoga vlasnika DNS-a i zapišite koji je.
Unutarnja imena s jednom oznakom također trebaju popis za pretragu sufiksa. Set-DnsClientGlobalSetting -SuffixSearchList djeluje na cijelo računalo, pa mijenja razrješavanje za svaki adapter na stroju, uključujući Ethernet. Testirajte ga na laboratorijskom stroju prije nego uđe u sliku.
Provjerite razrješavanje, ne samo postavku
Razrješivač naveden na adapteru dokazuje samo da je vrijednost zapisana. Pitajte namjeravani poslužitelj izravno, pa pitajte normalnim putem:
Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example
Podjela vam kaže gdje je kvar. Izravan upit odgovara, a običan upit pada: postavka adaptera ili popis sufiksa nije na snazi. Oba padaju: razrješivač je nedostupan kroz tunel, pa pogledajte rute i pravila vatrozida prije nego ponovno dirnete DNS. Izravan upit pada dok običan upit odgovara odnekud drugdje: split DNS je pogrešno konfiguriran i na unutarnje ime odgovara javni razrješivač, što je problem politike prije nego problem povezivosti.
Pokrenite test dvaput, jednom odmah nakon povezivanja i jednom nakon odspajanja i ponovnog povezivanja, i usporedite Get-DnsClientServerAddress izlaz obaju pokretanja. Ako se poslana vrijednost vrati na drugoj vezi, premošćenje je živjelo i umrlo s adapterom, i samo će NRPT ili put politike iz prethodnog odjeljka izdržati. Sačuvajte oba zapisa i vremenske oznake povezivanja; one rješavaju pitanje ostaje li brže od još jednog kruga uređivanja.