使用 Cloudflared 部署 DNS over HTTPS

  大约从 2018 年开始,国外多家服务商都相继推出了自己的 DoH (DNS over HTTPS) 服务。在那之后的一段时间里,除了 红鱼 以外,国内几乎没有厂商提供 DoH 服务,所以我也一直迟迟没有让自建的 DNS 使用支持 DoH 的服务器来作为上游服务器。最近腾讯和阿里等国内服务商陆续开放了他们的 DoH 服务,测试之后发现性能还不错,于是我将公司 DNS 服务的上游也切换成了 DoH 服务器,下面是大致过程。

下载

For x86_64

1
$ wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.tgz

For ARM

1
$ wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz

安装

1
2
$ tar -xzvf cloudflared-stable-linux-amd64.tgz
$ sudo install -Dm755 cloudflared /usr/local/bin/cloudflared

测试

1
2
$ sudo cloudflared proxy-dns --address 127.0.0.1 --port 1053
$ dig +short -p 1053 @127.0.0.1 baidu.com

配置

创建配置文件目录

1
$ sudo mkdir /etc/cloudflared

编写配置文件

创建文件 /etc/cloudflared/config.yml,内容如下:

1
2
3
4
5
6
7
8
9
proxy-dns: true
proxy-dns-port: 1053
proxy-dns-address: 127.0.0.1
proxy-dns-upstream:
- https://dns.pub/dns-query
- https://doh.pub/dns-query
- https://223.5.5.5/dns-query
- https://223.6.6.6/dns-query
- https://rubyfish.cn/dns-query

设置为系统服务

1
$ sudo cloudflared service install

修改 Dnsmasq 配置

删除以下选项:

  • all-servers
  • resolv-file

添加以下选项:

  • no-resolv
  • server=127.0.0.1#1053