云网牛站
所在位置:首页 > Linux安全 > 在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

2019-09-11 10:39:33作者:王沸稿源:云网牛站

本文将向你展示如何使用DNS over TLS保护Linux Mint上的DNS隐私,我们将使用一个名为stubby的工具。注意:本文仅适用于Linux Mint 19,包括19.1和19.2[参考:使用命令的方法将Linux Mint 19.1升级到Linux Mint 19.2(Tina)]。如果你使用的是Linux Mint 18,请升级你的系统。

 

什么是DNS over TLS?它如何保护你的DNS隐私?

DNS over TLS意味着DNS查询是通过使用TLS(传输层安全性)加密的安全连接发送的,这与加密HTTP流量的技术相同,因此没有第三方可以看到你的DNS查询,结合HTTPS站点和加密的SNI(服务器名称指示),你的Web浏览历史记录将完全免受ISP间谍活动的影响。

Stubby是一个开源DNS存根解析器,存根解析器是最终用户计算机上的一个小型DNS客户端,它接收来自Firefox等应用程序的DNS请求,并将请求转发给递归解析器,如1.1.1.1或8.8.8.8, Stubby的特殊之处在于它支持DNS over TLS,默认情况下,它只会发送加密的DNS查询。

 

如何在Linux Mint上使用Stubby在TLS上配置DNS

Stubby包含在Linux Mint 19软件存储库中,打开终端窗口并运行以下命令进行安装:

sudo apt install stubby

参考:在Ubuntu 18.04系统上安装Stubby并使用它保护你的DNS隐私

安装后,stubby会自动在后台运行,你检查它的状态:

systemctl status stubby

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

提示:如果上述命令没有立即退出,可以按Q键退出命令并获得对终端的控制权。

Stubby侦听localhost(127.0.0.1)的TCP和UDP端口53,运行此命令可以看到:

sudo netstat -lnptu | grep stubby

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

systemd-resolved提供的默认存根解析器侦听127.0.0.53的TCP和UDP端口53:

sudo netstat -lnptu | grep systemd-resolve

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

现在已经安装并运行了stubby,我们需要告诉Linux Mint系统使用它,单击桌面右下角的网络管理器图标,然后选择网络设置:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

单击齿轮图标以配置网络:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

选择IPv4选项卡,然后在DNS中关闭自动,这将阻止你的Linux Mint系统从你的路由器获取DNS服务器地址,然后在服务器文本字段中指定Stubby(127.0.0.1)的地址,单击应用按钮,然后关闭网络窗口:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

然后在终端中运行以下命令以重新启动NetworkManager,以使上述更改生效:

sudo systemctl restart NetworkManager

重新连接到路由器后,再次单击网络管理器图标,然后选择网络设置,你可以看到你的Linux Mint系统现在使用127.0.0.1(stubby)作为DNS服务器:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

 

如何从命令行切换到Stubby

你还可以通过从命令行配置systemd-resolved来使你的Linux Mint系统使用stubby,使用此命令可以看到默认的DNS服务器:

systemd-resolve --status

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

要将Stubby设置为默认服务器,请使用命令行文本编辑器(如Nano)打开systemd-resolved配置文件:

sudo nano /etc/systemd/resolved.conf

使用箭头键上下移动。在[Resolve]部分中,添加以下行以使你的系统使用Stubby:

DNS=127.0.0.1

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认,要退出,请按Ctrl+X。)

然后重新启动systemd-resolved服务:

sudo systemctl restart systemd-resolved

现在运行以下命令以检查默认DNS服务器:

systemd-resolve --status

你将在全局部分中看到127.0.0.1设置为DNS服务器:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

 

如何检查你的DNS流量是否加密

我们可以使用WireShark来监控DNS流量,在终端中运行以下命令,从Linux Mint存储库安装WireShark:

sudo apt install wireshark

参考:在Ubuntu/Debian/Arch Linux/Fedora/OpenSUSE中安装Wireshark的方法

如果系统询问“Should non-superusers be able to capture packets?”,请使用箭头键选择是,然后按Enter键:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

安装完成后,运行以下命令将你的用户帐户添加到wireshark组,以便你可以捕获数据包,用你的真实用户名替换your-username:

sudo adduser your-username wireshark

注销并重新登录以使更改生效,然后从应用程序菜单中打开WireShark:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

在WireShark中选择你的网络接口,例如,我的以太网接口名称为enp0s3,如果你使用的是Wi-Fi,那么你的网络接口名称将类似于wlp0s3,然后输入端口853作为捕获过滤器,这将使WireShark仅捕获端口853上的流量,端口853是DNS通过TLS使用的端口:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

按Enter开始捕获流量,之后,在终端窗口中,运行以下命令以使用dig实用程序查询域名,例如,我可以查询以下域名的A记录:

dig A ywnz.com

现在,你可以在WireShark中查看捕获的DNS流量,如你所见,我的DNS查询已发送到185.49.141.37,145.100.185.15或145.100.185.16,这是在stubby配置文件中定义的3个默认DNS解析器,连接是通过TCP进行的,并使用TLS加密,这正是我想要的,单击左上角的红色按钮以停止捕获流量:

在Linux Mint上使用Stubby配置DNS over TLS以保护DNS隐私

如果在没有加密的情况下发送DNS查询,则计算机将联系端口53上的DNS服务器,你可以使用端口53作为捕获过滤器再次捕获数据包,但在WireShark中你将看不到任何数据包,这意味着存根正在加密你的DNS查询。至此,本文的操作全部完成。

 

相关主题

使用DNS over TLS:在Linux上获得DNS隐私保护

精选文章
热门文章