使用DNS 泄漏测试在我的 VPN 下,我发现它有泄漏。我已通过 NetworkManager 设置了我的 VPN,除了泄漏之外,它运行正常。
首先,我尝试添加block-outside-vpn
到配置文件中,但发现/etc/NetworkManager/system-connections
它不遵循相同的格式。我找不到有关如何正确编写 DNS 泄漏的文档。
此外,使用 Ubuntu 18.04 resolv.conf 不再像以前那样工作,所有其他答案都是基于此。
简而言之,如何使用网络管理器配置文件或 GUI 阻止外部 DNS(泄漏)?
答案1
要修复 Ubuntu 18.04 上的 DNS 泄漏,您可以编辑一个名为的文件/etc/dhcp/dhclient.conf
。根据手册页,此文件“提供了一种使用动态主机配置协议、BOOTP 协议配置一个或多个网络接口的方法,或者如果这些协议失败,则通过静态分配地址来配置。”
至于修复您的 DNS 泄漏,我们将编辑此文件。使用适当的权限打开它,您将看到如下所示的注释行:
#prepend domain-name-servers 127.0.0.53;
取消注释此行,并将域名服务器更改为其他服务器,例如 OpenDNS:208.67.222.222。使用此 OpenDNS 地址,此行现在应如下所示:
prepend domain-name-servers 208.67.222.222;
保存文件并重新启动系统后,这应该可以修复 Ubuntu 18.04 上的 DNS 泄漏。
答案2
我建议使用dnscrypt
。
首先安装它:
sudo apt install dnscrypt-proxy
默认情况下它将监听127.0.2.1
端口53
。
编辑您的 VPN 或任何其他您喜欢的连接并将其设置127.0.2.1
为其 DNS 服务器,使用 CLI 您可以运行:
nmcli connection modify [CONNECTION-NAME] ipv4.dns 127.0.2.1
以防万一,阻止传出的 DNS 请求:
sudo ufw deny out 53
并确保防火墙已启用:
sudo ufw enable
答案3
如果您有 DNS 泄漏,请检查 browserleaks.com或者dnsleaktest.com,
关闭你的 VPN 连接
尝试撤消您已经浪费时间进行的任何 .conf 文件编辑。如果您已经尝试了很多不同的建议,最好的机会可能是进行全新安装并确保您还安装了 networkmanager-openvpn-gnome,因为 Ubuntu 默认不提供 VPN 配置导入。
安装 dnsmasq
sudo apt update sudo apt install dnsmasq
禁用已解决
sudo systemctl disable systemd-resolved.service sudo systemctl stop systemd-resolved.service
删除 /
etc/resolv.conf
并创建一个新的:sudo rm /etc/resolv.conf sudo nano /etc/resolv.conf
输入你的空
.conf
文件:nameserver 127.0.0.1` that's all!
按Ctrl+x 退出编辑器。按 Enter y保存,然后按Enter覆盖新
resolv.conf
文件。编辑 NetworkManager.conf 文件
sudo nano /etc/NetworkManager/NetworkManager.conf
并添加以下内容:
dns=dnsmasq
在行下方(使用箭头键导航),[main] 和 plugins=ifupdown,keyfile 与此完全相同,但添加了新行。
[main] plugins=ifupdown, keyfile dns=dnsmasq
按Ctrl+x退出编辑器。 Entery 保存,然后按Enter覆盖文件。
退出终端,重新启动系统并检查 dnsleak 测试站点的结果。
感谢匿名VPN针对 Ubuntu/Network Manager 上的泄漏问题的解决方案似乎经过了充分研究,并且非常成功。它们很有效,当其他解决方案都对我不起作用时,这些解决方案就起作用了。上面显示的解决方案适用于 Ubuntu17.x 和 18.04 LTS。请参阅他的其他解决方案16.04 LTS。
答案4
尝试使用update-systemd-resolved
不对 进行更改的脚本resolv.conf
,而是systemd-resolved
使用其 DBus API 使用该服务
从 git 获取并通过以下方式安装:
git clone https://github.com/aghorler/update-systemd-resolved.git
cd update-systemd-resolved
make
现在编辑nsswitch.conf
:
sudo nano /etc/nsswitch.conf
hosts:
然后将以以下内容开头的行更改为
hosts: files resolve dns myhostname
启用该服务并确保其自动运行:
sudo systemctl enable systemd-resolved.service
sudo systemctl start systemd-resolved.service
笔记:如果你不想遵循上述步骤,并且可以使用终端,则 DNS 泄漏仅在使用 NetworkManager 时发生,到目前为止,根据我的经验,当你从终端运行 openvpn 时不会发生这种情况
sudo openvpn --config config.ovpn