Windows VPN adapterində DNS-i PowerShell ilə təyin edin və yoxlayın
Windows tunel DNS-ni VPN profilində deyil, adapterdə saxlayır. Qoşulduqdan sonra PowerShell-də təyin edin, sonra yenidən qoşulmanın onu saxlayıb-saxlamadığını yoxlayın.
Windows VPN bağlantısı DNS serverlərini Parametrlərdə redaktə etdiyiniz profildə saxlamır. Tunel qalxdıqda müştəri şlüzlə IP konfiqurasiyasını razılaşdırır, şlüz həlledici siyahısını göndərir və Windows onu tunel adapterinə tətbiq edir. Bu adapter Wi-Fi və ya Ethernet-dən ayrı interfeysdir və siyahı profilə deyil, interfeysə aiddir. Dəyərin hansı obyektə aid olduğunu bildikdən sonra onu PowerShell-də üstələmək bir əmrdir; üstələmənin yenidən qoşulmadan sonra da qalmasını təmin etmək isə qərar tələb edən hissədir.
Adres hansı obyektə aiddir
RAS tunel adapterini bağlantı uğurlu olduqda yaradır və bağlantı kəsiləndə silir. Gördüyünüz DNS serverləri ipconfig /all həmin konfiqurasiya mübadiləsi zamanı, IPv4 və IPv6 ünvanları və marşrutlarla yanaşı gəlir. Dəyər interfeysə bağlı olduğu üçün Set-DnsClientServerAddress yalnız bağlantı mövcud olduqda var olan bir şeyə yazır.
Bu bir fakt VPN DNS ətrafındaki qarışıqlığın çoxunu izah edir. Profil bağlantı kəsildikdə yoxlana bilər, amma işarə ediləcək interfeys yoxdur, ona görə də VPN ləqəbinə qarşı əmri çağıran giriş skripti heç kim qoşulmadan uğursuz olur. Bu həmçinin geri qayıdırmış kimi görünən dəyişikliyi izah edir: heç nə geri qayıtmadı, interfeys məhv edildi və şlüzün göndərdiyi dəyərlərlə yenidən quruldu.
DNS-ə toxunmadan əvvəl ləqəbi tapın
Profil adı və interfeys ləqəbi adətən eyni sətirdir, lakin onlar eyni obyekt deyil. Get-VpnConnection profilləri sadalayır; Get-NetAdapter Windows-un həqiqətən malik olduğu interfeysləri sadalayır. DNS əmrləri ikincisini istəyir və ikisi insanların gözlədiyindən daha tez-tez ayrılır, xüsusən müştəri adapter adına "(RAS)" kimi deskriptor əlavə etdikdə.
Profil yoxdursa, PowerShell yerli qeyd yarada bilər. Tunel növü və autentifikasiya şlüzün təklif etdiyi ilə uyğun olmalıdır, çünki uyğunsuzluq yaradılma vaxtında deyil, qoşulma vaxtında üzə çıxır:
Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
-TunnelType Ikev2 -EncryptionLevel Required `
-AuthenticationMethod Eap -AllUserConnection
Bir dəfə qoşulun, sonra hər hansı DNS əmri yazmadan əvvəl real ləqəbi oxuyun:
rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"
Üstələməni düzgün ardıcıllıqla tətbiq edin
Ardıcıllıq sintaksisdən daha vacibdir. Adapter işlək olmalı, ləqəb həll olunmalı və hesaba interfeys parametrlərini dəyişməyə icazə verilməlidir. İstifadəçi üzrə bağlantı adətən daxil olmuş istifadəçidən dəyişikliyi qəbul edir; -AllUserConnection ilə yaradılmış bütün istifadəçilər üzrə bağlantı ümumiyyətlə yüksəldilmiş shell tələb edir.
Əmrin özü bir sətirdir, Microsoft-un Set-DnsClientServerAddress istinadında:
Set-DnsClientServerAddress -InterfaceAlias "Corporate" -ServerAddresses 10.20.0.53,10.20.0.54
Get-DnsClientServerAddress -InterfaceAlias "Corporate" -AddressFamily IPv4
İki uğursuzluq rejimi görünüşlə tanınmağa dəyər. Səhv ləqəb əmrdən xəta çıxarır, bu yaxşı nəticədir, çünki sükut daha pis olardı. Görünən təsiri olmayan düzgün əmr adətən səhv adapterə baxdığınız deməkdir: başqa müştəridən qalan tunel adapteri, oxşar təsvirli fiziki NIC və ya sandbox şəbəkə aləti ilə yaradılmış ikinci virtual adapter.
Yenidən qoşulma dəyişikliyi niyə ləğv edə bilər
Üstələmə bir interfeys nüsxəsinə aiddir. Müştəri adapteri söküb növbəti qoşulmada yenidən qurduqda göndərilən dəyərlər təkrar tətbiq olunur və siyahınız yox olur. Bəzi müştərilər hər qoşulmada interfeysi yenidən yaradır; digərləri sessiya boyu onu təkrar istifadə edir. İnterfeys indeksini Get-NetAdapter iki bağlantı arasında müqayisə edin və hansı davranışa sahib olduğunuzu biləcəksiniz.
Üç davamlı cavab var və onları üst-üstə yığmaq öz xətalarını yaradır. Bağlantıya xas DNS sonluğu plus NRPT qaydası yalnız daxili ad məkanını daxili həllediciyə göndərir və ictimai adları olduğu kimi buraxır. VPN bağlantısına tətbiq edilən Group Policy və ya MDM parametri DNS-i heç bir skript olmadan qoşulma vaxtında təyin edir. Bağlantı hadisəsinə reaksiya verən və əmri yenidən işlədən planlaşdırılmış tapşırıq küt variantdır, lakin işləyir və jurnal buraxır. DNS üçün bir sahib seçin və hansının olduğunu yazın.
Tək etiketli daxili adlara da sonluq axtarış siyahısı lazımdır. Set-DnsClientGlobalSetting -SuffixSearchList maşın genişindedir, ona görə Ethernet daxil olmaqla qutudaki hər adapter üçün həlli dəyişir. Obraza girməzdən əvvəl laboratoriya maşınında sınaqdan keçirin.
Həlli yoxlayın, yalnız parametri deyil
Adapterdə sadalanan həlledici yalnız dəyərin yazıldığını sübut edir. Nəzərdə tutulan serverdən birbaşa soruşun, sonra normal yoldan soruşun:
Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example
Bölünmə sizə nasazlığın harada olduğunu deyir. Birbaşa sorğu cavab verir və adi sorğu uğursuz olur: adapter parametri və ya sonluq siyahısı qüvvədə deyil. Hər ikisi uğursuz olur: həlledici tuneldən əlçatmazdır, ona görə DNS-ə yenidən toxunmazdan əvvəl marşrutlara və firewall qaydalarına baxın. Birbaşa sorğu uğursuz olur, adi sorğu isə başqa yerdən cavab verir: split DNS səhv konfiqurasiya edilib və daxili ada ictimai həlledici cavab verir, bu da rabitə problemi olmadan əvvəl siyasət problemidir.
Testi iki dəfə işlədin, biri qoşulmadan dərhal sonra, biri də ayrılma və yenidən qoşulmadan sonra, və Get-DnsClientServerAddress hər iki işə salmanın çıxışını müqayisə edin. Əgər göndərilən dəyər ikinci bağlantıda geri qayıdıbsa, üstələmə adapterlə birlikdə yaşayıb ölüb və yalnız əvvəlki bölmədəki NRPT və ya siyasət marşrutu saxlayacaq. Hər iki transkripti və qoşulma vaxt nişanlarını saxlayın; onlar sabit qalırmı sualını başqa tur düzəlişlərdən tez həll edir.