Linux 如何使用 DNS over HTTPS (DoH)

使用 cloudflared 和 systemd 在 Linux 上设置 DNS over HTTPS (DoH)

Linux 上如何使用 systemd 设置 DNS over HTTPS (DoH) ?通过利用 systemd,我们可以确保在启动时自动启动提供 DoH 服务的 cloudflared

第一步:安装 cloudflared

  1. 首先,下载 cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64

Copy

  1. 使二进制文件可执行并移至合适的目录:
chmod +x cloudflared-linux-amd64
sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared

Copy

第二步:配置 cloudflared

  1. 创建 cloudflared 的配置目录:
sudo mkdir /etc/cloudflared

Copy

  1. 创建配置文件:
sudo nano /etc/cloudflared/config.yml

Copy

  1. 填入以下内容:
proxy-dns: true
proxy-dns-upstream:
  - https://1.1.1.1/dns-query
  - https://1.0.0.1/dns-query

Copy

保存并退出。

第三步:将 cloudflared 设置为 systemd 服务

  1. 创建 systemd 服务文件:
sudo nano /etc/systemd/system/cloudflared.service

Copy

  1. 填入以下内容:
[Unit]
Description=cloudflared DNS over HTTPS 代理
After=syslog.target network-online.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/cloudflared proxy-dns
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Copy

保存并退出。

  1. 启用并开始服务:
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

Copy

第四步:更新系统 DNS 设置

  1. 编辑 resolv.conf
sudo nano /etc/resolv.conf

Copy

  1. 修改或添加:
nameserver 127.0.0.1

Copy

这将使用 cloudflared 代理作为系统的 DNS 服务器。

第五步:验证 DoH 配置

检查 DNS 请求是否通过 HTTPS:

dig @127.0.0.1 example.com

Copy

注意:使用 NetworkManager 或其他网络工具的系统可能会覆盖 /etc/resolv.conf。确保配置这些工具以防止此类更改,或使 resolv.conf 不可变。

我们希望此指南帮助您在 Linux 上使用 cloudflared 和 systemd 设置了 DNS over HTTPS。如果遇到任何问题,请查阅相关文档或寻求技术支持。