跳转至内容

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
注意 选择一个您信任的 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