Не дозволяйте VPN змінювати DNS на попередньому попередньому перегляді розробника Windows 7/8


10

У мене є клієнт, який використовує VPN-з'єднання, однак він автоматично налаштовує мої налаштування DNS на неіснуючий DNS-сервер, тобто кожен дозвіл DNS вичерпується до тих пір, поки не буде застосована альтернатива, що дійсно уповільнює весь Інтернет-трафік.

Чи є спосіб, що я можу перешкодити застосуванню програми замінити мої настройки DNS (не вмикаючи UAC)?

Крім того, чи є спосіб, який я можу налаштувати якусь локальну маршрутизацію, яка говорить: "коли надходить запит DNS для IP-адреси A, реально використовувати IP-адресу B"?

Я використовую попередній перегляд Windows 8 Developer (але я підозрюю, що він повинен працювати так само, як Windows 7).

Дякую

Відповіді:


18

Я не вірю, що існує спосіб запобігти цьому, крім статичного призначення DNS-серверів у VPN-з'єднанні.

Щоб змінити порядок запиту DNS-серверів, потрібно мати змогу змінити порядок прив'язки інтерфейсу відповідно до https://superuser.com/a/314379/120267 , але це, мабуть, не впливає на VPN-з'єднання в моє особисте тестування на Windows 7; Я підтвердив, що моє VPN-з'єднання послідовно додається у верхню частину HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bindсписку, незалежно від налаштувань порядку прив’язки інтерфейсу.

Однак ви можете скинути зміни DNS після встановлення з'єднання VPN.

Збір інформації

Відкрийте командний рядок ( Start-> Run...-> cmd) і запустіть netsh interface ipv4 show dnsservers. Ви побачите вихід, подібний до наступного:

Configuration for interface "My VPN"
    Statically Configured DNS Servers:    11.22.33.44
                                          55.66.77.88
   ...

Configuration for interface "Local Network Connection"
    DNS servers configured through DHCP:  192.168.0.1
                                          192.168.0.2
    ...

Вам потрібна назва інтерфейсу для VPN та, можливо, перший DNS-сервер вашого зв'язку, що не є VPN . У цьому прикладі вони є My VPN та 192.168.0.1 відповідно.


Налаштування все це

Варіант 1: Вимкнути VPN DNS

Якщо припустити, що DNS-сервери VPN вашого VPN взагалі не потрібні, ви можете просто запустити наступне в командному рядку:

netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no

Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no

Якщо ви netsh interface ipv4 show dnsserversзнову запустите , ви побачите, що сервери DNS, пов’язані з VPN, видалено; DNS-сервери вашого не-VPN-з'єднання будуть використовуватися для вирішення імен хостів.


Варіант 2: Доповнення VPN DNS

Якщо вам потрібні сервери DNS вашого VPN для вирішення імен хостів внутрішньої мережі, у командному рядку можна виконати наступне:

netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no

Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no

У цьому випадку netsh interface ipv4 show dnsserversбуде показано, що перший DNS-сервер вашого зв’язку, який не є VPN, додано до верхньої частини списку DNS-серверів вашого VPN. Він буде використаний для вирішення імен хостів спочатку, і якщо це не вдалося, перейдіть до використання звичайних серверів DNS вашого VPN.


Ви герой, сер, дякую за обширну відповідь, це, здається, працює добре! Я спробував возитися з нетшем, але так далеко не вдалося дістатись ...
Wiebe Tijsma

1

У мене була подібна проблема; підключення до VPN-сервера замінить DNS моєї робочої станції (віддалений клієнт VPN), щоб локальна DNS локальної мережі була затемнена. Я детальніше описав проблему на стороні Stackoverflow, перш ніж було вказано, що я повинен був розмістити її тут.

Прочитавши цю нитку, очевидно, що переопрацювання неможливо запобігти за допомогою конфігурації клієнта OpenVPN. Моє рішення полягало в тому, щоб додати пакетний файл у каталог конфігурації OpenVPN, який виконується при формуванні з'єднання OpenVPN. Якщо файл OVPN називається company.ovpn, файл, який запускається при підключенні, повинен бути названий company_up.bat.

Я доповнив файл десь із версії, яку я розмістив на запитання в StackOverflow раніше сьогодні ввечері. Тепер це виглядає так:

1: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

1: Злом, щоб почекати пару секунд, перш ніж продовжувати. Остання версія (2.3) клієнта OpenVPN буде ігнорувати зміни DNS і зміни маршруту, якщо вони будуть виконані без затримки.

2: Встановіть DNS з'єднання VPN, щоб вказати на localhost. У мене є резолюція (я використовую SimpleDNS Plus ), що працює на localhost, який пересилає запити до домену компанії на сервер DNS компанії через VPN, а все інше на локальний DNS-сервер локальної мережі. Зауважте, що я не міг використати локальну роздільну мережу для передачі запитів для домену компанії до DNS компанії через VPN, оскільки кінцева точка VPN знаходиться на локальному сервері. Назва з'єднання ("Local Area Connection 4") була визначена в командному рядку через "ipconfig / all".

3: Сервер VPN компанії налаштований для маршрутизації всього вихідного трафіку через VPN, одночасно обмежуючи вихідні (до Інтернету) SSH-з'єднання. Це суперечило моєму документообігу, і я спочатку видаляю маршрут "0.0.0.0 мережева маска 0.0.0.0" ...

4: .. а потім я знову додаю маршрут 0.0.0.0/0, щоб вказати на локальний шлюз локальної мережі, і встановив його показник (вагу) до 1000 як загальний для всього трафіку, який не маршрутизується інакше.

5: Без "виходу 0" OpenVPN висилає попередження про помилку сценарію не вдалося (зі статусом виходу 1).

Сподіваємось, це корисно для когось. Він працює для мене досить добре (не потрібно вручну коригувати маршрут або DNS кожен раз, коли я відкриваю з'єднання).


0

Чи є спосіб, що я можу перешкодити застосуванню програми замінити мої настройки DNS (не вмикаючи UAC)?

Принаймні, для цього немає простого способу.

Крім того, чи є спосіб, який я можу налаштувати якусь локальну маршрутизацію, яка говорить: "коли надходить запит DNS для IP-адреси A, реально використовувати IP-адресу B"?

Ви можете додати записи до файлу хостів ( C:\Windows\System32\drivers\etc\hosts). Цей файл містить відображення імен хостів до IP-адрес і надається перевагу над запитами DNS.


Ну я знаю про файл хостів, але це все на основі IP-адреси, так що це не працює на жаль ...
Wiebe Tijsma,

О, гаразд, тепер я отримую ваше запитання. І ні, ви не можете перенаправляти запити з одного IP на інший.
Майкл

0

Чи можете ви перевірити стан прапорець "Використовувати шлюз за замовчуванням у віддаленій мережі". Це з’ясується, відкривши властивості підключення VPN та перейдіть на вкладку «Мережа» та виберіть TCP / IP v4 або TCP / IP V6, а потім виберіть властивості, а потім розширення. Це може бути ввімкнено, що може означати, що весь трафік в Інтернеті здійснюється через VPN-з'єднання. Це не завжди можливо відключити і все одно робити те, що ви хочете з VPN, але це може бути відключено, це може пришвидшити доступ до Інтернету.

Якщо це не допомагає, там є вкладка DNS, і ви можете спробувати додати туди свої DNS-сервери. Я спробував це, але сподіваюся, що ці налаштування замінять автоматичні настройки.


Це не перевірено, тому він не маршрутизує весь інтернет-трафік через VPN (коли ім'я остаточно вирішено, з'єднання досить швидко). Я спробував змінити налаштування DNS там, але, на жаль, це все автоматично змінюється на недійсні налаштування DNS, коли я перезапускаю з'єднання :(
Wiebe Tijsma,

Якщо ви не можете зупинити зміну DNS, чи можна змусити її швидше вийти з роботи, використовуючи брандмауер для блокування запитів DNS на цю адресу?
sgmoore

0

На жаль, netsh не може видалити dns-сервери, призначені dhcp. Але це можна зробити, очистивши параметр DhcpNameServer в

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

ключ реєстру.


0

Станом на 2017 рік, це тепер можливо, якщо його базується на OpenVPN

Додайте рядок до файлу конфігурації вашого клієнта

pull-filter ігнорує "dhcp-опція DNS"

і він буде ігнорувати всі висунуті конфігураційні лінії, які починаються з цитованого тексту.

Три ключові слова дії є accept ignore reject. Я не знайшов випадку використання для відхилення.


0

Я просто видаляю цю опцію з конфігурації VPN клієнта

setenv opt block-out-dns

Це вирішило це питання

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.