在当今网络环境中,隐私和安全变得越来越重要。传统的DNS查询以明文方式传输,容易被监听、篡改甚至劫持。为了保护你的网络通信,DNS over TLS(DoT)提供了一种通过TLS加密DNS请求的方式。本文将详细指导你如何在Ubuntu系统中配置DNS over TLS,即使是小白用户也能轻松上手。

什么是DNS over TLS?
DNS over TLS(DoT)是一种安全协议,它使用传输层安全(TLS)对DNS查询进行加密,防止中间人攻击和窃听。与普通DNS不同,DoT默认使用TCP端口853,并建立加密通道。
准备工作
一台运行Ubuntu 20.04或更高版本的电脑(本教程以Ubuntu 22.04为例) 具有sudo权限的用户账户 网络连接正常Ubuntu从17.04开始内置了systemd-resolved服务,该服务原生支持DNS over TLS。我们将利用它来完成配置。
步骤一:检查并启用systemd-resolved服务
首先,确认systemd-resolved是否正在运行:
sudo systemctl status systemd-resolved
如果未运行,请启用并启动它:
sudo systemctl enable --now systemd-resolved
步骤二:配置DNS over TLS
编辑resolved.conf配置文件:
sudo nano /etc/systemd/resolved.conf
在打开的文件中,找到并修改以下几行(取消注释并设置):
[Resolve]DNS=1.1.1.1 8.8.8.8FallbackDNS=Domains=~.DNSOverTLS=yes
说明:
DNS=1.1.1.1 8.8.8.8:这里使用Cloudflare(1.1.1.1)和Google(8.8.8.8)的DoT支持DNS服务器。
DNSOverTLS=yes:启用DNS over TLS功能。
Domains=~.:表示对所有域名都使用此配置。
提示:你也可以使用其他支持DoT的DNS服务器,例如:
- Cloudflare:1.1.1.1(支持DoT)
- Google:8.8.8.8(支持DoT)
- Quad9:9.9.9.9(支持DoT且过滤恶意网站)
步骤三:重启服务并验证配置
保存文件后,重启
systemd-resolved服务:
sudo systemctl restart systemd-resolved
然后,检查当前DNS配置状态:
resolvectl status
在输出中,你应该能看到类似以下内容:
Global Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported DNS Servers: 1.1.1.1 8.8.8.8 DNS Domain: ~. ...
注意:
DNSOverTLS字段应显示为
+DNSOverTLS,表示已启用。
步骤四:测试DNS over TLS是否生效
你可以使用
tcpdump工具抓包验证DNS请求是否通过853端口加密传输(需安装
tcpdump):
sudo apt install tcpdump -ysudo tcpdump -i any port 853
然后在另一个终端执行一次DNS查询:
nslookup example.com
如果看到853端口有数据包流动,说明DoT正在工作。
常见问题与注意事项
NetworkManager冲突:如果你使用NetworkManager管理网络,它可能会覆盖/etc/resolv.conf。建议确保
/etc/resolv.conf是
systemd-resolved的符号链接:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf 性能影响:DoT会略微增加DNS查询延迟,但换来的是更高的安全性。 兼容性:并非所有公共DNS都支持DoT,请选择明确支持的服务商。结语
通过以上步骤,你已经成功在Ubuntu系统中启用了DNS over TLS,显著提升了网络隐私和安全性。这种Ubuntu安全DNS设置方法简单有效,适合家庭用户和企业环境。希望这篇DNS加密教程能帮助你更好地保护自己的数字生活!
如需进一步优化,可结合systemd-resolved配置与其他安全工具(如防火墙)协同工作,打造更坚固的网络安全防线。
