在dns之外阻止,修复dns泄漏ubuntu 18.04

在我的VPN下使用dns泄漏测试我发现它正在泄漏。 我已经通过NetworkManager设置了VPN,除了泄漏之外它还能正常工作。

首先,我尝试将block-outside-vpn添加到配置文件中,除了在/etc/NetworkManager/system-connections它不遵循相同的格式。 我找不到关于如何正确写一个dns泄漏的文档。

此外,使用Ubuntu 18.04 resolv.conf不像以前那样工作,所有其他答案都基于此。

简而言之,如何使用Network Manager配置文件或GUI阻止外部dns(泄漏)?

我建议使用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 

如果您在浏览browserleaks.com或ipleak.net时显示DNS泄漏,

  1. 关闭VPN连接

  2. 尝试撤消任何.conf文件编辑,你浪费了时间。 如果您一直在尝试各种各样的建议,那么最好的机会可能是进行全新安装并确保您还安装了networkmanager-openvpn-gnome,因为Ubuntu默认情况下没有提供VPN配置导入。

  3. 安装dnsmasq

     sudo apt update sudo apt install dnsmasq 
  4. 禁用已解决

     sudo systemctl disable systemd-resolved.service sudo systemctl stop systemd-resolved.service 
  5. 删除/etc/resolv.conf并创建一个新的:

     sudo rm /etc/resolv.conf sudo nano /etc/resolv.conf 
  6. 进入空的.conf文件:

     nameserver 127.0.0.1 

    就这样!

  7. Ctrl + x退出编辑器。 输入y保存,然后按Enter键覆盖新的resolv.conf文件。

  8. 编辑您的NetworkManager.conf文件

     sudo nano /etc/NetworkManager/NetworkManager.conf 

    并添加以下内容:

     dns=dnsmasq 

    在行下面(使用箭头键导航),[main]和plugins = ifupdown,keyfile与添加新行完全相同。

     [main] plugins=ifupdown, keyfile dns=dnsmasq 

    Ctrl + x退出编辑器。 输入y进行保存,然后按Enter键覆盖该文件。

  9. 退出终端,重新启动系统并检查dnsleak测试站点的结果。

感谢Anonymous VPN,其Ubuntu / Network Manager上的Leaks解决方案似乎得到了很好的研究和成功。 他们工作,当没有其他解决方案对我有用时,这些确实如此。 以上显示的解决方案适用于Ubuntu 17.x和18.04 LTS 。 请参阅他的16.04 LTS的其他解决方案。

要修复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泄漏问题。

尝试使用不对resolv.conf进行更改的update-systemd-resolved脚本,而是使用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:来说

 hosts: files resolve dns myhostname 

启用该服务并确保它自动运行:

 sudo systemctl enable systemd-resolved.service sudo systemctl start systemd-resolved.service 

注意:如果您不想按照上述步骤操作并且使用终端即可,只有在使用NetworkManager时才会发生DNS泄漏,从我的经验到目前为止,当您从终端使用sudo openvpn --config config.ovpn运行openvpn时不会发生这种情况sudo openvpn --config config.ovpn