Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持
很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安装 Cloudflare 官方的 cloudflared,并配合 systemd 自启动,就能让整个系统通过 DNS over HTTPS(DoH)进行加密解析。

本文将详细介绍如何在 Ubuntu、Debian、CentOS、Rocky Linux 等系统上部署 Cloudflared DoH 服务,实现系统 DNS 加密、防止 DNS 劫持,提高解析稳定性,并支持开机自动运行。整个过程仅需几分钟,新手也可以轻松完成。
Linux 使用 Cloudflared + systemd 开启 DNS over HTTPS(DoH)完整教程
DNS(域名解析)默认采用明文传输,容易受到 DNS 污染、运营商劫持以及隐私泄露等问题。
而 DNS over HTTPS(DoH) 会将 DNS 请求通过 HTTPS 加密传输,不仅能够提高隐私保护,还能增强解析稳定性。
本文将教你通过 Cloudflare 官方提供的 cloudflared,在 Linux 系统上搭建本地 DoH 服务,并利用 systemd 实现开机自动启动。
支持:
- Ubuntu
- Debian
- CentOS
- AlmaLinux
- Rocky Linux
- Fedora
- VPS、云服务器、物理服务器
什么是 DNS over HTTPS(DoH)?
DNS over HTTPS(DoH)是一种加密 DNS 协议,它会将 DNS 查询通过 HTTPS 通道传输,从而:
✅ 防止 DNS 污染
✅ 避免运营商 DNS 劫持
✅ 提高隐私安全
✅ 使用 Cloudflare 全球 DNS 网络
✅ 提升域名解析稳定性
✅ 支持 IPv4 和 IPv6
第一步:安装 Cloudflared
下载 Cloudflare 官方客户端:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
赋予执行权限:
chmod +x cloudflared-linux-amd64
移动到系统目录:
sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared
验证安装:
cloudflared --version
如果能够显示版本号,则说明安装成功。
第二步:创建 Cloudflared 配置文件
创建配置目录:
sudo mkdir -p /etc/cloudflared
创建配置文件:
sudo nano /etc/cloudflared/config.yml
写入以下内容:
proxy-dns: true
proxy-dns-upstream:
- https://1.1.1.1/dns-query
- https://1.0.0.1/dns-query
说明:
1.1.1.1:Cloudflare 主 DNS1.0.0.1:Cloudflare 备用 DNS
保存退出。
第三步:创建 systemd 服务
为了让 Cloudflared 在服务器重启后自动运行,可以将其加入 systemd。
创建服务文件:
sudo nano /etc/systemd/system/cloudflared.service
写入:
[Unit]
Description=Cloudflared DNS over HTTPS
After=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/cloudflared proxy-dns
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
保存后重新加载 systemd:
sudo systemctl daemon-reload
设置开机启动:
sudo systemctl enable cloudflared
启动服务:
sudo systemctl start cloudflared
查看运行状态:
sudo systemctl status cloudflared
如果显示:
active (running)
则表示服务已经正常运行。
第四步:修改系统 DNS
编辑 DNS 配置:
sudo nano /etc/resolv.conf
将内容修改为:
nameserver 127.0.0.1
这样系统的 DNS 请求会先发送到本地 Cloudflared,再通过 HTTPS 转发到 Cloudflare DNS。
第五步:测试 DNS over HTTPS 是否生效
执行:
dig @127.0.0.1 google.com
如果能够正常返回 IP 地址,说明本地 DoH 服务工作正常。
还可以查看 cloudflared 日志:
journalctl -u cloudflared -f
实时观察 DNS 请求。
防止 resolv.conf 被覆盖
某些系统(如 Ubuntu、Debian)使用:
- NetworkManager
- systemd-resolved
- DHCP Client
可能会自动修改 /etc/resolv.conf。
可以锁定该文件:
sudo chattr +i /etc/resolv.conf
解除锁定:
sudo chattr -i /etc/resolv.conf
或者在 NetworkManager 中关闭自动 DNS。
常用管理命令
查看状态:
systemctl status cloudflared
启动:
systemctl start cloudflared
停止:
systemctl stop cloudflared
重启:
systemctl restart cloudflared
查看日志:
journalctl -u cloudflared -f
开机自启:
systemctl enable cloudflared
关闭自启:
systemctl disable cloudflared
Cloudflared DoH 的优势
| 功能 | 支持 |
|---|---|
| DNS over HTTPS | ✅ |
| 开机自动启动 | ✅ |
| 防 DNS 污染 | ✅ |
| 防 DNS 劫持 | ✅ |
| Cloudflare 全球节点 | ✅ |
| IPv4 / IPv6 | ✅ |
| Ubuntu / Debian | ✅ |
| CentOS / Rocky Linux | ✅ |
| VPS 和物理服务器 | ✅ |
总结
如果你经常遇到 DNS 解析异常、域名污染或者希望提升服务器的隐私和稳定性,那么使用 Cloudflared + systemd 部署 DNS over HTTPS(DoH) 是一种简单、高效且免费的解决方案。
整个配置完成后,系统所有 DNS 请求都会通过 HTTPS 加密传输,不仅能够提高解析成功率,还能有效避免 DNS 劫持,非常适合 VPS、云服务器以及家庭 Linux 主机长期使用。
FAQ
Cloudflared 支持哪些 Linux 系统?
支持 Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux、Fedora 等主流发行版。
DNS over HTTPS 有什么作用?
通过 HTTPS 加密 DNS 请求,防止 DNS 污染、劫持,并提高隐私安全。
Cloudflared 会影响服务器性能吗?
不会。Cloudflared 占用资源极低,一般只消耗几十 MB 内存。
如何查看 Cloudflared 是否正常运行?
执行:
systemctl status cloudflared
显示 active (running) 即表示运行正常。
为什么修改 resolv.conf 后会自动恢复?
这是因为 NetworkManager、systemd-resolved 或 DHCP 会重新生成配置,需要关闭自动 DNS 或锁定文件。
Cloudflared 可以配合 IPv6 使用吗?
可以,同时支持 IPv4 和 IPv6 网络环境。


