O conexiune VPN din Windows nu stochează serverele DNS în profilul pe care îl editezi în Setări. Când tunelul pornește, clientul negociază configurația IP cu gateway-ul, gateway-ul trimite o listă de resolvere, iar Windows o aplică adaptorului tunelului. Acel adaptor este o interfață separată de Wi-Fi sau Ethernet, iar lista aparține interfeței, nu profilului. După ce știi ce obiect deține valoarea, suprascrierea ei în PowerShell este o singură comandă; să faci suprascrierea să supraviețuiască unei reconectări este partea care cere o decizie.

Ce obiect deține adresa

RAS creează adaptorul tunelului când conexiunea reușește și îl elimină când conexiunea cade. Serverele DNS pe care le vezi în ipconfig /all apar în timpul acelui schimb de configurație, lângă adresele IPv4 și IPv6 și rute. Deoarece valoarea este legată de interfață, Set-DnsClientServerAddress scrie într-un lucru care există doar cât timp există conexiunea.

Acest singur fapt explică cea mai mare parte a confuziei din jurul DNS-ului VPN. Un profil poate fi inspectat în timp ce ești deconectat, dar nu există o interfață către care să arăți, așa că un script de autentificare care apelează cmdlet-ul pe aliasul VPN eșuează înainte ca cineva să se fi conectat. Explică și o modificare care pare să revină: nimic nu a revenit, interfața a fost distrusă și reconstruită cu valorile trimise de gateway.

Găsește aliasul înainte să atingi DNS-ul

Numele profilului și aliasul interfeței sunt de obicei același șir, dar nu sunt același obiect. Get-VpnConnection listează profiluri; Get-NetAdapter listează interfețele pe care Windows le are cu adevărat. Cmdlet-urile DNS îl vor pe al doilea, iar cele două diverg mai des decât se așteaptă oamenii, mai ales când clientul adaugă un descriptor precum "(RAS)" la numele adaptorului.

Dacă profilul nu există, PowerShell poate crea o intrare nativă. Tipul tunelului și autentificarea trebuie să corespundă cu ce oferă gateway-ul, pentru că o nepotrivire apare la conectare, nu la creare:

Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
  -TunnelType Ikev2 -EncryptionLevel Required `
  -AuthenticationMethod Eap -AllUserConnection

Conectează-te o dată, apoi citește aliasul real înainte de a scrie orice comandă DNS:

rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"

Aplică suprascrierea în ordinea corectă

Ordinea contează mai mult decât sintaxa. Adaptorul trebuie să fie pornit, aliasul trebuie să se rezolve, iar contul trebuie să aibă voie să modifice setările interfeței. O conexiune per utilizator acceptă de obicei modificarea de la utilizatorul autentificat; o conexiune pentru toți utilizatorii creată cu -AllUserConnection are nevoie în general de un shell cu privilegii ridicate.

Cmdlet-ul în sine este o singură linie, documentat în referința Set-DnsClientServerAddress de la Microsoft:

Set-DnsClientServerAddress -InterfaceAlias "Corporate" -ServerAddresses 10.20.0.53,10.20.0.54
Get-DnsClientServerAddress -InterfaceAlias "Corporate" -AddressFamily IPv4

Două moduri de eșec merită recunoscute dintr-o privire. Un alias greșit produce o eroare de la cmdlet, iar acesta este rezultatul bun, pentru că tăcerea ar fi mai rea. Un cmdlet corect fără efect vizibil înseamnă de obicei că te uiți la adaptorul greșit: un adaptor de tunel rămas de la alt client, o placă de rețea fizică cu o descriere similară sau un al doilea adaptor virtual creat de un instrument de rețea în sandbox.

De ce o reconectare poate anula modificarea

Suprascrierea aparține unei singure instanțe a interfeței. Când clientul demontează adaptorul și îl reconstruiește la următoarea conectare, valorile trimise sunt aplicate din nou, iar lista ta dispare. Unii clienți recreează interfața la fiecare conectare; alții o refolosesc pe toată durata sesiunii. Compară indexul interfeței în Get-NetAdapter între două conexiuni și vei ști ce comportament ai.

Există trei răspunsuri durabile, iar suprapunerea lor creează propriile erori. Un sufix DNS specific conexiunii plus o regulă NRPT trimite doar spațiul de nume intern la resolverul intern și lasă numele publice în pace. O setare de Politică de grup sau MDM aplicată conexiunii VPN setează DNS-ul la conectare fără niciun script. O sarcină planificată care reacționează la evenimentul de conectare și rulează din nou cmdlet-ul este opțiunea brutală, dar funcționează și lasă un jurnal. Alege un singur proprietar pentru DNS și notează care este.

Numele interne cu o singură etichetă au nevoie și de o listă de căutare a sufixelor. Set-DnsClientGlobalSetting -SuffixSearchList este valabil pentru întreaga mașină, așa că schimbă rezolvarea pentru fiecare adaptor de pe calculator, inclusiv Ethernet. Testeaz-o pe o mașină de laborator înainte de a intra într-o imagine.

Verifică rezolvarea, nu doar setarea

Un resolver listat pe un adaptor dovedește doar că o valoare a fost scrisă. Întreabă serverul dorit direct, apoi întreabă pe calea normală:

Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example

Diviziunea îți spune unde se află defectul. Interogarea directă răspunde, iar interogarea simplă eșuează: setarea adaptorului sau lista de sufixe nu este în vigoare. Ambele eșuează: resolverul nu este accesibil prin tunel, așa că uită-te la rute și la regulile de firewall înainte de a atinge din nou DNS-ul. Interogarea directă eșuează în timp ce cea simplă răspunde din altundeva: DNS-ul divizat este configurat greșit și un nume intern primește răspuns de la un resolver public, ceea ce este o problemă de politică înainte de a fi una de conectivitate.

Rulează testul de două ori, o dată imediat după conectare și o dată după deconectare și reconectare, și compară ieșirea Get-DnsClientServerAddress din ambele rulări. Dacă valoarea trimisă a revenit la a doua conexiune, suprascrierea a trăit și a murit împreună cu adaptorul, iar doar regula NRPT sau ruta de politică din secțiunea anterioară va rezista. Păstrează ambele transcrieri și momentele conectării; ele lămuresc întrebarea dacă rezistă mai repede decât încă o rundă de modificări.

Articole similare