Когда я подключаюсь к сети VPN через Gnome Network-manager, я теряю разрешение DNS и на практике не могу получить доступ к ресурсам внутри сети VPN или за ее пределами.
Когда я использовал Ubuntu 16.04 и использовал VPN, файл «/etc/resolv.conf/
» содержал DNS-серверы сети (VPN), которую я подключил. Теперь он всегда содержит следующие записи:
nameserver 127.0.0.53
search myprovider.com
Из того, что я понял 127.0.0.53
, является адрес заглушки DNS, используемый system-resolved
.
Я подозреваю, что это ошибка, потому что VPN работал нормально на Ubuntu 16.04. Можно ли как-то настроить DNS-серверы моей сети, когда я использую службу VPN?
Обновление:
Я попытался подключиться к сети OpenVPN с файлом конфигурации, прикрепленным в конце сообщения, но я получаю следующую ошибку:
Authenticate/Decrypt packet error: cipher final failed
Я проверил, что сервер использует lzo сжатие, и я также включил его. Соединение остается активным, но я не могу перейти ни на одну страницу внутри или за пределами VPN.
В файле конфигурации, указанном ниже, я включил решения, опубликованные в ответах
client
dev tun
proto udp
remote openvpn.bibsys.no 1194
remote my-server-2 1194
resolv-retry infinite
nobind
user myuser
group myuser
persist-key
persist-tun
ca ca-cert.pem
cert openvpn.crt
key openvpn.key
cipher AES-256-CBC
comp-lzo yes
script-security 2
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved
down-pre
Я нашел решение на этом сообщении в блоге. В то время как существует два упомянутые решения, я предпочитаю использовать второй, потому что это означает, что мой DNS установлен сервером OpenVPN (первые средства решения, я использую те же серверы DNS, подключен ли я к серверу OpenVPN).
Короче говоря:
sudo mkdir -p /etc/openvpn/scripts
sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved
Затем отредактируйте свой клиентский файл OpenVPN (например, client.ovpn) путем изменения/вниз сценарии к:
script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved
(Я прокомментировал оригинал/вниз настройки).
Проблема
Файл /etc/resolv.conf
не становится обновленным /etc/openvpn/update-resolv-conf
сценарий, потому что resolvconf
не установлен по умолчанию на человечности 18.04.
На самом деле одна из первых строк того сценария проверяет на /sbin/resolvconf
исполняемый файл:
[ -x /sbin/resolvconf ] || exit 0
Установка resolvconf через apt-get
не решение как /etc/openvpn/update-resolv-conf
сценарий обновляет /etc/resolv.conf
файл с продвинутой записью DNS, но устройством бочки, кажется, игнорирует его.
Решение
Использование Ubuntu 18.04 systemd-resolved
, таким образом, все, что необходимо сделать, установить openvpn сценарий помощника для systemd-resolved
через
sudo apt install openvpn-systemd-resolved
Обновите Ваш config.ovpn
файл, добавляющий эти строки:
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
Это вместо того, чтобы добавить вверх и вниз /etc/openvpn/update-resolv-conf
к конференции
Для предотвращения Утечки DNS необходимо добавить эту строку в конец config.ovpn
файл (согласно этому systemd выпускают комментарий):
dhcp-option DOMAIN-ROUTE .
На меня влияют также. В моем случае я использую OpenVPN с внутренним сервером имен (который является в VPN). Это работало до Ubuntu 17.10 (с "хостами: файлы DNS" в/etc/nsswitch.conf).
/etc/resolv.conf был обновлен правильно openvpn сценариями (через вызовы к/etc/openvpn/update-resolv-conf в openvpn клиентском конфигурационном файле).
Однако определение имен для хостов в VPN не работало больше (или по крайней мере эпизодически... Я предполагаю, что локальный кэш DNS выбирал имена, но после довольно долгого времени).
То, что, кажется, помогает, или даже решает вопрос (хотя это является слишком ранним для высказывания), должно установить ниже пакета:
sudo способная установка openvpn-systemd-resolved
Через несколько дней у меня будет больше опыта, устраняет ли это мою проблему или нет.
Если на Вас влияют также, попробуйте это и добавьте комментарии!
Удачи,
Michael.
На самом деле существует намного более легкое решение этой проблемы. Проблема с трафиком DNS и как Ubuntu 18 управляет этим. IP по умолчанию передача отключена, который является тем, в чем OpenVPN нуждается для обеспечения надлежащих сетей. Все, что необходимо сделать, выполняется следующая команда:
sudo nano /etc/sysctl.conf
После того как Вам открыли этот файл, ищете строку, которая содержит net.ipv4.ip_forward
. Если эта строка прокомментирована, удалите знак # впереди строки (если это не прокомментировано затем, что у Вас есть другая проблема). Сохраните файл и затем перезапустите свой экземпляр сервера OpenVPN.
Эта фиксация не требует никаких модификаций клиенту или коду OpenVPN после обновления Ubuntu 18. Протестированная и подтвержденная работа.
Однако это, очевидно, требует, чтобы можно было администрировать сервер. И к сожалению, ошибка существует для многих, кто просто соединяется с 18,04 с сервером OpenVPN, который администрируем кем-то еще...
Протестированный на Ubuntu 18.04 13 сентября 2018
Существует другой полезные команды для установки то, в чем Вы нуждаетесь через командную строку. Но в моем случае можно управлять соединением VPN и с командной строкой и с GUI.
sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --
ifname --
необходимое по умолчанию, но ни на что не влияет
sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes
never-default
не должен использовать удаленный шлюз в качестве маршрута по умолчанию
И намного более заинтересованный последний штрих:
nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'
Впоследствии можно управлять vpn с GUI или использованием после команд:
sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com