Я использую Ubuntu xenial 16.04
Мы используем openvpn для подключения к виртуальному частному облаку. Это облако имеет свой собственный DNS-сервер (как и наш локальный маршрут - дом или офис).
Когда я подключаюсь к VPN, все IP-адреса в этой сети доступны, но я не могу получить ни одного по имени хоста. Причина проста: файл resolv.conf по-прежнему показывает сервер имен моего локального офиса. Если я вручную перезаписываю resolv.conf, чтобы иметь правильный сервер имен, все хорошо.
Итак, как я могу заставить его автоматически перенастроить resolv.conf при подключении к VPN?
Могу ли я подключиться к системному событию и выполнить скрипт?
--register-dns
вариант? В качестве альтернативы есть параметры на стороне клиента, которые вы можете установить, такие как dhcp-options (обратная сторона инструкций здесь openvpn.net/index.php/open-source/documentation/howto.html#dhcp )Ответы:
В пакете OpenVPN есть сценарий для этого
/etc/openvpn/update-resolv-conf
. Вам необходимо настроить его с помощью:Это приведет к получению адресов DNS-серверов из
dhcp-option DNS
параметров, переданных одноранговым сервером / сервером OpenVPN, и выполнитresolvconf
соответствующую настройку . Это обрабатываетdhcp-option DOMAIN
также.Однако он не идеален, потому что это приведет к добавлению этих серверов имен в список существующих серверов имен вместо перезаписи списка серверов имен. Если вы используете можно использовать для перезаписи конфигурации DNS вместо preprending к нему.
openresolv
-x
Если вы используете
systemd-resolved
, вы можете использовать ,/etc/openvpn/update-systemd-resolved
какие крючки вsystemd-revolved
вместоresolvconf
.На Debian этот скрипт находится в
openvpn-systemd-resolved
.источник
script-security 2
или запуститьopenvpn
с помощью--script-security 2
Вот решение, которое я придумал: есть переключатель, который позволяет вам запускать скрипт, когда туннель запущен и работает. Я использую этот переключатель, чтобы существенно перезаписать файл resolv.conf тем, который, как я знаю, является правильным. Это полный взлом, я знаю.
скрипт (reset-dns):
Кроме того, для тех, кто говорит "OMG! Вы запускаете тот туннель как root!" Это не будет работать по-другому; еще до моего взлома DNS.
Я определенно открыт для лучшего пути. Сетевой менеджер для Ubuntu просто не будет работать. Я неоднократно обрезал билеты на Ubuntu
источник