Answers:
我建议使用dnscrypt
。
首先安装它:
sudo apt install dnscrypt-proxy
默认情况下,它将监听127.0.2.1
port 53
。
127.0.2.1
使用CLI 编辑您的VPN或您喜欢的任何其他连接并将其设置为DNS服务器,您可以运行:
nmcli connection modify [CONNECTION-NAME] ipv4.dns 127.0.2.1
并且以防万一阻止传出的DNS请求:
sudo ufw deny out 53
并确保启用了防火墙:
sudo ufw enable
nmcli connection modify [CONNECTION-NAME] ipv4.ignore-auto-dns yes
查看是否有帮助。
要修复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泄漏。
如果您通过在browserleaks.com或dnsleaktest.com上进行检查而发现 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` that's all!
按Ctrl+ x 退出编辑器。输入 y进行保存,然后按Enter覆盖您的新resolv.conf
文件。
编辑您的NetworkManager.conf文件
sudo nano /etc/NetworkManager/NetworkManager.conf
并添加以下内容:
dns=dnsmasq
在行下方(使用箭头键进行导航),[main]和plugins = ifupdown,密钥文件完全相同,并添加了新行。
[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其他解决方案。
nameserver
从更改为的VM 127.0.2.1
上192.168.122.1
,当我在其中连接到VPN时,resolv.conf
我看到两nameserver
行,一条连接到另一条,192.168.122.1
而另一条连接到VPN dns,但是在主机上,我总是看到两行search lan nameserver 127.0.1.1
。
我在这个确切的问题上苦苦挣扎了2天,然后才在这里找到对我有用的解决方案:https : //unix.stackexchange.com/a/470940
$ cd /etc/NetworkManager/system-connections
在此存储使用网络管理器创建的连接。
$ sudo nmcli connection modify <vpn-connection-name> ipv4.dns-priority -42
简单的命令来修改连接配置文件。也可以手动完成,但我相信这样更容易。
$ sudo service network-manager restart
使更改适用于您的系统。
基本上是从上面的链接复制粘贴,归功于原始作者。
如果您的系统不知道nmcli,或者使用网络管理器GUI添加连接会引发错误,建议您使用此链接
我尝试了许多解决方案,包括resolv.conf,dnsmasq和dnscrypt,所有这些解决方案都导致我的Internet被完全阻止,或者在VPN连接关闭时被阻止。据dnsleaktest.com称,它们都无法解决dns泄漏。如果尝试了这些方法中的任何一个,则应跟踪此过程中的每个步骤,以便在出现不良结果时能够将其逆转。我花了很短的时间来修复我断断续续的互联网,一次又一次没有互联网。我并不是在声称这些解决方案无法正常工作,我很可能在某个地方犯了一些错误。
但是,我链接的解决方案具有巨大的优势,它不会与常规的网络设置发生冲突,而只会与您要修改的一个连接发生冲突。
接下来,如前所述,block-outside-dns是仅Windows的解决方案,并在我的ubuntu系统上引发了一些无法识别的选项错误。
使用ovpn cli命令也无法解决泄漏问题。
我提供的链接在此处提到了有关ubuntu 18.10中修复的某些版本不一致的解释(此处),也许对此主题有更多专业知识的人都希望进一步解释。如果是这样,那么LTS用户将不得不等到明年4月afaik。
最后,我想指出的是,对于具有互联网审查制度的国家/地区的居民而言,DNS泄漏带来了沉重的问题,因为允许本地isp访问您的流量可能会并且即使与VPN相连也将导致被审查域被阻止。因此,对于以后访问中国等,您需要事先做好准备。
希望这可以帮助。
尝试使用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
您要做的就是
更多详细信息:https : //github.com/OrangeReaper/abStartupManager/wiki/Some-notes-on-Ubuntu-Desktop-Security
block-outside-vpn
通常只是Windows OpenVPN连接选项。解决DNS“泄漏”的问题是使用仅在VPN另一端存在的特定DNS服务器。您看到的DNS泄漏测试结果是什么?(它们是相关的)