我使用OpenVPN在一些虚拟机上安装了VPN。 其中一个虚拟机正在运行dnsmasq,为networking内部提供一个基本的DNS。 我的客户正在运行Ubuntu,现在或多或less的强制systemd解决。 我发现,尽pipe它声称已经configuration了DNS,但是我实际上不能实现nslookup或挖掘VPN内的主机名。 我可以通过IP ping通他们,但不能通过名称。
让我们深入到configuration文件。
OpenVPN服务器conf:
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
客户端conf:
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设置,可以通过systemdparsing的日志( 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的默认值。
我尝试过使用NetworkManager的内置OpenVPN连接,它既不修复DNS问题,也没有正确设置路由(所以我甚至不能ping或通过IP连接)。
只是其他一些人可能会问的事情:
/etc/resolv.conf指向我的VPN的DNS服务器(在10.99.0.1上),那么DNSparsing工作正常。 然而,resolv.conf是由systemd-resolved或者NetworkManager通过resolvconf来pipe理的,如果可能的话,我想保留这些以免让Ubuntu苹果车不安。