Назад | Перейти на главную страницу

OpenVPN и systemd-resolved: DNS не разрешает внутренние имена VPN

У меня есть VPN, настроенный на некоторых виртуальных машинах с использованием OpenVPN. На одной из виртуальных машин работает dnsmasq, чтобы обеспечить базовый DNS внутри сети. Мой клиент работает под управлением Ubuntu, который теперь более или менее заставляет systemd-resolved. Я обнаружил, что, хотя он утверждает, что настроил DNS, я на самом деле не могу выполнить nslookup или покопаться в именах хостов внутри VPN. Я могу пинговать их по IP, но не по имени.

Давайте углубимся в файлы конфигурации.

Конфигурация сервера OpenVPN:

mode server
local 192.168.50.101
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ssl/ca.pem
cert /etc/openvpn/server/ssl/cert.pem
key /etc/openvpn/server/ssl/key.pem
dh /etc/openvpn/server/ssl/dh2048.pem
topology subnet
server 10.99.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.10.0.0 255.255.255.0"
push "dhcp-option DNS 10.99.0.1"
keepalive 10 120
cipher AES-128-CBC   # AES
comp-lzo
push "comp-lzo yes"
user openvpn
group openvpn
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 6
mute 20

Конфигурация клиента:

client
dev tun
proto udp
remote 192.168.50.101 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca REDACTED
cert REDACTED
key REDACTED
remote-cert-tls server
cipher AES-128-CBC
comp-lzo
verb 3
mute 20
ping-restart 30
script-security 2
setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

Я установил https://github.com/jonathanio/update-systemd-resolved, как кажется, рекомендуется. Фактически, он обновляет настройки DNS, как это может быть показано в журналах с разрешением systemd (Switching to DNS server 10.99.0.1 for interface tun0.) и --status вывод:

Link 26 (tun0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.99.0.1

/etc/resolve.conf указывает на 127.0.0.53, что по умолчанию при использовании systemd-resolved.

Я пробовал использовать встроенное соединение OpenVPN в NetworkManager, и оно не решает проблему с DNS и даже не настраивает маршруты правильно (поэтому я даже не могу пинговать или подключаться по IP).

Еще несколько вещей, о которых люди, вероятно, спросят:

Сначала проверьте подключение с консоли:

sudo openvpn --verb 1 --config /path_to_conf/config.ovpn

Если у вас есть эта ошибка:

/etc/resolvconf/update.d/libc: Предупреждение: /etc/resolv.conf не является символической ссылкой на /run/resolvconf/resolv.conf

тогда исправь /etc/resolvconf/update.d/libc

перед

DYNAMICRSLVCNFFILE="/run/resolvconf/resolv.conf"

после

#DYNAMICRSLVCNFFILE="/run/resolvconf/resolv.conf"
DYNAMICRSLVCNFFILE="/run/systemd/resolve/resolv.conf"

Во-вторых, добавьте параметр в конфигурацию сервера openvpn.

push "dhcp-option DOMAIN YOUR_DOMAIN_NAME"