在Linux Mint上配置基于TLS的DNS以保护DNS隐私

本教程将向您展示如何使用以下方法保护Linux Mint上的DNS隐私: TLS上的DNS。 我们将使用一个名为 粗短,但首先,让我告诉您为什么DNS不安全。

DNS漏洞

DNS不安全,因为默认情况下,DNS查询未加密。 它们以纯文本形式通过网络发送,并且可以被中间实体利用。 例如,中国的防火墙(GFW)使用一种称为 DNS缓存中毒 审查中国互联网。 (他们还使用其他方法,这不在本文的讨论范围之内。)

GFW会检查发送到中国以外的DNS服务器的每个DNS查询。 由于纯文本DNS协议基于无连接协议UDP,因此GFW可以欺骗客户端IP和服务器IP。 当GFW在其阻止列表中找到域名时,它将更改DNS响应。

例如,如果中国的互联网用户想要访问google.com,则GFW会将位于中国的IP地址(而不是Google的真实IP地址)返回给用户的DNS解析器。 然后,DNS解析器会将伪造的IP地址返回给用户的计算机,因此用户无法访问google.com。

什么是基于TLS的DNS? 如何保护您的DNS隐私?

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

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

注意:本教程仅适用于Linux Mint 19,包括19.1和19.2。 如果您使用的是Linux Mint 18,请升级您的系统。

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

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

sudo apt install stubby

安装后,Stubby会在后台自动运行。 您可以通过以下方式查看其状态:

systemctl status stubby

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

通过运行以下命令可以看到,Stubby侦听本地主机(127.0.0.1)的TCP和UDP端口53:

sudo netstat -lnptu | grep stubby

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

sudo netstat -lnptu | grep systemd-resolve

Linux Mint Stub解析器
现在,stubby已安装并正在运行,我们需要告诉Linux Mint系统使用它。 点击 网络管理员 桌面右下角的图标,然后选择 网络设置

Linux在TLS上的薄荷DNS

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

Linux Mint配置DNS服务器

选择 IPv4 标签并关闭 自动 在DNS中。 这将防止您的Linux Mint系统从路由器获取DNS服务器地址。 然后指定Stubby的地址(127.0.0.1) 在里面 服务器 文本域。 点击 应用 按钮并关闭 网络 窗口。

在TLS Linux Mints上的DNS

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

sudo systemctl restart NetworkManager

重新连接到路由器后,请点击 网络管理员 再次单击图标并选择 网络设置。 您可以看到您的Linux Mint系统正在使用 127.0.0.1 (粗略)作为DNS服务器。

Linux Mint安装配置Stubby

如何从命令行切换到Stubby

您还可以通过配置使Linux Mint系统使用stubby 系统解析 从命令行。 使用此命令可以看到默认的DNS服务器。

systemd-resolve --status

systemd-解析dns服务器

要将Stubby设置为默认服务器,请使用命令行文本编辑器(例如Nano)打开systemd解析的配置文件。

sudo nano /etc/systemd/resolved.conf

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

DNS=127.0.0.1

systemd-resolve更改dns服务器

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

然后重新启动系统解析的服务。

sudo systemctl restart systemd-resolved

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

systemd-resolve --status

您将在“全局”部分中看到将127.0.0.1设置为DNS服务器。

systemd-resolve全局dns服务器

如何检查您的DNS通信是否已加密

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

sudo apt install wireshark

如果系统提示您“非超级用户是否可以捕获数据包?”,请使用箭头键选择“是”,然后按Enter。

Linux Mint Wirehark捕获流量

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

sudo adduser your-username wireshark

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

Wireshark Linux薄荷

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

Linux Mint WireShare通过TLS流量捕获DNS

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

dig A linuxbabe.com

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

Linux在TLS Stubby上的薄荷DNS
如果发送的DNS查询没有加密,则计算机将通过端口53与DNS服务器联系。 port 53 作为捕获过滤器,但在WireShark中将看不到任何数据包,这意味着stubby正在加密DNS查询。

包起来

我希望本教程可以帮助您通过TLS上的DNS保护Linux Mint上的DNS隐私。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 照顾自己。

Sidebar