Openvpn клиент, форс DNS сервер


10

В нашей конфигурации Linux Ubuntu есть DNS-сервер (Bind 9).
И resolv.confимеет свои

  nameserver 127.0.0.1

При использовании openvpnклиента в этом Linux сервер имен не изменяется (сервером VPN), но я хотел бы установить его - только во время сеанса VPN - на другой конкретный сервер DNS x.y.z.t, изменив конфигурацию клиента openvpn.

Затем, когда openvpnсессия заканчивается, сервер имен должен вернуться к 127.0.0.1.

Есть ли «чистый» способ (то есть строка в файле конфигурации клиента openvpn) сделать это?

(Примечание. Конфигурация VPN-сервера не может быть изменена).

Ответы:


17

После более поискового поиска, может найти ответ - ниже, если это может кому-то помочь.

  • установить resolvconf, который может сохранить и восстановить resolv.confфайл конфигурации
  • добавить скрипт для запуска openvpn , in /usr/share/openvpn, named update-resolv-conf. Скрипт определяет, что должно быть новым resolv.conf, и как его восстановить (см. Ссылку ниже)
  • Добавить

эти строки

  script-security 2
  up /usr/share/openvpn/update-resolv-conf
  down /usr/share/openvpn/update-resolv-conf

в конфигурационном файле клиента openvpn.

Читайте в этой вики для получения дополнительной информации.


6
Более новые версии OpenVPN включают этот сценарий вместе с установкой. Вместо ручной загрузки и установки в /usr/share/openvpn/update-resolv-conf, вы можете найти его предварительно установленным в /etc/openvpn/update-resolv-conf.
Нэйт Лэмптон

Какая версия OpenVPN начала включать этот файл?
lanoxx

1
Немного опоздал на вечеринку здесь, но я использую, 2.4.6и она была установлена ​​для меня
Рошан Бхумбра

1

Подумайте об использовании route-up/ route-downscripts на вашем клиенте, чтобы изменить свою конфигурацию при настройке соединения, как вы считаете нужным. Смотрите документацию OpenVPN, чтобы узнать, как это настроить и какие переменные вы можете использовать в этих скриптах.


+1, интересно и полезно. Решение resolvconf через вверх и вниз (выше или ниже деп. По рейтингу ..), тем не менее, является более точным и, по-моему, более чистым.
Кольцо Ø

@ ring0 Я бы посоветовал использовать route-upвместо того, upчтобы минимизировать условия гонки. Когда upскрипт выполняется, соединение еще не установлено, и у вас нет возможности запросить удаленный преобразователь, который вы устанавливаете. Если вы запускаете клиент OpenVPN в ситуации, когда настройка соединения не будет завершена, вы переводите свой распознаватель в возможно неработающее состояние на длительный период времени. Подробности смотрите в разделе «Порядок выполнения скриптов» на справочной странице OpenVPN .
the-wabbit

Я провел несколько тестов, и сценарий up вызывается правильно, когда достигается «последовательность инициализации завершена», а не раньше. Кстати, не может найти «маршрут вниз» в человеке.
Кольцо Ø

1

Это была полезная информация, чтобы помочь мне решить эту проблему.

Я пользователь arch linux, и то, что я видел, это то, что когда клиент Linux используется с Access Server, он не может изменить настройки DNS на рассматриваемом клиенте, не разрешая хост, так как он стоит на OPEN VPN Documentation

Я создал скрипт, который решает проблему и с парой дополнительных параметров обрабатывает соединения openvpn через командную строку.

https://gist.github.com/android10/ee5c3e93dbcf9b7b31e6ee768cbfd477

Вот основная команда, выполняемая для соединения:

  nohup openvpn --config $OVPN_FILE_PATH --askpass $OVPN_PRIVATE_KEY_FILE_PATH \
  --script-security 2 \
  --setenv PATH '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
  --up /etc/openvpn/scripts/update-systemd-resolved \
  --down /etc/openvpn/scripts/update-systemd-resolved \
  --down-pre \
  &>/dev/null &

Любая обратная связь более чем ценится.


-2

echo "nameserver = wxyz"> /etc/resolv.conf
echo "nameserver = 127.0.0.1" >> /etc/resolv.conf


2
Это кажется неточным (подумайте о пути поиска DNS и постоянстве сервера имен VPN), но также неясно, куда вы хотите, чтобы он это поместил.
Сокол Момот

Между сервером имен и IP-адресом должен быть пробел.
Лоренцог
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.