Unbound与TLS、proxy_protocol

unbound 是支持提供 DNS-over-HTTPS 和 DNS-over-TLS 的,但是为了能够用上 subnetcache 这个模块来给国内用户提供正确的国内IP结果(附上 edns client subnet 并发送给国内的公共DNS),如果处于 Caddy 后面做 upstream server,就不得不使用 proxy_protocol 了,否则 ecs 地址不是 client 的 IP 地址。 首先最重要的是要用 Caddy,而且是构建了 caddy-l4 这个插件的 Caddy,因为 nginx 不支持对 upstream 发起proxy_protocol v2。此外,对于用作DoT的域名,l4这个插件的 handle 部分需要先 terminate TLS 然后再 proxy v2,如下所示: 1 2 3 4 5 6 7 8 9…