关于DnsDiag
DnsDiag是一款针对DNS的故障排除和安全审计工具,在该工具的帮助下,广大研究人员可以轻松检测DNS基础设施的安全性。
你是否曾怀疑过你的 ISP 是否劫持了你的 DNS 流量?你是否曾观察到 DNS 响应有任何异常行为?你是否曾被重定向到错误的地址并怀疑你的 DNS 有问题?DnsDiag可以对你的 DNS 请求和响应执行基本审核,以确保你的 DNS 正常运行。
你可以使用DnsDiag测试任何给定 DNS 服务器对任意请求的响应时间dnsping。就像传统的 ping 实用程序一样,它为你提供了类似的 DNS 请求功能。你还可以跟踪 DNS 请求到达目的地的路径,以确保它没有被重定向或劫持。这可以通过比较发送到同一 DNS 服务器的不同 DNS 查询来实现dnstraceroute,并观察路径之间是否有任何差异。
DnsDiag的dnseval组件能够评估多个 DNS 解析器并为你的网络选择最佳 DNS 服务器。虽然强烈建议你使用自己的 DNS 解析器,并且不要信任任何第三方 DNS 服务器,但如果你需要为你的网络选择最佳 DNS 转发器,dnseval你可以从性能(延迟)和可靠性(丢失)的角度比较不同的 DNS 服务器。
工具要求
dnspython>=2.6.1
cymruwhois>=1.6
httpx>=0.27.0
cryptography>=42.0.7
h2>=4.1.0
工具安装
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。
源码安装
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/farrokhi/dnsdiag.git
然后切换到项目目录中,使用pip3命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:
cd dnsdiag pip3 install -r requirements.txt
除此之外,我们也可以使用pip命令直接安装DnsDiag:
pip3 install dnsdiag
发布版本安装
我们会不定期发布适用于 Windows、Mac OS X 和 Linux 的二进制软件包。你也可以从【发布页面】获取最新版本。
Docker安装
如果你不想在本地机器上安装DnsDiag,你可以使用 Docker 镜像并在容器中运行程序。例如:
docker run --network host -it --rm farrokhi/dnsdiag dnsping.py
工具使用
dnsping
DnsDiag的dnsping组件可以通过发送任意 DNS 查询指定次数来 ping DNS 解析器。使用–help可获取工具持的命令行选项。以下是一些有用的参数选项:
–tcp、–tls和–doh可以选择使用的传输协议,默认为 UDP;
–flags用于显示每个响应的响应标志(包括 EDNS );
–dnssec可以请求 DNSSEC;
–ede用于显示扩展 DNS 错误消息;
–nsid用于显示名称服务器标识符 (NSID);
除了 UDP,我们还可以分别使用 TCP、DoT(TLS 上的 DNS)和 DoH(HTTPS 上的 DNS)进行ping–tcp操作,相关选项分别为–tcp、–tls和–doh:
./dnsping.py -c 5 --dnssec --flags --tls --ede -t AAAA -s 8.8.8.8 brokendnssec.net
dnsping.py DNS: 8.8.8.8:853, hostname: brokendnssec.net, proto: TLS, class: IN, type: AAAA, flags: [RD] 75 bytes from 8.8.8.8: seq=1 time=113.631 ms [QR RD RA DO] SERVFAIL [EDE 10: For brokendnssec.net/soa] 75 bytes from 8.8.8.8: seq=2 time=115.479 ms [QR RD RA DO] SERVFAIL [EDE 10: For brokendnssec.net/soa] 75 bytes from 8.8.8.8: seq=3 time=90.882 ms [QR RD RA DO] SERVFAIL [EDE 10: For brokendnssec.net/soa] 75 bytes from 8.8.8.8: seq=4 time=91.256 ms [QR RD RA DO] SERVFAIL [EDE 10: For brokendnssec.net/soa] 75 bytes from 8.8.8.8: seq=5 time=94.072 ms [QR RD RA DO] SERVFAIL [EDE 10: For brokendnssec.net/soa] --- 8.8.8.8 dnsping statistics --- 5 requests transmitted, 5 responses received, 0% lost min=90.882 ms, avg=101.064 ms, max=115.479 ms, stddev=12.394 ms
dnstraceroute
DnsDiag的dnstraceroute组件是一款路由跟踪实用程序,用于找出 DNS 请求到达目的地所经过的路径。我们可以将其与实际网络路由跟踪进行比较,并确保 DNS 流量没有路由到任何不需要的路径。
除了UDP之外,还支持TCP作为传输协议,使用–tcp标志。
./dnstraceroute.py --expert --asn -C -t A -s 8.8.4.4 facebook.com
dnstraceroute.py DNS: 8.8.4.4:53, hostname: facebook.com, rdatatype: A 1 192.168.0.1 (192.168.0.1) 1 ms 2 192.168.28.177 (192.168.28.177) 4 ms 3 192.168.0.1 (192.168.0.1) 693 ms 4 172.19.4.17 (172.19.4.17) 3 ms 5 dns.google (8.8.4.4) [AS15169 GOOGLE, US] 8 ms === Expert Hints === [*] public DNS server is next to a private IP address (possible hijacking)
dnseval
DnsDiag的dnseval组件一个批量 ping 实用程序,它向给定的 DNS 服务器列表发送任意 DNS 查询。此脚本用于同时比较多个 DNS 服务器的响应时间。
我们可以分别使用和dnseval来比较使用不同传输协议(如 UDP(默认)、TCP、DoT 和 DoH)的响应时间。参数选项分别为–tcp、–tls和–doh:
./dnseval.py --dnssec -t AAAA -f public-servers.txt -c10 ripe.net
server avg(ms) min(ms) max(ms) stddev(ms) lost(%) ttl flags response ---------------------------------------------------------------------------------------------------------------------------- 1.0.0.1 36.906 7.612 152.866 50.672 %0 300 QR -- -- RD RA AD -- NOERROR 1.1.1.1 7.752 7.512 8.132 0.183 %0 298 QR -- -- RD RA AD -- NOERROR 2606:4700:4700::1001 7.661 7.169 8.102 0.240 %0 297 QR -- -- RD RA AD -- NOERROR 2606:4700:4700::1111 7.802 7.000 8.128 0.312 %0 296 QR -- -- RD RA AD -- NOERROR 195.46.39.39 14.723 7.024 78.239 22.362 %0 300 QR -- -- RD RA -- -- NOERROR 195.46.39.40 7.524 6.972 10.897 1.191 %0 300 QR -- -- RD RA -- -- NOERROR 208.67.220.220 70.519 6.694 180.229 66.516 %0 300 QR -- -- RD RA AD -- NOERROR 208.67.222.222 37.868 6.663 107.601 41.178 %0 300 QR -- -- RD RA AD -- NOERROR 2620:0:ccc::2 31.471 6.768 178.647 56.546 %0 299 QR -- -- RD RA AD -- NOERROR 2620:0:ccd::2 20.651 6.699 145.029 43.702 %0 300 QR -- -- RD RA AD -- NOERROR 216.146.35.35 19.338 6.713 131.198 39.306 %0 300 QR -- -- RD RA AD -- NOERROR 216.146.36.36 107.741 73.421 266.969 58.003 %0 299 QR -- -- RD RA AD -- NOERROR 209.244.0.3 14.717 7.015 80.329 23.058 %0 300 QR -- -- RD RA -- -- NOERROR 209.244.0.4 7.184 7.003 8.197 0.361 %0 300 QR -- -- RD RA -- -- NOERROR 4.2.2.1 7.040 6.994 7.171 0.052 %0 299 QR -- -- RD RA -- -- NOERROR 4.2.2.2 14.358 6.968 79.964 23.052 %0 300 QR -- -- RD RA -- -- NOERROR 4.2.2.3 7.083 6.945 7.265 0.091 %0 299 QR -- -- RD RA -- -- NOERROR 4.2.2.4 7.103 6.990 7.238 0.086 %0 299 QR -- -- RD RA -- -- NOERROR 4.2.2.5 7.100 7.025 7.267 0.074 %0 299 QR -- -- RD RA -- -- NOERROR 80.80.80.80 149.924 53.310 247.395 97.311 %0 299 QR -- -- RD RA AD -- NOERROR 80.80.81.81 144.262 53.360 252.564 97.759 %0 298 QR -- -- RD RA AD -- NOERROR 8.8.4.4 9.196 7.160 10.974 1.484 %0 299 QR -- -- RD RA AD -- NOERROR 8.8.8.8 7.847 7.056 9.866 0.836 %0 299 QR -- -- RD RA AD -- NOERROR 2001:4860:4860::8844 31.819 7.194 155.761 50.671 %0 299 QR -- -- RD RA AD -- NOERROR 2001:4860:4860::8888 7.773 7.200 9.814 0.777 %0 298 QR -- -- RD RA AD -- NOERROR 9.9.9.9 21.894 6.670 81.434 30.299 %0 300 QR -- -- RD RA AD -- NOERROR 2620:fe::fe 21.177 6.723 80.046 30.062 %0 300 QR -- -- RD RA AD -- NOERROR
许可证协议
本项目的开发与发布遵循BSD-2-Clause开源许可协议。
项目地址
DnsDiag:【GitHub传送门】
参考资料
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容