Windows VPN қосылымы DNS серверлерін Параметрлерде өңдейтін профильде сақтамайды. Туннель көтерілгенде клиент шлюзбен IP конфигурациясын келіседі, шлюз шешушілер тізімін жібереді, ал Windows оны туннель адаптеріне қолданады. Бұл адаптер Wi-Fi немесе Ethernet-тен бөлек интерфейс, ал тізім интерфейске тиесілі, профильге емес. Мәнді қай нысан ұстайтынын білгеннен кейін оны PowerShell-де қайта жазу бір команда; қайта жазуды қайта қосылудан алып өткізу — шешім қажет ететін бөлік.

Мекенжайды қай нысан ұстайды

RAS туннель адаптерін қосылым сәтті болғанда жасайды, ал қосылым үзілгенде жояды. ipconfig /all ішінде көрінетін DNS серверлері сол конфигурация алмасуы кезінде, IPv4 және IPv6 мекенжайлары мен маршруттардың қасында келеді. Мән интерфейске байланғандықтан, Set-DnsClientServerAddress қосылым бар болғанша ғана бар нәрсеге жазады.

Осы бір факт VPN DNS-інің айналасындағы шатасудың көбін түсіндіреді. Профильді ажыратылған күйде де қарауға болады, бірақ нұсқайтын интерфейс жоқ, сондықтан cmdlet-ті VPN бүркеншік атына шақыратын кіру скрипті біреу қосылмай тұрып сәтсіз аяқталады. Ол сонымен қатар кері қайтқандай көрінетін өзгерісті де түсіндіреді: ештеңе қайтпады, интерфейс жойылып, шлюз жіберген мәндермен қайта құрылды.

DNS-ке тимес бұрын бүркеншік атты табыңыз

Профиль атауы мен интерфейс бүркеншік аты әдетте бір жол, бірақ олар бір нысан емес. Get-VpnConnection профильдерді тізімдейді; Get-NetAdapter Windows-тың нақты бар интерфейстерін тізімдейді. DNS cmdlet-тері екіншісін қалайды, және бұл екеуі адамдар күткеннен жиірек ажырайды, әсіресе клиент адаптер атауына "(RAS)" сияқты сипаттама қосқан кезде.

Профиль болмаса, PowerShell жергілікті жазба жасай алады. Туннель түрі мен аутентификация шлюз ұсынатынға сай болуы керек, өйткені сәйкессіздік жасау кезінде емес, қосылу кезінде шығады:

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

Бір рет қосылып, кез келген DNS пәрменін жазудан бұрын нақты бүркеншік атты оқыңыз:

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

Қайта жазуды дұрыс ретпен қолданыңыз

Рет синтаксистен маңыздырақ. Адаптер көтерілген болуы, бүркеншік ат шешілуі және тіркелгіге интерфейс параметрлерін өзгертуге рұқсат берілуі керек. Әр пайдаланушыға арналған қосылым әдетте кірген пайдаланушының өзгерісін қабылдайды; -AllUserConnection арқылы жасалған барлық пайдаланушылар қосылымы әдетте көтерілген shell қажет етеді.

cmdlet-тің өзі бір жол, Microsoft-тың Set-DnsClientServerAddress анықтамалығында құжатталған:

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

Сәтсіздіктің екі түрін бір қарағанда тануға болады. Қате бүркеншік ат cmdlet-тен қате шығарады, және бұл жақсы нәтиже, өйткені үнсіздік одан жаман болар еді. Дұрыс cmdlet көрінетін әсерсіз қалса, әдетте қате адаптерді қарап тұрғаныңызды білдіреді: басқа клиенттен қалған туннель адаптерін, сипаттамасы ұқсас физикалық желілік картаны немесе оқшауланған ортадағы желілік құрал жасаған екінші виртуалды адаптерді.

Неге қайта қосылу өзгерісті жоя алады

Қайта жазу интерфейстің бір данасына тиесілі. Клиент адаптерді бұзып, келесі қосылымда қайта тұрғызғанда, жіберілген мәндер қайта қолданылады және тізіміңіз жоғалады. Кейбір клиенттер интерфейсті әр қосылымда қайта жасайды; басқалары оны сессия бойы қайта пайдаланады. Get-NetAdapter ішіндегі интерфейс индексін екі қосылым арасында салыстырыңыз, сонда қандай мінез-құлық бар екенін білесіз.

Үш тұрақты жауап бар, ал оларды бірінің үстіне бірін қою өз ақауларын туғызады. Қосылымға тән DNS жұрнағы және NRPT ережесі тек ішкі атаулар кеңістігін ішкі шешушіге жібереді, ал жария атауларды тыныш қалдырады. VPN қосылымына қолданылған топтық саясат немесе MDM параметрі DNS-ті қосылу кезінде ешқандай скриптсіз орнатады. Қосылым оқиғасына әрекет етіп, cmdlet-ті қайта іске қосатын жоспарланған тапсырма өрескел нұсқа, бірақ жұмыс істейді және журнал қалдырады. DNS үшін бір иесін таңдап, қайсысы екенін жазып қойыңыз.

Бір белгісі бар ішкі атауларға жұрнақ іздеу тізімі де қажет. Set-DnsClientGlobalSetting -SuffixSearchList бүкіл машинаға қатысты, сондықтан компьютердегі әр адаптер үшін, Ethernet-ті қоса алғанда, шешімді өзгертеді. Бейнеге кірмес бұрын зертханалық машинада сынап көріңіз.

Тек параметрді емес, шешімді де тексеріңіз

Адаптерде тізілген шешуші тек мән жазылғанын дәлелдейді. Мақсатты серверден тікелей сұраңыз, содан кейін әдеттегі жолмен сұраңыз:

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

Бұл айырмашылық ақау қай жерде екенін айтады. Тікелей сұрау жауап береді, әдеттегі сұрау сәтсіз аяқталады: адаптер параметрі немесе жұрнақ тізімі күшінде емес. Екеуі де сәтсіз: шешушіге туннель арқылы жету мүмкін емес, сондықтан DNS-ке қайта тимес бұрын маршруттар мен қауіпсіздік қабырғасы ережелерін қараңыз. Тікелей сұрау сәтсіз аяқталып, әдеттегі сұрау басқа жерден жауап берсе: бөлінген DNS дұрыс конфигурацияланбаған және ішкі атауға жария шешуші жауап беріп тұр, бұл қосылым мәселесінен бұрын саясат мәселесі.

Тестті екі рет іске қосыңыз, біреуін қосылғаннан кейін бірден, екіншісін ажыратып қайта қосқаннан кейін, және екі іске қосудың Get-DnsClientServerAddress шығысын салыстырыңыз. Егер жіберілген мән екінші қосылымда қайта пайда болса, қайта жазу адаптермен бірге өмір сүріп, бірге өлді, ал тек алдыңғы бөлімдегі NRPT немесе саясат маршруты ғана төтеп береді. Екі жазбаны және қосылу уақыт белгілерін сақтаңыз; олар сақтала ма деген сұрақты тағы бір өңдеу айналымынан жылдам шешеді.

Қатысты мақалалар