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 = 118.89.110.78:853 connect =
47.96.179.163: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