news 2026/5/1 11:11:15

在Linux系统上一键配置DoH,解决DNS解析被污染

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Linux系统上一键配置DoH,解决DNS解析被污染

了几个 DNS 都不行,应该是 DNS 被污染或者劫持了

这时我才意识到不上 DoH/DoT 怕是没办法了🤣

本文记录一下用一种简单的方法在服务器上实现 DoH/DoT

DoH/DoT#

简单科普一下,DNS 是用来把网站解析到IP地址的协议

正常的 DNS 是明文传输,很容易被污染或者劫持

DoH 是 DNS over HTTPS,走加密的 HTTPS 流量(443 端口),看起来就像访问网页一样,不容易被污染或者劫持

除此之外还有 DoT(DNS over TLS)、ODoH(Oblivious DoH,隐私更强),都是更加安全的域名解析方式

cloudflared#

https://github.com/cloudflare/cloudflared

这是 Cloudflare 官方开源的一个 Cloudflare Tunnel 客户端,用 go 语言开发的,非常容易安装部署。

简介#

这个客户端不仅可以接入 Tunnel 实现内网穿透,还可以实现 DoH 代理

本文使用这个工具来实现 DoH 配置

安装#

Ubuntu Server 的官方软件源没有这个工具

需要添加 Cloudflare 官方 APT 源

# 1. 添加 GPG key

curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg > /dev/null

# 2. 添加软件源

echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main" | sudo tee /etc/apt/sources.list.d/cloudflared.list

# 3. 更新并安装

sudo apt update

sudo apt install cloudflared

也可以直接下载 DEB 包安装

# 1. 下载 cloudflared 最新 deb 包

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

# 2. 安装

sudo dpkg -i cloudflared-linux-amd64.deb

# 3. 验证

cloudflared --version

测试#

安装好以后,运行:

sudo cloudflared proxy-dns --address 127.0.0.1 --port 5053

测试一下:

dig @127.0.0.1 -p 5053 acme-v02.api.letsencrypt.org

如果能返回解析结果,就说明成功了

这里默认使用的是 Cloudflare 官方的 DoH

如果不行的话,可以换成国内的 DoH 服务

比如阿里:

https://223.5.5.5/dns-query

https://223.6.6.6/dns-query

比如腾讯:

https://doh.pub/dns-query

https://dns.pub/dns-query

示例

sudo cloudflared proxy-dns --address 127.0.0.1 --port 5053 \

--upstream https://223.5.5.5/dns-query \

--upstream https://223.6.6.6/dns-query

用 dig 或者 nslookup 之类的工具测试没问题的话,可以进入下一步。

添加服务#

创建 systemd service,让 cloudflared 常驻运行

sudo nano /etc/systemd/system/cloudflared-dns.service

内容:

[Unit]

Description=Cloudflared DNS over HTTPS proxy

After=network.target

[Service]

ExecStart=/usr/local/bin/cloudflared proxy-dns --address 127.0.0.1 --port 5053 \

--upstream https://223.5.5.5/dns-query \

--upstream https://223.6.6.6/dns-query \

--upstream https://doh.pub/dns-query \

--upstream https://dns.pub/dns-query

Restart=always

User=nobody

AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]

WantedBy=multi-user.target

应用 & 启动

sudo systemctl daemon-reexec

sudo systemctl enable --now cloudflared-dns

配置DNS#

使用 drop-in 配置的方式来设置 DNS

不要直接改 /etc/systemd/resolved.conf

sudo mkdir -p /etc/systemd/resolved.conf.d

sudo nano /etc/systemd/resolved.conf.d/dns.conf

内容:

[Resolve]

DNS=127.0.0.1:5053

FallbackDNS=223.5.5.5 223.6.6.6

DNSSEC=no

重启服务

sudo systemctl restart systemd-resolved

检查生效情况

resolvectl status

可以看到以下输出

$ resolvectl status

Global

Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

resolv.conf mode: stub

DNS Servers: 127.0.0.1:5053

Fallback DNS Servers: 223.5.5.5 223.6.6.6

这时候就搞定了,docker容器也会默认使用系统的这个 DNS

此时再去 swag renew 证书,就成功了✌️

一键脚本#

老规矩,我让大模型爷爷帮忙写了一个一键配置DoH的脚本

默认使用从官方 GitHub 仓库下载 deb 包安装的方式

可以直接执行

bash -c "$(curl -fsSL https://gist.github.com/Deali-Axy/8b2ad8e5a601f2c43f6e7debdfb0aa29/raw/3c57dbce7dc0e224ad4ad35606f15cbc34d4810e/install-doh.sh)"

脚本源码#

#!/usr/bin/env bash

set -e

echo "[1/6] 安装 cloudflared..."

if ! command -v cloudflared >/dev/null 2>&1; then

wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -O /tmp/cloudflared.deb

sudo dpkg -i /tmp/cloudflared.deb || sudo apt-get install -f -y

rm -f /tmp/cloudflared.deb

else

echo "cloudflared 已安装,跳过。"

fi

CLOUDFLARED_BIN=$(command -v cloudflared)

echo "cloudflared 路径: $CLOUDFLARED_BIN"

echo "[2/6] 创建 systemd service..."

sudo tee /etc/systemd/system/cloudflared-dns.service >/dev/null <<EOF

[Unit]

Description=Cloudflared DNS over HTTPS proxy

After=network.target

[Service]

ExecStart=${CLOUDFLARED_BIN} proxy-dns --address 127.0.0.1 --port 5053 \

--upstream https://223.5.5.5/dns-query \

--upstream https://223.6.6.6/dns-query \

--upstream https://doh.pub/dns-query \

--upstream https://dns.pub/dns-query

Restart=always

User=nobody

AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]

WantedBy=multi-user.target

EOF

echo "[3/6] 重新加载 systemd 并启用服务..."

sudo systemctl daemon-reexec

sudo systemctl enable --now cloudflared-dns

echo "[4/6] 配置 systemd-resolved..."

sudo mkdir -p /etc/systemd/resolved.conf.d

sudo tee /etc/systemd/resolved.conf.d/dns.conf >/dev/null <<EOF

[Resolve]

DNS=127.0.0.1:5053

FallbackDNS=223.5.5.5 223.6.6.6

DNSSEC=no

EOF

echo "[5/6] 重启 systemd-resolved..."

sudo systemctl restart systemd-resolved

echo "[6/6] 检查 DNS 配置..."

resolvectl status | grep "DNS Servers"

echo "✅ 安装完成!现在系统 DNS 已经走 DoH。"

将以上代码保存为 install-doh.sh

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 9:10:43

静态与非静态及类的继承C#成员方法全解析

类成员和方法分为静态和非静态两大类//静态成员或方法 找类名&#xff0c;进行使用&#xff0c;存储类中&#xff0c;是类共有&#xff0c;//非静态的成员或方法 找对象 进行使用 存储在每一个对象里面非静态方法&#xff1a;可以访问静态的成员或方法&#xff0c;也可以非静态…

作者头像 李华
网站建设 2026/5/1 3:08:27

基于java的SpringBoot/SSM+Vue+uniapp的旅游管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/4/30 11:55:14

基于java的SpringBoot/SSM+Vue+uniapp的电影购票系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/5/1 10:39:09

告别流量焦虑!跨境TK引流变现全攻略:从0到1打通流量转现金闭环

一、直击跨境商家痛点&#xff1a;TK引流变现为何屡战屡败&#xff1f;在TK月活超10亿的流量蓝海中&#xff0c;跨境商家本应拥有广阔的增长空间&#xff0c;但现实却截然相反&#xff1a;多数商家投入数万广告费&#xff0c;换来的是“高曝光、低转化”的尴尬&#xff1b;坚持…

作者头像 李华
网站建设 2026/5/1 10:34:56

大模型从0到精通:误差反向传播——神经网络中的“责任追溯”系统

本文是《大模型从0到精通》系列第一卷“奠基篇”的第五章,也是奠基篇的收官之作。前四章我们建立了完整框架:模型→损失→优化→网络结构。但神经网络有那么多参数,当预测出错时,怎么知道该调整哪个参数?本章将深入讲解反向传播——神经网络中的“责任追溯”系统,这是梯度…

作者头像 李华
网站建设 2026/5/1 3:11:47

2025 IT 就业分化明显,26 届及以后考生报考计算机专业是否明智?

收藏&#xff01;不想35岁被淘汰&#xff1f;网络安全或许是程序员的最佳转型方向 计算机专业虽进入分化阶段&#xff0c;但网络安全人才缺口达300万&#xff0c;高端领域供不应求。高校扩招与市场需求脱节导致供需失衡&#xff0c;未来"计算机行业"的复合型人才更具…

作者头像 李华