DNS-over-HTTPS

出自 ArchWiki

DNS-over-HTTPSDNS 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