我在笔记本电脑和服务器之间使用 OpenVPN 连接。配置直到今天都正常工作(我只是运行了apt update && apt upgrade
),但从那时起,连接到 OpenVPN 后我的 DNS 设置为“错误”。
连接到 OpenVPN 服务器后,我的配置DNS Domain: ~.
中有两个“捕获所有”DNS 域条目() 。systemd-resolve
剥离输出systemd-resolve --status
:
Link 11 (tun0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.X.Y
DNS Domain: ~.
Link 2 (enp0s25)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.16.X.Y
10.16.X.Y
DNS Domain: ~.
因此,DNS 查询现在不仅可以安全地通过 VPN 进行传输,还可以通过普通网络进行传输。
这会导致 DNSLeak 甚至更糟的情况:VPN 内部主机名无法正确解析(时不时)。
我只知道将DNS Domain: ~.
条目添加到 tun0-Interface 以进行解析的选项。但是如何从实际接口中删除已经存在的条目?
我已经使用此配置来更新我的 OpenVPN client.conf 中的 systemd-resolved:
# Upate systemd-resolvd
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
有人知道如何解决这个问题吗?
// 更新:看起来这是一个众所周知的问题,NetworkManager 开始随机将根 DNS 域附加到链接。在GitHub 问题在脚本开发者的 repo 中update-systemd-resolved
。
// 大概这次提交NetworkManager 破坏了它。因为它引入了所有接口行为的默认 DNS 路由。
答案1
将从 OpenVPN 服务器下载的客户端配置文件(扩展名为 .ovpn 的文件)添加到以下行:
dhcp-option DOMAIN-ROUTE .
如你所知,在添加此行之前,你必须在 Ubuntu 18.04 中安装update-systemd-resolved
脚本,如https://github.com/jonathanio/update-systemd-resolved
如果仍然不起作用,也许您还必须添加内部 DNS 服务器。检查您在 .ovpn 文件末尾添加的行,如下所示:
script-security 2
dhcp-option DNS 10.1.0.1 # replace this IP with your DNS server IP.
dhcp-option DOMAIN yourinternaldomain.local # replace this with your internal domain name.
dhcp-option DOMAIN-ROUTE .
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
如果你使用 UI(gnome)连接
最后,如果您使用 UI VPN 图标连接到您的 VPN,则必须重新导入 .ovpn 修改后的文件。
要在终端中执行此操作:
sudo apt install openvpn openvpn-systemd-resolved resolvconf
sudo apt install network-manager-openvpn network-manager-openvpn-gnome
在 Ubuntu 开始菜单中点击:
输入单词“网络”,然后单击“网络”。它应该显示以下内容:
点击“+“登录VPN并点击“从文件导入”选项:
导入后,添加名称并点击对话框右上角的“添加”按钮。
一切已就绪!
要连接到 VPN,请单击网络图标,然后单击锁定图标。