15

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

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

3 ответа3

11

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

dhcp-option DNS <dns_server_ip_address>

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

push "dhcp-option DNS <dns_server_ip_address>"

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

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-запросы не просачивались.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .