![不受约束的 DNS:使用 ssl-upstream 选项和/或 vpn 接口进行故障排除](https://linux22.com/image/1589975/%E4%B8%8D%E5%8F%97%E7%BA%A6%E6%9D%9F%E7%9A%84%20DNS%EF%BC%9A%E4%BD%BF%E7%94%A8%20ssl-upstream%20%E9%80%89%E9%A1%B9%E5%92%8C%2F%E6%88%96%20vpn%20%E6%8E%A5%E5%8F%A3%E8%BF%9B%E8%A1%8C%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4.png)
我最近想设置 unbound 来代替 dnscrypt 来解决我 rasp 上的 pi-hole 的查询。
目前 Raspbian 上可用的 unbound 版本是 1.6.0。
激活选项时
ssl-upstream: yes
ssl-service-key: "/etc/ssl/certs/ca-certificates.crt"
unbound 停止工作,我们在日志中看到类似这样的内容:
[1556709926] unbound[4394:0] info: server stats for thread 0: 23 queries, 7 answers from cache, 16 recursions, 0 prefetch
[1556709926] unbound[4394:0] info: server stats for thread 0: requestlist max 13 avg 1.875 exceeded 0 jostled 0
[1556709926] unbound[4394:0] info: mesh has 0 recursion states (0 with reply, 0 detached), 0 waiting replies, 16 recursion replies sent, 0 replies dropped, 0 states jostled out
[1556709926] unbound[4394:0] info: average recursion processing time 0.948223 sec
[1556709926] unbound[4394:0] info: histogram of recursion processing times
[1556709926] unbound[4394:0] info: [25%]=0.32768 median[50%]=0.603573 [75%]=0.920715
[1556709926] unbound[4394:0] info: lower(secs) upper(secs) recursions
[1556709926] unbound[4394:0] info: 0.000000 0.000001 1
[1556709926] unbound[4394:0] info: 0.008192 0.016384 1
[1556709926] unbound[4394:0] info: 0.016384 0.032768 1
[1556709926] unbound[4394:0] info: 0.262144 0.524288 4
[1556709926] unbound[4394:0] info: 0.524288 1.000000 6
[1556709926] unbound[4394:0] info: 1.000000 2.000000 1
[1556709926] unbound[4394:0] info: 2.000000 4.000000 2
[1556709926] unbound[4394:0] debug: cache memory msg=33040 rrset=33040 infra=17292 val=40931
[1556709926] unbound[4394:0] debug: switching log to stderr
我也尝试在 rasp 本身上设置 unbound 以通过 vpn 连接发送查询,但我显然无法通过 vpn 连接进行解析。我尝试通过从 vpn 连接硬编码 ip 地址来设置它,结果相同。我尝试分别使用 udp 和 tcp,结果相同
我是不是漏掉了什么?我通过 VPN 建立了连接,所以这显然不是问题所在。而且,一旦我停用 VPN 连接,问题就会消失。还是说这一切都应该在 1.6 中发生?
有人对此有想法吗?
提前致谢。
答案1
这些看起来像是错误的选项,至少ssl-service-key
应该指定实例的私钥(而不是受信任 CA 的列表!),并且您总是会将它与 中的公钥结合使用ssl-service-pem
,否则您不应该使用它。对于我的 Debian Stretch,以下配置允许在所有地址(对于 IPv4 和 IPv6)上侦听端口 53 上的普通 DNS 查询以及端口 853 上的 DoT(DNS-over-TLS)查询。
server:
#verbosity: 2
interface: 0.0.0.0
interface: ::0
interface: 0.0.0.0@853
interface: ::0@853
#tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt
ssl-service-key: "/var/lib/acme/live/your.domain.example.com/privkey"
ssl-service-pem: "/var/lib/acme/live/your.domain.example.com/fullchain"
ssl-port: 853
这是最终解析器的示例,因此它不使用转发器(您需要forward-zone
为此进行阻止。此外,您可以查看/usr/share/doc/unbound/examples/unbound.conf
带有说明的示例配置。在我的示例中,我使用acmetool自动生成密钥/证书/var/lib/acme/live
,但您可以使用任何您想要的方式(如果您不关心安全性,甚至可以省略它)。