配置 stunnel

stunnel 用于在普通 TCP 连接之上增加 TLS 加密层。它既可以用作服务端(现在 Nginx、HAProxy 在这方面已经做得比它更好),也可以用在发起连接的客户端。

管理员可以使用 stunnel 包装 dig 的 TCP 查询,或者用它来包装本地的 DNS 转发服务(比如 unbound 虽然很早就有 tls-upstream 支持,但直到 1.7.1 才加入了 TLS name verify)


$ sudo apt install stunnel4
$ sudo sed -i -e "s/ENABLED=0/ENABLED=1/" /etc/default/stunnel4 

在 /etc/stunnel 目录下创建 rubyfish.conf 配置文件,将连接到本地 5353 端口的 TCP 封装成连接到红鱼的 DoT 服务


debug = err
[rubyfish-dns]
client = yes
accept = 127.0.0.1:5353
connect = 115.159.154.226:853
connect = 47.99.165.31:853
verifyChain = yes
CApath = /etc/ssl/certs
checkHost = dns.rubyfish.cn

启动 stunnel4 服务之后,即可用 dig 来查询红鱼 DNS 服务;或者将其配置为您的本地 DNS 服务上游【记得要配置成 tcp upstream】


$ dig @127.0.0.1 -p 5353 www.google.com +tcp