从网络管理器启用 VPN 连接会自动将 IPv6 地址添加到 DHCP 有线连接,即使在设置中禁用它也是如此。这会导致 VPN 泄漏所有针对 IPv6 地址的 DNS 地址查询。
我怎样才能阻止这种行为?
山姆
答案1
这篇详细的博客文章可能会有很大帮助:https://aaronhorler.com/articles/openvpn-17.10-dns-leak.html
以下是他们提供的解决方案:
安装更新-SYSTEMD-由 JONATHANIO 解决。更新系统已解决 是一个辅助脚本,可在连接到 OpenVPN 服务器时直接更新系统的 DNS 设置,并在断开连接时重置它们。
安装说明如下这里,但为了简单起见,我将重复我所做的。
请注意,我已经分叉此存储库并使用 UFW 添加了终止开关功能。如果您对终止开关感兴趣,可以使用我的 fork。
克隆存储库并编译。sudo apt update sudo apt install git make openvpn git clone https://github.com/jonathanio/update-systemd-resolved.git cd update-systemd-resolved sudo make
确保 systemd-resolved 已启用并正在运行。
sudo systemctl enable systemd-resolved.service sudo systemctl start systemd-resolved.service
现在,更新 /etc/nsswitch.conf。
sudo nano /etc/nsswitch.conf
找到以 hosts: 开头的行,并按如下所示进行更改。
hosts: files resolve dns myhostname
更改您的 OPENVPN 配置文件。OpenVPN 配置文件通常使用 .ovpn 文件扩展名,用于连接到特定服务器。
找到它,然后在文本编辑器中打开它。nano example.ovpn
添加以下行。
dhcp-option DNSSEC allow-downgrade dhcp-option DOMAIN-ROUTE . script-security 2 setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin up /etc/openvpn/scripts/update-systemd-resolved down /etc/openvpn/scripts/update-systemd-resolved down-pre dhcp-option
DNSSEC allow-downgrade
将开启DNSSEC如果服务器支持的话。如果您知道您的服务器支持 DNSSEC(并且您不想允许降级),则可以更改allow-downgrade
为yes
。
dhcp-option DOMAIN-ROUTE .
将通过 OpenVPN 指定的 DNS 服务器路由所有 DNS 请求。
运行脚本需要所有其他行。使用终端连接。不要使用网络管理器 (network-manager-openvpn-gnome) 连接到 OpenVPN。这将导致 DNS 泄漏。
请改为从命令行运行 OpenVPN。sudo openvpn --config example.ovpn
如果你担心没有收到断开连接的通知,我建议你使用我的update-systemd-resolved 的分支实现一个简单的 UFW 终止开关。
您不再会遇到 DNS 泄漏!在这里测试。
答案2
这是在基于 Debian 的发行版上实际起作用的唯一方法。
在 Linux 上禁用 IPv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
使能够
sysctl -w net.ipv6.conf.all.disable_ipv6=0