DNS 测试工具 - 测一下全世界的服务器以可视化展示数据 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bigtear
V2EX    宽带症候群

DNS 测试工具 - 测一下全世界的服务器以可视化展示数据

  •  
  •   bigtear 2024-11-08 20:13:17 +08:00 3076 次点击
    这是一个创建于 369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/xxnuo/dns-benchmark

    dnspy - 测试全世界的 DNS 服务器

    数据分析面板预览

    preview

    数据分析面板,内含示例数据

    测试工具

    在仓库的 releases 页面中按你的系统架构下载 dnspy-* 文件。

    然后必须关闭所有代理软件的 Tun 模式、虚拟网卡模式,否则会影响测试结果。

    重命名文件为 dnspy( Windows 是 dnspy.exe),然后打开终端,进入到你这个文件所在的目录。执行命令开始测试

    unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY ./dnspy 

    按提示输入启动测试

    默认使用多线程模式,以加快测试速度。但是默认参数 10 个线程需要至少上下行 1 MB/s 网络和至少 4 核心处理器。 如果网络或处理器不好,会导致测试结果不准确,必须通过-w 参数降低线程数。

    测试完成后会输出到当前目录下形如 dnspy_result_2024-11-07-17-32-13.json 的 JSON 文件中。

    按程序提示输入 Yy 或直接回车,会自动打开数据分析面板网站,点击网站右上角的 读取分析 按钮,选择你刚才的 JSON 文件,就可以看到可视化测试结果了。

    15 条回复    2024-11-21 12:04:53 +08:00
    blackgloves
        1
    blackgloves  
       2024-11-08 23:59:44 +08:00
    可以,很实用
    ucyo
        2
    ucyo  
       2024-11-09 00:27:29 +08:00

    很不错的工具,能加下这里可以复制吗
    cnkuner
        3
    cnkuner  
       2024-11-09 00:51:11 +08:00
    面板中的地址不能复制啊。
    bigtear
        4
    bigtear  
    OP
       2024-11-09 20:45:46 +08:00
    @ucyo
    @cnkuner 第一次进去有提示呀,点击右侧的柱图可以复制地址
    night98
        5
    night98  
       2024-11-10 00:32:00 +08:00
    分析后的网页建议增加一下可以复制,不然想复制 dns 地址还得手打或者去识别
    bigtear
        6
    bigtear  
    OP
       2024-11-10 09:54:49 +08:00 via Android
    @night98 有提示呀,点击右侧的柱图可以复制地址,我看看搞个显眼的提示
    onion83
        7
    onion83  
       2024-11-11 00:50:21 +08:00
    首先,肯定楼主的工作和探索精神 ,但是家庭或者非专业监控机构,去监控全世界的 dns 个人觉得意义不大,dns 服务器一般都是用运营商就近提供或者使用大厂的 DNS ,对于单一网络条件下去测试全球的 QPS 和成功率,自身网络就是瓶颈,数据没有参考价值。

    如果是普通用户挑选优质 DNS , 在 Windows 平台且只用于临时测试,希望测速后一键切换
    友情推荐免费 dns-jumper : https://www.sordum.org/7952/dns-jumper-v2-3/3/#8

    https://imgur.com/klvZrWV
    bigtear
        8
    bigtear  
    OP
       2024-11-11 14:21:22 +08:00
    @onion83 这不是监控,这是测速工具,就是因为 dnsjumper 只有 windows 版而且数据不直观,所以我写了这个工具
    onion83
        9
    onion83  
       2024-11-11 16:32:27 +08:00 via Android
    @bigtear dns-jumper 这种表格有数字还能排序的形式还不够直观 最关键的问题我因为说了,你的单一网络本身就是最大的瓶颈,响应速度几乎就是你的网络延迟。 加上 dns 服务器普遍都会存在防火墙,类似 223.5.5.5 还有每日,每小时限速测率,还没有考虑 isp 对 53 等端口的特殊关照,所以说您做这个小工具也就是有个图表能看看而已,意义其实并不大,放到任意用户的手里结果都会不一样的。但是作为练手的作品,我是非常肯定您的想法和动手能力的,起码东西做出来了。
    bigtear
        10
    bigtear  
    OP
       2024-11-12 22:38:04 +08:00
    @onion83 #9 你需要学学小学语文了 最关键的问题是你没搞明白这个工具是干嘛的,你说的所有东西都是我的专业领域,我当然知道这些因素。所以说明确告诉您的话这个工具没半毛钱关系。我是非常肯定您的话的,起码连这个工具是干什么的都不知道就在那指点江山挥斥方裘了。
    onion83
        11
    onion83  
       364 天前
    @bigtear 专不专业不是您自认的,V2 都是行内人士懂的人一眼便知道你作品的问题所在。如果连数据都是错的,一切的什么可视化、评价体系就是 s 上雕花,毫无价值。
    bigtear
        12
    bigtear  
    OP
       362 天前 via Android
    @onion83 你笑死我了,你真的看代码了吗,什么都不懂就自以为是
    onion83
        13
    onion83  
       361 天前
    我是一名有着 15 年经验的业余程序员,虽未在像 V2EX 这样的专业平台与大家以代码会友,但我也认真研究了您的源代码。在此,我想先谈谈对您作品`dns-bechmark`的一些看法。

    您的`dns-bechmark`作品是这样运行的:它以`dnspyre`(目前 star 数为 124 的 DNS压力测试工具,https://github.com/Tantalor93/dnspyre )为核心,通过 Go 语言调用外部`dnspyre`命令。这个工具会对自行收集的 DNS 服务器列表进行测试,测试时利用世界排名较靠前的 1000 个域名( https://github.com/Tantalor93/dnspyre/blob/master/data/1000-domains )进行并发解析。在这个过程中,`dnspyre`会输出测试的 json 结果,您的作品会解析这些结果,并结合自身的评分体系对 DNS 服务器进行评分,同时使用 GEOCODE 分类,最终生成结果 json 文件。最后通过 Web 前端读取结果,并按照评分高低进行可视化展示。

    不过,这个作品存在一些问题。

    首先是关于评分算法与网络性能相关的问题。作为核心的压力测试工具`dnspyre`,其本身无法规避网络性能问题。您在评分算法中设置的`LatencyRangeMax`、`LatencyRangeMin`、`LatencyFullMarkPoint`这三个算子都和网络延时密切相关。这就导致了按照您的算法,像 1.1.1.1 这样的 DNS 服务器得分远低于 223.5.5.5 ,但这与实际情况并不相符。

    其次,使用`dnspyre`对公共 DNS 进行高频查询存在问题。暂且不考虑这种行为是否符合道德规范,这种高频查询会浪费公共资源。而且当单 IP 高频次查询达到一定程度时,必然会触发 DNS 服务商的防火墙,这会进一步影响评分算法的结果。

    再者,您的评分算法只考虑了`errorRate`,却没有考虑解析结果的准确性,也没有考虑诸如 DNS 劫持等情况。我们都知道,在国内由于一些特殊原因,查询 Google 、Facebook 等域名时,即使局域网内配置了旁路由进行 IP 分流/cache ,RTT 几乎都是 1ms ,但这显然不符合真实的网络解析情况。

    最后,在对 DNS 服务器地址使用`net.LookupIP(server)`进行解析并返回 geo code 进行分类时也有问题。因为`net.LookupIP`本身会依赖系统的 resolver 进行解析,也就是会依赖系统默认的 DNS 。然而很多公共 DNS 是在多国部署的,这样做会导致地区分类不准确。

    总结来说,您的`dns-bechmark`作品有其亮点。您精心收集了全球很多 DNS 服务器,并利用`dnspyre`进行压力测试,最后将结果汇聚并进行了可视化展示,界面还算美观,这在一定程度上可以为本地优选服务器提供参考。但需要注意的是,如前文所述,影响评分结果的主要因素是网络延时,所以这个结果只能体现本地到“世界 DNS”的性能,仅对本地网络有参考价值,缺乏分享和对比价值。毕竟,通常情况下速度最快的 DNS 往往是本地宽带运营商提供的。此外,您的评分只考虑了 QPS 、延时、错误率等指标,没有对解析结果、应用层 RTT 等结果进行校验,这就可能导致得分最高的 DNS 服务器未必能提供最好的解析结果。还有一点,鉴于您的作品并非 100%原创,尤其是核心的`bechmark`程序`dnspyre`,希望您能在 README 文件中对`dnspyre`进行相关引用并致谢,这符合开源社区的礼仪规范。

    --- 感谢豆包对人类回复进行了润色 ---
    bigtear
        14
    bigtear  
    OP
       360 天前
    @onion83 #13 最后一次回复你了,跟你这种笨人沟通太困难了。

    首先你用 AI 读代码也就算了,起码算是知道这个程序的工作原理。
    你还用一个人工智障 AI 来生成反驳的论点,你真的是要把我笑死了。

    我再耐心回答你一下吧:

    我已经跟你说了最关键的问题是你没搞明白这个工具是干嘛的,
    你固执且愚蠢,给你指出了你还是没有发现。
    你说的这些问题和这个程序没有任何关系,这是一个
    《测试本地网络对 DNS 服务器的可访问性和可靠性的测试工具》

    回复你一些问题吧,

    1. 求求你用聪明一点的 AI 吧,为什么要用现在就是个人工智障的 AI ???
    Cloudflare 的 1.1.1.1 DNS 被长城防火墙阻断了,当然没有阿里的 223.5.5.5 速度快了,你和这个 AI 都是大笨比。

    2. 不存在高频查询,因为你业余,用 AI 读代码,漏掉了许多代码中的关键信息。
    可以明确的告诉你,查询频率不高于正常使用且对服务器的负载造不成任何影响,如果因为这个小小工具影响到服务器,那说明这个服务器不可能支持超过十个人用!!!

    3. 我本地网络的测试不用本地的 DNS 解析难道我在中国用地球另一头的服务器解析吗???大笨比!!!你也没看到 README 里明确说明了关闭所有 Tun 和 Proxy 网络。

    还搁这儿总结呢,用你自己的话来说就是你这个人说的话和 “评价体系就是 s 上雕花,毫无价值。”
    BABYMETAL
        15
    BABYMETAL  
       356 天前
    请问输入什么命令以测试单个 dns 服务器或者按单独的文件内列表得 dns 服务器测试?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1022 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 18:47 PVG 02:47 LAX 10:47 JFK 13:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86