我想使用 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 上启动应显示常规、未经身份验证、未加密的查询。