DNS-over-HTTPS
DNS-over-HTTPS 是 DNS over HTTPS 的一个实现。它可以作为一个存根解析器。
安装
安装 dns-over-https 软件包。
客户端启动
禁用绑定到端口 53 的所有服务
要查看是否有程序正在使用端口 53,请运行
$ ss -lp 'sport = :domain'
如果输出包含多于列名首行的内容,您需要禁用正在使用端口 53 的服务。一旦上述命令的输出仅包含以下行,您就可以继续进行操作
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
更改系统 DNS 服务器
将您的系统 DNS 服务器更改为配置文件 listen =
部分中的地址。如果您不确定该怎么做,建议使用 127.0.0.1
。
这可以通过您的 网络管理器 或编辑 /etc/resolv.conf 来完成。
启动
启动 或 启用 doh-client.service
服务。
测试配置
要测试您的系统 DNS 是否工作,请在命令行中输入 nslookup www.google.com
。请注意,这在配置 DNS-over-HTTPS 之前就可以工作,前提是您在安装它之前已经有了 DNS 配置。
客户端配置
客户端配置文件默认为 /etc/dns-over-https/doh-client.conf
选择首选上游 DNS 服务器
要选择首选的 DNS 服务器,请取消注释其中一个预设配置。
如果您首选的服务器未列出,您可以使用 [upstream]
部分中的以下模板。
/etc/dns-over-https/doh-client.conf
[[upstream.upstream_ietf]] url = "https://[IP or web address]/dns-query" weight = 20
故障排除
有线连接中服务无法正常启动
正如开发者所解释的
- ArchLinux 没有默认的网络管理框架,因此 systemd 没有预配置在线检测功能。
- 如果您正在使用 Wi-Fi,我建议确保 systemd 的在线检测功能可以正常运行。我相信您的系统已经安装了一些网络管理框架,例如 NetworkManager,以帮助您管理 Wi-Fi 密码。
- 或者,如果您正在使用有线网络,只需修改 .service 文件以禁用在线检测将是最简单的解决方案。为非移动设备安装 NetworkManager 可能违反 K.I.S.S. 原则,并且我们不希望这样做。
上游建议使用一个drop-in snippet到您的服务文件以
/etc/systemd/system/doh-client.service.d/override.conf
[Unit] After=multi-user.target [Service] Type=idle