如何检查我的 DNS 链?

如何检查我的 DNS 链?

我想使用 DNSCrypt 来加密我的所有 DNS 数据包,所以我尝试这样做:

在 /etc/rc.local 上:

/usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk

然后我跑了:sudo /usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk

在 /var/unbound/etc/unbound.conf 上

在此输入图像描述

是否正确配置为通过 dnscrypt 路由我的所有 DNS 请求?

当我这样做时,host openbsd.org我得到了与在另一台虚拟 OpenBSD 机器上运行相同命令时得到的相同的 IP 地址,但是当我尝试 google.com 和 youtube.com 时,我得到了不同的 IP 结果?这让我觉得我犯了一些错误或者 DNS 解析器是流氓。

我如何检查是否确实通过端口 80 进行 DNS 请求?如果可能的话,我想知道是否可以检查它是否使用 DNS 解析器并加密我的请求,因为我只知道我可以解析域,但不知道所使用的路由。

我的操作系统是 OpenBSD 5.7 i386。

答案1

YouTube 和 Google 通过 CDN 提供服务,它们使用的 DNS 名称映射到许多不同的 IP 地址是正常的,也是预期的。

如果您想确保查询实际上正在通过 DNSCrypt,请暂时停止它:

# pkill -STOP dnscrypt-proxy

并查看您是否仍然收到新 DNS 查询的响应。不应该再这样了。

然后,恢复它:

# pkill -CONT dnscrypt-proxy

根据您的 Unbound 配置文件,代理正在侦听端口 40,因此您也可以tcpdump在此端口上运行并验证输出是否看起来像乱码而不是可解码的 DNS 数据包:

# tcpdump -n udp port 40

Unbound 侦听端口 80 上的传入连接没有任何问题,只要您的/etc/resolv.conf文件包含如下行:

nameserver [127.0.0.1]:80

不过,80 是一个奇怪的选择,因为您无法在同一端口上运行 Web 服务器(DNS 同时使用 UDP 和 TCP)。

tcpdump在端口 80 上启动应显示常规、未经身份验证、未加密的查询。

相关内容