博客
关于我
dnspeep:监控 DNS 查询的工具 | Linux 中国
阅读量:287 次
发布时间:2019-03-03

本文共 2326 字,大约阅读时间需要 7 分钟。

在过去的几天中,我编写了一个叫作 dnspeep 的小工具。这个工具可以让你看到电脑上正在进行的 DNS 查询,并查看其响应。目前它只有 250 行 Rust 代码。以下是我会讨论如何尝试它、能做什么、为什么我要开发它,以及在开发过程中遇到的问题。

如何尝试

我构建了一些二进制文件,因此你可以快速尝试。对于 Linux(x86):

wget https://github.com/jvns/dnspeep/releases/download/v0.1.0/dnspeep-linux.tar.gztar -xf dnspeep-linux.tar.gzsudo ./dnspeep

对于 Mac:

wget https://github.com/jvns/dnspeep/releases/download/v0.1.0/dnspeep-macos.tar.gztar -xf dnspeep-macos.tar.gzsudo ./dnspeep

它需要以超级用户身份运行,因为它需要访问计算机正在发送的所有 DNS 数据包。这与 tcpdump 的原因相同:它使用 libpcap,这与 tcpdump 使用的库相同。如果你不想在超级用户下运行下载的二进制文件,你也能在 GitHub 查看源码并自行编译。

输出结果是什么样的

以下是输出结果。每行都是一次 DNS 查询和响应:

name                 server IP      responsefirefox.com           192.168.1.1    A: 44.235.246.155, A: 44.236.72.93, A: 44.236.48.31bolt.dropbox.com     192.168.1.1    CNAME: bolt.v.dropbox.com, A: 162.125.19.131

这些查询来自于我在浏览器中访问的 neopets.com,而 bolt.dropbox.com 查询是因为我正在运行 Dropbox 代理,并且我猜它不时会在后台运行,因为其需要同步。

为什么我要开发又一个 DNS 工具

之所以这样做,是因为我认为当你不太了解 DNS 时,DNS 似乎真的很神秘!你的浏览器(和你电脑上的其他软件)一直在进行 DNS 查询,我认为当你能真正看到请求和响应时,似乎会有更多的“真实感”。

我写这个也把它当做一个调试工具。我想“这是 DNS 的问题?”的时候,往往很难回答。我得到的印象是,当尝试检查问题是否由 DNS 引起时,人们经常使用试错法或猜测,而不是仅仅查看计算机所获得的 DNS 响应。

你可以看到哪些软件在“秘密”使用互联网

我喜欢该工具的一方面是,它让我可以感知到我电脑上有哪些程序正使用互联网!例如,我发现某些软件出于某些理由不断地向 ping.manjaro.org 发送请求,可能是为了检查我是否已经连上互联网了。

实际上,我的一个朋友用这个工具发现,他的电脑上安装了一些以前工作时的企业监控软件,但他忘记了卸载,因此你甚至可能发现一些你想要删除的东西。

如果你不习惯的话, tcpdump 会令人感到困惑

当我试图向人们展示他们的计算机正在进行的 DNS 查询时,我的第一感觉是“好吧,使用 tcpdump”!而 tcpdump 确实可以解析 DNS 数据包!例如:

11:36:38.973512 wlp3s0 Out IP 192.168.1.181.42281 > 192.168.1.1.53: 56271+ A? incoming.telemetry.mozilla.org. (48)11:36:38.996060 wlp3s0 In IP 192.168.1.1.53 > 192.168.1.181.42281: 56271 3/0/0 CNAME telemetry-incoming.r53-2.services.mozilla.com., CNAME prod.data-ingestion.prod.dataops.mozgcp.net., A 35.244.247.133 (180)

这些行记录了对 incoming.telemetry.mozilla.org 的 DNS 查询和响应。分解这些记录可以帮助你更好地理解 DNS 的工作原理。

编写小型教育工具很有趣

最近,我对编写小型教育的 DNS 工具十分感兴趣。到目前为止我所编写的工具包括:

  • https://dns-lookup.jvns.ca(一种进行 DNS 查询的简单方法)
  • https://dns-lookup.jvns.ca/trace.html(向你显示在进行 DNS 查询时内部发生的情况)
  • 本工具(dnspeep)

以前我尽力阐述已有的工具(如 dig 或 tcpdump),而不是编写自己的工具,但经常我发现这些工具的输出结果让人费解,所以我非常关注以更加友好的方式来看这些相同的信息,以便每个人都能明白他们电脑正在进行的 DNS 查询,而不仅仅是依赖 tcpdump。

可能会有许多 bug

我只在 Linux 和 Mac 上简单测试了一下,并且我已知至少有一个 bug(不支持足够多的 DNS 查询类型),所以请在遇到问题时告知我!尽管这个 bug 没什么危害,因为它 libpcap 接口是只读的。所以可能发生的最糟糕的事情是它得到一些它无法解析的输入,最后打印出错误或是崩溃。

via: https://jvns.ca/blog/2021/03/31/dnspeep-tool/

转载地址:http://kyxl.baihongyu.com/

你可能感兴趣的文章
opencv笔记(1):图像缩放
查看>>
opencv笔记(二十四)——得到轮廓之后找到凸包convex hull
查看>>
OpenCV计算点到直线的距离 数学法
查看>>
Opencv识别图中人脸
查看>>
OpenCV读写avi、mpeg文件
查看>>
opencv里用calcCovarMatrix计算协方差矩阵
查看>>
OpenCV错误:在setSize中断言失败(s&>;=0)-尝试将图像放置在网络摄像头提要上时
查看>>
opencv面向对象设计初探
查看>>
OpenCV(1)读写图像
查看>>
OpenCV:不规则形状区域中每种颜色的像素数?
查看>>
OpenCV:概念、历史、应用场景示例、核心模块、安装配置
查看>>
OpenDaylight融合OpenStack架构分析
查看>>
OpenERP ORM 对象方法列表
查看>>
openEuler Summit 2022 成功举行,开启全场景创新新时代
查看>>
openEuler 正式开放:推动计算多样化时代的到来
查看>>
OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_openeuler切换root用户_su:拒绝权限_passwd: 鉴定令牌操作错误---国产瀚高数据库工作笔记001
查看>>
OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_踩坑_安装以后系统无法联网_启动ens33网卡---国产瀚高数据库工作笔记002
查看>>
OpenFeign 入门与实战
查看>>
OpenFeign源码学习
查看>>
OpenFeign组件声明式服务调用
查看>>