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 来完成。
启动
测试配置
要测试您的系统 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
注意 选择一个您信任的 DNS 解析器。请参见 域名解析#第三方 DNS 服务。
故障排除
有线连接中服务未能正确启动
- ArchLinux 没有默认的网络管理框架,因此 systemd 在没有预先配置在线检测的情况下启动。
- 如果您使用 Wi-Fi,我建议确保 systemd 的在线检测能够正常运行。我相信您的系统已经安装了一些网络管理框架,例如 NetworkManager,来帮助您管理 Wi-Fi 密码。
- 或者,如果您使用的是有线网络,修改 .service 文件以禁用在线检测将是最简单的解决方案。为非移动机器安装 NetworkManager 可能违反 K.I.S.S. 原则,我们不希望这样做。
/etc/systemd/system/doh-client.service.d/override.conf
[Unit] After=multi-user.target [Service] Type=idle