Когда я подключаюсь к сети 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
источник
resolvectl status
и,resolvectl help
чтобы найти свое конкретное решение.Ответы:
Я нашел решение в этом сообщении в блоге . Хотя упомянуто два решения, я предпочитаю использовать второе, потому что оно означает, что мой 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), изменив сценарии вверх / вниз на:
(Я закомментировал исходные настройки вверх / вниз).
источник
config.ovpn
не "найден" - это файл конфигурации клиента, используемый для подключения. Вы либо генерируете его, либо он выдается вам вашим провайдером OpenVPN (и он может не называтьсяconfig.ovpn
- он может называться как угодноclient.ovpn
).WARNING: Failed running command (--up/--down): external program fork failed
проблема
Файл
/etc/resolv.conf
не обновляется/etc/openvpn/update-resolv-conf
сценарием, посколькуresolvconf
по умолчанию не установлен в Ubuntu 18.04.Фактически, одна из первых строк этого скрипта проверяет наличие
/sbin/resolvconf
исполняемого файла:Установка resolvconf через
apt-get
не является решением, так как/etc/openvpn/update-resolv-conf
скрипт обновляет/etc/resolv.conf
файл с введенной записью DNS, но устройство tun, кажется, игнорирует его.Решение
Ubuntu 18.04 использует
systemd-resolved
, поэтому все, что вам нужно сделать, это установить вспомогательный скрипт openvpn дляsystemd-resolved
черезили с этими инструкциями GitHub
Обновите ваш
config.ovpn
файл, добавив следующие строки:Это вместо того, чтобы добавить и вниз
/etc/openvpn/update-resolv-conf
к конф.Чтобы предотвратить утечку DNS, вы должны добавить эту строку в конец
config.ovpn
файла (согласно этому комментарию к выпуску systemd ):источник
script-security 2
все еще необходим перед линиями вверх / вниз, в противном случае программа падает с ошибкой (OpenVPN 2.4.4)script-security 2
не было необходимости. Это возможно, потому что я запускаю клиент openvpn от имени пользователя root (с помощью sudo)sudo apt-get install network-manager-openvpn-gnome
После этого вы сможете импортировать файлы конфигурации .ovpn в сетевой менеджер gnome. askubuntu.com/questions/187511/… Интерфейс менялся с течением времени, вы должны найти его в настройках-> сеть-> vpnНа самом деле, есть гораздо более простое решение этой проблемы. Проблема в DNS-трафике и в том, как это делает Ubuntu 18. По умолчанию переадресация IP отключена, что необходимо OpenVPN для обеспечения правильной работы сети. Все, что вам нужно сделать, это запустить следующую команду:
Когда вы откроете этот файл, найдите строку, в которой он содержится
net.ipv4.ip_forward
. Если эта строка закомментирована, удалите знак # в начале строки (если она не закомментирована, у вас есть другая проблема). Сохраните файл и перезапустите ваш экземпляр сервера OpenVPN.Это исправление не требует внесения каких-либо изменений в код клиента или OpenVPN после обновления до Ubuntu 18. Протестировано и подтверждено, что оно работает.
Однако это, очевидно, требует от вас администрирования сервера. И, к сожалению, ошибка существует для многих, кто просто подключается с 18.04 к серверу OpenVPN, который администрируется кем-то другим ...
источник
Есть еще полезные команды для настройки того, что вам нужно через командную строку. Но в моем случае вы можете управлять своим VPN-соединением как с помощью командной строки, так и с помощью графического интерфейса.
sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com 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
И еще много интересного, последний штрих:
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
источник
Я тоже пострадал. В моем случае я использую OpenVPN с внутренним сервером имен (который находится внутри VPN). Это работало до Ubuntu 17.10 (с "hosts: files dns" в /etc/nsswitch.conf).
/etc/resolv.conf был корректно обновлен сценариями openvpn (через вызовы / etc / openvpn / update-resolv-conf в файле конфигурации клиента openvpn).
Тем не менее, разрешение имен для хостов внутри VPN больше не работало (или, по крайней мере, время от времени ... Я думаю, локальный DNS-кэш выбирал имена, но через довольно долгое время).
То, что, кажется, помогает, или даже решает проблему (хотя это слишком рано, чтобы сказать), является установкой следующего пакета:
sudo apt установить openvpn-systemd-resolved
Через несколько дней у меня будет больше опыта, решит ли это мою проблему или нет.
Если вам это тоже нужно, попробуйте это и оставьте комментарии!
Ура,
Майкл.
источник