DNS-over-HTTPS

来自 Arch Linux 中文维基


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

这可以通过Network Manager或编辑/etc/resolv.conf来完成。

启动[编辑 | 编辑源代码]

启动启用 doh-client.service

测试配置[编辑 | 编辑源代码]

要测试你系统的DNS是否有效,请在命令行输入nslookup www.baidu.com。假定您在安装之前有配置好DNS,这会在配置好DNS over HTTPS之前成功执行。

客户端配置[编辑 | 编辑源代码]

客户端配置文件默认是/etc/dns-over-https/doh-client.conf

选择首选的上游DNS服务器[编辑 | 编辑源代码]

要选择首选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.原则,我们不希望这样做。

上游建议对服务文件使用附加配置片段

/etc/systemd/system/doh-client.service.d/override.conf
[Unit]
After=multi-user.target

[Service]
Type=idle