在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泄漏,
-
关闭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
就这样!
-
按Ctrl + x退出编辑器。 输入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退出编辑器。 输入y进行保存,然后按Enter键覆盖该文件。
-
退出终端,重新启动系统并检查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