Stel DNS op 'n Windows-VPN-adapter in met PowerShell en verifieer dit
Windows koppel tonnel-DNS aan die adapter, nie aan die VPN-profiel nie. Stel dit ná verbinding in PowerShell in en toets dan of 'n herverbinding dit behou.
'n Windows-VPN-verbinding stoor nie DNS-bediener in die profiel wat jy in Instellings wysig nie. Wanneer die tonnel opkom, onderhandel die kliënt IP-konfigurasie met die gwapoort, die gwapoort stuur 'n oplosserlys, en Windows pas dit op die tonnel-adapter toe. Daardie adapter is 'n aparte koppelvlak van jou Wi-Fi of Ethernet, en die lys hoort by die koppelvlak, nie by die profiel nie. Sodra jy weet watter objek die waarde besit, is die oorskryf daarvan in PowerShell een opdrag; om die oorskrywing deur 'n herverbinding te laat oorleef, is die deel wat 'n besluit vereis.
Watter objek besit die adres
RAS skep die tonnel-adapter wanneer die verbinding slaag en verwyder dit wanneer die verbinding val. Die DNS-bediener wat jy in ipconfig /all sien, kom tydens daardie konfigurasie-uitruiling, langs die IPv4- en IPv6-adresse en die roetes. Omdat die waarde aan die koppelvlak geheg is, Set-DnsClientServerAddress skryf aan iets wat net bestaan terwyl die verbinding bestaan.
Daardie een feit verduidelik die meeste van die verwarring rondom VPN-DNS. 'n Profiel kan in onverbinde toestand ondersoek word, maar daar is geen koppelvlak om na te wys nie, so 'n aanmeldingstrokie wat die cmdlet teen die VPN-alias aanroep, misluk voordat iemand verbind het. Dit verduidelik ook 'n verandering wat lyk of dit terugdraai: niks het teruggedraai nie; die koppelvlak is vernietig en herbou met die waardes wat die gwapoort gestuur het.
Vind die alias voordat jy aan DNS raak
Profielnaam en koppelvlak-alias is gewoonlik dieselfde string, maar hulle is nie dieselfde objek nie. Get-VpnConnection lys profiele; Get-NetAdapter lys die koppelvlakke wat Windows werklik het. Die DNS-cmdlets wil die tweede een hê, en die twee wyk vaker af as wat mense verwag, veral wanneer die kliënt 'n beskrywer soos "(RAS)" by die adapternaam voeg.
As die profiel nie bestaan nie, kan PowerShell 'n inheemse inskrywing skep. Die tonneltipe en verifikasie moet ooreenstem met wat die gwapoort bied, want 'n wanverhouding kom by verbindingstyd na vore, nie by skeppingstyd nie:
Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
-TunnelType Ikev2 -EncryptionLevel Required `
-AuthenticationMethod Eap -AllUserConnection
Verbind een keer, lees dan die werklike alias voordat jy enige DNS-opdrag skryf:
rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"
Pas die oorskrywing in die regte volgorde toe
Volgorde maak meer saak as sintaksis. Die adapter moet op wees, die alias moet oplos, en die rekening moet toegelaat word om koppelvlakinstellings te verander. 'n Per-gebruiker-verbinding aanvaar gewoonlik die verandering van die aangemelde gebruiker; 'n alle-gebruikers-verbinding wat met -AllUserConnection geskep is, benodig gewoonlik 'n verhoogde shell.
Die cmdlet self is 'n eenreëler, gedokumenteer in Microsoft se verwysing na Set-DnsClientServerAddress:
Set-DnsClientServerAddress -InterfaceAlias "Corporate" -ServerAddresses 10.20.0.53,10.20.0.54
Get-DnsClientServerAddress -InterfaceAlias "Corporate" -AddressFamily IPv4
Twee mislukkingsmodusse is werd om op sig te herken. 'n Verkeerde alias veroorsaak 'n fout van die cmdlet, wat die goeie uitkoms is, want stilte sou erger wees. 'n Korrekte cmdlet sonder sigbare effek beteken gewoonlik dat jy na die verkeerde adapter kyk: 'n oorblywende tonnel-adapter van 'n ander kliënt, 'n fisiese NIC met 'n soortgelyke beskrywing, of 'n tweede virtuele adapter wat deur 'n sandbox-netwerkwerktuig geskep is.
Waarom 'n herverbinding die verandering ongedaan kan maak
Die oorskrywing behoort aan een koppelvlak-instansie. Wanneer die kliënt die adapter afbreek en dit by die volgende verbinding herbou, word die gestuurde waardes weer toegepas en jou lys is weg. Sommige kliënte herskep die koppelvlak by elke verbinding; ander hergebruik dit vir die duur van die sessie. Vergelyk die koppelvlak-indeks in Get-NetAdapter oor twee verbindings en jy sal weet watter gedrag jy het.
Drie duursame antwoorde bestaan, en om hulle te stapel skep sy eie foute. 'n Verbinding-spesifieke DNS-agtervoegsel plus aan NRPT-reël stuur net die interne naamruimte na die interne oplosser en laat publieke name uit. 'n Groepsbeleid- of MDM-instelling wat op die VPN-verbinding toegepas word, stel DNS by verbindingstyd sonder enige script. 'n Geskeduleerde taak wat op die verbinding-gebeurtenis reageer en die cmdlet weer laat loop, is die bot opsie, maar dit werk en dit laat 'n log. Kies een eienaar vir DNS en skryf neer watter een dit is.
Enkel-etiket interne name het ook 'n agtervoegsel-soeklys nodig. Set-DnsClientGlobalSetting -SuffixSearchList is masjienwyd, so dit verander die oplossing vir elke adapter op die masjien, insluitend Ethernet. Toets dit op 'n laboratoriummasjien voordat dit in 'n skyfbeeld gaan.
Verifieer die oplossing, nie net die instelling nie
'n Oplosser wat op 'n adapter gelys is, bewys net dat 'n waarde geskryf is. Vra die beoogde bediener direk, vra dan deur die normale pad:
Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example
Die splitsing vertel jou waar die fout sit. Direkte navraag antwoord en die gewone navraag misluk: die adapter-instelling of die agtervoegsellys is nie in werking nie. Albei misluk: die oplosser is deur die tonnel onbereikbaar, so kyk na roetes en firewall-reëls voordat jy weer aan DNS raak. Direkte navraag misluk terwyl die gewone navraag van elders antwoord: gesplete DNS is verkeerd opgestel en 'n interne naam word deur 'n publieke oplosser beantwoord, wat 'n beleidsprobleem is voordat dit 'n verbindingsprobleem is.
Voer die toets twee keer uit, een keer reg ná verbinding en een keer ná 'n ontkoppeling en herverbinding, en vergelyk die Get-DnsClientServerAddress uitset van albei lopies. As die gestuurde waarde by die tweede verbinding terug is, het die oorskrywing met die adapter geleef en gesterf, en net die NRPT- of beleidsroete van die vorige afdeling sal hou. Hou albei transkripsies en die verbindingstydstempels; hulle besleg die vraag of dit vasbly vinniger as nog 'n ronde wysigings.