Сбои маршрутизации DNS для соединений VPN на Ubuntu 16.04 Out-of-the-Box

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


Проблема

Я в большой степени полагаюсь на OpenVPN для всех моих серверов. После того, как я обновляющий до Ubuntu 16.04.1 от 14.04.5, я остановил способность получить доступ к любым веб-сайтам и большинству сервисов.

Мои серверы OpenVPN, продолженные к туннельному трафику очень хорошо для Mac OS X, Windows и клиентов Ubuntu 12.04/14.04.

Системные детали

Мой out-of-the-box resolv.conf файл был похож:

nameserver 68.105.28.16
nameserver 68.105.29.16

Мои маршруты указали, что я направлял через маршрутизатор в 192.168.0.1 и был присвоен динамический IP-адрес 192.168.0.3. Показанный командами:

ip r
ip a

Мой трафик обычно функционировал бы (Интернет, XMCP, IRC, и т.д....), пока я не соединился со своим Сервером OpenVPN через терминал с командой

sudo openvpn ~/client.ovpn

После того, как соединенный, это сразу остановит все движение.

Новый адаптер (tun0) был создан для этого соединения. Показанный командой:

ip a

Соединение с Wireshark показало десятки вызовов DNS, нацеленных на мои исходные серверы DNS, даже при том, что конфигурация была установлена туннелировать весь трафик через мои серверы OpenVPN.

Мое решение

После целой недели чтения многих десятков отчетов об ошибках, сообщений в блоге и учебных руководств, я все еще не имел никакого успеха. Но, это - проблема DNS, и DNS управляет resolv.

Наконец, я наткнулся на эту библиотеку GitHub, и моя проблема была разрешена.

masterkorp/openvpn-update-resolv-conf

Для реализации этих сценариев я клонировал repo в свой корневой каталог с:

git clone https://github.com/masterkorp/openvpn-update-resolv-conf.git

Я скопировал те сценарии в/etc/openvpn с:

sudo chmod +x *.sh && sudo mv *.sh /etc/openvpn

Затем, я установил openresolv, nscd, и развязал с:

sudo apt-get install openresolv nscd unbound

Затем я отредактировал свой Клиентский Конфигурационный файл OpenVPN (*.ovpn или *.conf) и добавил следующие строки в конце конфигурационных директив, но перед тегом "CA" (Ваши встроенные сертификаты, если таковые имеются):

script-security 2
up "/etc/openvpn/update-resolv-conf.sh /etc/openvpn/update-systemd-network.sh"
down "/etc/openvpn/update-resolv-conf.sh /etc/openvpn/update-systemd-network.sh"

Это позволило мне подключать успешно к VPN и туннелю свой трафик.

Мой resolv.conf файл теперь похож:

# Generated by resolvconf
nameserver 127.0.0.1
nameserver 127.0.1.1

Обсуждение и потребность в лучшем решении

Кажется мне, что записи DNS Ubuntu правильно не обновляются. Цель вышеупомянутого кода и новых записей состоит в том, чтобы переписать неправильно функционирующий процесс обновления внутренних записей сервера DNS. Я прочитал некоторые отчеты об ошибках на Панели запуска, которые предполагают, что 16.04 полагается на некоторый старый код обновления управления сетью, который был написан и работающий в 14,04 и правильно никогда не перемещался в новые 16,04 платформ.

Должен быть лучший способ обработать этот процесс. Мне не нравится идея, что я должен использовать пользовательские сценарии для исправления проблематичного поведения ОС.

У кого-либо есть понимание в этом?

4
задан 24 September 2016 в 13:03

1 ответ

Установите свои серверы DNS в/etc/resolv.conf, затем пробуют это в терминале как корень:

chattr +i/etc/resolv.conf

затем перезагрузка

-3
ответ дан 17 November 2019 в 09:07

Другие вопросы по тегам:

Похожие вопросы: