Разделителната способност на DNS име не работи с активна VPN връзка в Windows 10

В Windows 10 с активна VPN връзка в режим Принудително тунелиране (опцията „Използване на шлюза по подразбиране в отдалечена мрежа“ е активирана), DNS сървърите и наставки, конфигурирани за VPN връзки, се използват за разрешаване на имена чрез DNS услугата. Съответно губите способността да разрешавате DNS имена в локалната си мрежа и да използвате Интернет чрез вътрешна LAN.

В същото време с Windows 10 можете да пингирате към ресурси във вашата локална мрежа (ping към вашия шлюз, съседен компютър или принтер), но по име те не са достъпни, тъй като Windows се опитва да разреши имена в локалната мрежа чрез DNS сървъра, посочен за VPN връзка.

В Google намерих препоръки за деактивиране на IPv6 на локална (LAN) връзка и това работи (ако искате да използвате Force-Tunneling).

Ако режимът се използва за VPN връзка Разделяне на тунели (полето „Използване на шлюза по подразбиране в отдалечената мрежа“ е отметнато), можете да използвате интернет през вашата локална мрежа, но не можете да разрешите DNS адреси в отдалечена VPN мрежа (в този случай деактивирането на IPv6 не помага).

Трябва да разберете, че Windows изпраща DNS заявка от мрежовия интерфейс, който има най-висок приоритет (по-ниска стойност на показателя на интерфейса). Да приемем, че вашата VPN връзка работи в режим на разделяне на тунели (искате да използвате интернет през вашата LAN и корпоративните ресурси чрез VPN връзка).

Използвайте PowerShell за проверка на показателите за всички мрежови интерфейси:

Get-NetIPInterface | Интерфейс за сортиране на обект

Снимката по-горе показва, че локалната Ethernet връзка има по-нисък показател (25) от VPN интерфейса (в този пример 100). Съответно DNS трафикът преминава през интерфейс с по-ниска метрична стойност. Това означава, че вашите DNS заявки се изпращат до вашия локален DNS сървър, а не към VPN връзката на DNS сървъра. Т.е. в тази конфигурация не можете да разрешавате адреси във външна VPN мрежа.

Освен това е необходимо да се спомене новата функция на DNS клиента в Windows 8.1 и Windows 10. В тези версии на ОС беше добавена DNS резолюционна функционалност под името Интелигентна разделителна способност за име (SMHNR). Когато използвате SMHNR, системата по подразбиране изпраща DNS заявки до всички DNS сървъри, известни на системата паралелно и използва отговора, който дойде по-бързо. Това не е безопасно, защото потенциално външните DNS сървъри (които са посочени във вашата VPN връзка) могат да виждат вашите DNS заявки (изтичане на вашите DNS заявки навън). Можете да деактивирате SMHNR в Windows 10 с помощта на групови правила:

Конфигурация на компютъра -> Административни шаблони -> Мрежа -> DNS клиент-> Изключете интелигентната мулти-домашна резолюция на името = Разрешено.

Или чрез команди (за Windows 8.1):

Set-ItemProperty -Path "HKLM: \ Софтуер \ Политики \ Microsoft \ Windows NT \ DNSClient" -Име DisableSmartNameResolution -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Services \ Dnscache \ Parameters" -Name DisableParallelAandAAAA -Value 1 -Type DWord

В Windows 10 Creators Update (1709) и по-нова версия, DNS заявките се изпращат до всички известни DNS сървъри по ред, а не успоредно. Можете да увеличите приоритета на определен DNS, ако намалите неговия показател..

Съответно промяната на показателя ще ви позволи да изпращате DNS заявки през този мрежов интерфейс (LAN или VPN), разделителната способност на името, чрез който е по-приоритетен за вас.

И така, колкото по-малка е стойността на метриката на интерфейса, толкова по-висок е приоритетът на такава връзка. Windows излага IPv4 показателите на мрежовите интерфейси автоматично, в зависимост от скоростта и вида им. Например за LAN връзка със скорост> 200 Mbps, стойността на показателя на интерфейса е 10, а за безжична Wi-FI връзка със скорост 50-80 Mbps, показателят е 50 (вижте таблицата https://support.microsoft.com/en-us/help/ 299540 / обяснение-на-автоматичното-метрично-характеристика-за-ipv4-маршрути).

Можете да промените показателя на интерфейса чрез графичния интерфейс, PowerShell или командата netsh.

Например, искате DNS заявки да се изпращат през VPN връзка. Трябва да увеличите показателите на вашите локални LAN връзки, така че да станат повече от 100 (в моя пример).

Отворете Контролен панел -> Мрежа и Интернет -> Мрежови връзки, отворете свойствата на вашата Ethernet връзка, изберете свойствата на протокола TCP / IPv4, отидете на „Разширени TCP / IP настройки". Премахнете отметката от „Автоматично задаване на показатели”И променете показателя на интерфейса на 120.

Същото може да се направи и с команди за управление на мрежата PowerShell (използвайте индекса на вашия LAN интерфейс, получен с помощта на командлета Get-NetIPInterface):

Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120

Или netsh (трябва да посочите името на вашата LAN връзка)

netsh int ip set interface = = Ethernet 3 "metric = 120

По същия начин можете да намалите метричната стойност в свойствата на VPN връзката..

Можете също да промените настройките на вашата VPN връзка, като промените режима на SplitTunneling и посочите DNS суфикса за свързване с PowerShell:

Get-VpnConnection
Set-VpnConnection -Name "VPN" -SplitTunneling $ True
Set-VpnConnection -Name "VPN" -DnsSuffix yourdomain.com