Linux系统如何一键配置DoH,防止DNS被污染?

摘要:前言 最近我的 swag 服务突然证书 renew 失败 诊断了一下发现原来是无法解析 acme-v02.api.letsencrypt.org 域名 换了几个 DNS 都不行,应该是 DNS 被污染或者劫持了 这时我才意识到不上 DoH
前言 最近我的 swag 服务突然证书 renew 失败 诊断了一下发现原来是无法解析 acme-v02.api.letsencrypt.org 域名 换了几个 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 之类的工具测试没问题的话,可以进入下一步。
阅读全文