Настройка DNS-серверов с помощью файла конфигурации клиента OpenVPN

16

Как настроить DNS-серверы на клиенте, используя только конфигурацию клиента. Мой клиент - машина Windows, и я хочу изменить DNS-серверы, когда клиент подключается, и вернуться к исходной конфигурации, когда я отключаюсь от VPN.

Вся информация, которую я нашел до сих пор, относится к передаче конфигурации DNS клиенту с помощью конфигурации сервера, но в этом случае я не могу изменить конфигурацию сервера и в настоящее время я делаю это вручную каждый раз, когда подключаюсь к VPN. Опция конфигурации openvpn для установки DNS-серверов локальных машин на время соединения была бы полезной.

Фахад Юсуф
источник

Ответы:

3

Вы можете использовать пакетный скрипт, чтобы сделать это, что-то вроде следующего. Предполагается, что ваши домашние DNS-серверы 1.1.1.1 и 2.2.2.2, а ваши VPN-DNS-серверы 8.8.8.8 9.9.9.9:

VPN-connect.bat:

netsh interface ip set dns "Local Area Connection" static 8.8.8.8

netsh interface ip add dns "Local Area Connection" 9.9.9.9

VPN-disconnect.bat

netsh interface ip set dns "Local Area Connection" static 1.1.1.1

netsh interface ip add dns "Local Area Connection" 2.2.2.2

Я собирался включить в эти сценарии методы подключения и отключения, однако в OpenVPN не вижу возможности отключения через командную строку. Если вы хотите автоматизировать соединение, это должно работать:

C:\Program Files\bin\openvpn.exe C:\Program Files\conf\client.ovpn

Андрей Белый
источник
15

Вы можете добавить следующее в файл конфигурации клиента.

dhcp-option DNS <dns_server_ip_address>

На стороне сервера это было бы:

push "dhcp-option DNS <dns_server_ip_address>"

Кажется, он использует dhcp-optionобе стороны. Вы можете сделать то же самое с route.

brunoqc
источник
4
Это не сработало для меня, хотя кажется, что должно. Опция не была в сгенерированном client.ovpn. Когда я добавляю это, это все еще не работает. Запуск от Asus RT-N66U со стоковой прошивкой 3.0.0.4.376_3861
Shea
2
Я добавил это в свой файл .ovpn как раз перед тегом <ca>, и это сработало великолепно! Спасибо! Я проверил это на своей машине с Windows с OpenVPN 2.4.4 Windows версии 6.2
Майкл Каргл
6

Очевидно, существует проблема с неправильным порядком привязки в Windows, по крайней мере, в Windows 2000 / XP / 7. Это приведет к тому, что клиенты Windows OpenVPN будут использовать настройки DNS сетевого адаптера по умолчанию, а не настройки адаптера VPN.

Чтобы это исправить, вам нужно разместить устройство VPN TUN или TAP над адаптером локальной сети в порядке привязки:

  1. Определите ваше VPN-устройство, посмотрев на выход из ipconfig. Для меня это было «Подключение по локальной сети 2». Запомните свой IP-адрес для этого адаптера.
  2. Откройте regedit.exe и найдите ключ, под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesкоторым совпадает IP-адрес вашего VPN-адаптера. Запомните GUID для этого адаптера.
  3. Перейти HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkageи дважды щелкните на Bind. Он будет содержать список идентификаторов GUID для адаптеров. Вырежьте и вставьте строку, соответствующую GUID вашего VPN-устройства, в верхнюю часть списка и сохраните список.

Это приведет к использованию записей DNS для вашего VPN-устройства (и только тогда, когда VPN-соединение активно). Вы можете установить их в соответствии с ответом @brunoqc. Пока вы работаете над этим, вам, вероятно, следует также добавить опцию openvpn block-outside-dns, чтобы DNS-запросы не просачивались.

Этот ответ основан на этом очень полезном сообщении в блоге .

jtbr
источник
Это сработало довольно хорошо! Спасибо, сэр, за написание этого руководства
SeriousM
3

В дополнение к любому из двух ниже:

dhcp-option DNS <dns_server_ip_address>          (add to client config)

или

push "dhcp-option DNS <dns_server_ip_address>"   (add to server config)

Добавьте их также в конфигурацию клиента, чтобы заставить Windows использовать настроенный DNS:

register-dns
block-outside-dns

Первая заставляет Windows отдавать предпочтение настроенному DNS-серверу перед любым другим, который он может получить от DHCP. Второй предотвращает утечку DNS на любой DNS-сервер, кроме настроенного.

Герцог нукем
источник