干货

Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持

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

38 阅读
Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持

本文将详细介绍如何在 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 主 DNS
  • 1.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 网络环境。