首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  DNS

DNS Chooser,一个支持多上游 DNS 本地 DNS 工具

  •  
  •   gazeboxu · 107 天前 · 4220 次点击
    这是一个创建于 107 天前的主题,其中的信息可能已经有所发展或是发生改变。
    支持 N 多个上游 DNS,选最快的 IP 给你,大家尝试一下,https://www.jianshu.com/p/ad63fe00858c。本来是自己在看 coursera 过程遇到的问题,折腾半天,最后自己做了个工具。
    第 1 条附言  ·  107 天前
    特别适合上 coursera,解决视频卡顿,放不出来的问题。这个也是做这个工具的初始原因,之前我个人是设置本地静态 hosts,但太麻烦了,特别是 ios 设备还不能设置 hosts。
    37 回复  |  直到 2018-03-31 11:56:13 +08:00
        1
    LGA1150   107 天前   ♥ 1
    dnsmasq 配置加行 all-servers 的事……
        2
    gazeboxu   107 天前   ♥ 1
    可能是我表述有问题,我这里说的最快的 IP 不是 DNS 返回最快的,而是实际你连通的速度是最快的(通俗点说就是 PING 值最低的),all-servers 会返回最先收到的 DNS 回应给你,这个往往不是最好,最先返回的往往是最不想要的^__^。如果用 tcpdump 跟踪过向 8.8.8.8 请求回应过程就更清楚了。这个工具最适合访问 CDN 的情形,因为 CDN 在各地方都有点,比如 AWS 的 CDN,在日本,韩国,香港都有点,有时香港快,有时日本快,有时韩国快。链接里面说得更清楚些,也有测试,可以看看。
    另外 V2EX 的同学都是野猫子么?
        3
    moonvstod   107 天前
    试用了,貌似解决了我遇到的一个:只要没 DNS 缓存,解析网址 dns lookup 3~4 秒的问题
        4
    gazeboxu   107 天前
    3~4 秒,什么意思? DNS Chooser 解析一个网址不可能花这么长时间的。有 1 秒超时的,即使解析一个不存在的域名也不会超过 1 秒的。
        5
    jimzhong   106 天前
    想法不错,不过通过建立 TCP 连接测速不太文明。
        6
    miaomiao888   106 天前
    @gazeboxu 哥们这想法和我想一块去了,好多年前一直在找类似的工具都没有,全是单纯取 DNS 返回最快的 IP,像 flickr,有时用香港 DNS 解析的 IP 延迟只有 20MS 左右,谢谢,用用先!
        7
    gazeboxu   106 天前
    @jimzhong,其实也不算不文明,是个好问题,我在一开始实现时就考虑过这个问题。本质上讲 PING 或 TCP 建链在 IP 层都是来回几个 IP 包,PING 两个,TCP 建链三个。连通后马上关闭,同时取消其它请求。另外我也尽量减少了不必要的数据请求,上游 DNS 的返回结果做了合并处理,只有完全不同的返回结果下才要分开测速,而且同一 DNS 应答返回结果多于一个 A 记录的情况下,也只测一个,认为一组返回结果效果应该是一样的。因为本身也带有 CACHE,从 IP 包层面来看,增加的 IP 流量应该是几乎可以忽略不记的。
        8
    gazeboxu   106 天前
    @miaomiao888,是呀,我在自己动手做之前也觉得应该有这种工具,但找了几天,确实没有找到,我当时上 coursera,视频完全看不动,不得以用 KXSW 的方式,但全是流量啊,总感觉不是办法。最后决定自己整一个,因为自己也要用,调研的开源项目有 N 个,NSD, Unbound, YADIFA, BIND, MaraDNS 等等,后来是基于 dnscrypt-proxy 来做的。开源项目都很好,就是对用户不太友好,我特别考虑了这点,尽量做成一键启用。其实还可以做较多的工作,比如配置放网上,给用户查询 DNS 使用情况,广告屏蔽。不过有点远了,当前也没精力搞,核心功能还是找最快的 IP。另外如果觉得好用帮助推荐给朋友用一下,有 BUG 请反馈。感谢!
        9
    gazeboxu   106 天前
    @jimzhong,另外如果用普通域名解析,如果找到的 IP 完全不通还好,如果是掉包率较高的 IP,那 IP 层面引起的重传可能更可观。域名解析只是一下子,而之后才是大量数据传输,所以我真不觉得是流氓行为(比如吸血骡?),如果被认为是流氓软件真心与我的初始想法完全背离哈。
        10
    tony1016   106 天前
    确实是 dnsmasq 的一句 all-servers
        11
    venster   106 天前
    win10 17025 预览版,运行报错

    应用程序: dnschooser-winclient.exe
    Framework 版本: v4.0.30319
    说明: 由于未经处理的异常,进程终止。
    异常信息: System.ArgumentException
    在 System.ThrowHelper.ThrowArgumentException(System.ExceptionResource)
    在 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Insert(System.__Canon, System.__Canon, Boolean)
    在 dnschooser_winclient.NetworkManager.GetNICs()
    在 dnschooser_winclient.ApplicationForm.update_Service_Info_Once()
    在 dnschooser_winclient.ApplicationForm..ctor()
    在 dnschooser_winclient.Program.Main(System.String[])

    服务正常运行。点击 client 无反应,事件日志如上记录。卸载不正常,服务删不掉,需要手工删服务
        12
    gazeboxu   106 天前
    @venster,这个东东要求.Net Framework 4.6.1 以上版本,README.TXT 里有安装相关的问题。另外也可以用"dnschooser.exe --uninstall"卸载。
        13
    venster   106 天前
    @gazeboxu #12 4.6.1 肯定是够了。17025 版本自带的是 4.7.1.
        14
    gazeboxu   106 天前 via iPhone
    那可能要查一下了,没有 client 也可以用,就是要手动,要自己设置 dns 为 127.0.0.1。抱歉
        15
    gazeboxu   106 天前
    @venster,尝试改了一下,可能是你有两个网卡的描述是相同的原因,麻烦下载最新版本尝试一下。只替换 CLIENT 就可以了。https://coding.net/u/gazeboxu/p/dnschooser-pub/git/raw/master/release/dnschooser/dnschooser-winclient.exe
        16
    miaomiao888   105 天前
    如果支持非标准端口的话就可以使用一些现成的 DNS 达到防污染的效果,比如 208.67.222.222:5353/443 202.141.162.123:5353
        17
    miaomiao888   105 天前
    另外,本地 DNS 地址可以设定吗,比如 127.0.0.5
        18
    gazeboxu   105 天前   ♥ 1
    @miaomiao888,你是指上游 DNS 非标准端口么?支持的哈,配置文件里写成 ip:port 形式就可以了(需要卸载,再安装 才能生效哈),不过同一 IP 多端口要分开写哈。其实这样也是明文,要完全防污染,只有起用上游 dnscrypt,配置稍微复杂一些,可参照 dnscrypt-proxy 的文档来。127.0.0.5 ?没太懂你的意思,你是指本地 DNS 不配置成 127.0.0.1,而写成 127.0.0.5 是吧?这个现在不直接支持哈,改代码可以,我觉得意义不大哈。
        19
    gazeboxu   105 天前
    如果只是为了防污染,不需要这样的哈,当前缺省配置了 5 个游 DNS 了,2 个国内,3 个国外,再加一个自动的,除非所有 DNS 同时被污染才会有问题。而如果是为了防止劫持,那就要把上游 DNS 全换成完全可靠的,还要把自动的那个强制禁用了才行哈。
        20
    miaomiao888   105 天前
    @gazeboxu 谢谢,支持非标准端口非常不错,目前来说靠非标准端口防污染还是比较方便的;
    主要因为 dnschooser 还没 HOSTS 之类的功能,所以目前我需要与其他 DNS 工具配合使用,比如 Acrylic DNS Proxy ;
    而 Acrylic DNS Proxy 已经占用了默认的 127.0.0.1,所以希望能自定义(不过我已经用 16 进制编辑器改成 5 发现也能正常运行);
    另外建议在 dnschooser 启动时不自动添加系统原有的 DNS,内置的几组已经足够了,而且我发现和 Acrylic DNS Proxy 一起使用会导致 Acrylic 的解析日志重复很长,怀疑 dnschooser 把 127.0.0.1 添加进去导致的循环解析,总之希望能有更多能自定义的地方。:)
        21
    miaomiao888   105 天前
    所有的参数都能在配置文件里定义,然后用批处理安装 /启动就行,只跑一个进程,这类工具其实也不常用到 GUI,GUI 感觉有点多余!
    发现卸载需要调用 GUI,像 V2RAY 那种主程序和 GUI 分开的挺不错
        22
    gazeboxu   105 天前
    @miaomiao888,如果要禁用本机原始的 DNS,在 conf 文件里添加 OriginalResolverAddress disabled,停止 /启动一下就可以了。自动添加本机原始 DNS 的原因是有时本地局域网有特殊解析需要。
    嗯,这个所有的配置都是通过配置文件来的,GUI 的主要作用就是找到网卡并设置 DNS 为 127.0.0.1,然后监控一些不正常状态(比如网卡 DNS 设置成 127.0.0.1,但服务没有运行或要求自动启用,但到了连接一个新 WIFI 又没有自动设置等等)。主要是你是属于对计算机比较熟,喜欢折腾的同学,一般用户如果没有 GUI,可能就很难用了。
    卸载调用 GUI 的原因也是需要将本机原来的 DNS 还原,用服务来做这个,不太合适,因为服务本身要尽量做到跨平台。
    另外如果觉得好用,麻烦帮推荐一下,感谢!
        23
    gazeboxu   105 天前
    我刚才查了一下 Acrylic DNS Proxy,主要就是 CACHE 么?如果是这个的话,不需要哈,dnschooser 自带了 cache 的,你可以仔细看一下我简书上的那个文章。不过 caceh 是完全遵守 TTL 规范的,一般域名在 1 至 2 分钟内,但就 cache 来说,足够用了。你也可以尝试解析同一个域名两次,第二次是立即返回的。且 WINDOWS 本身还带有 cache (用 ipconfig/displaydns 可查看)。
        24
    jimzhong   105 天前
    @gazeboxu 话说回来,用 TCP 连接测试兼容性是最佳的,有些服务器不响应 ping 请求。
        25
    miaomiao888   104 天前
    @gazeboxu Acrylic DNS Proxy 的缓存是一方面,可以自行设置缓存更新周期,HOSTS 也比较常用,支持通配符,不同域名支持使用不同的 DNS 进行解析,比如有的域名需要用内网 DNS 解析,或者让双栈域名只解析 IPV4
    当然目前 dnschooser 已经非常不错也够用了,只不过我需求略多所以需要搭配。
        26
    kevinlicy   104 天前
    这个很好用,多谢作者!
        27
    a86913179   103 天前
    确实比 dnsmasq 的 all-servers 有用多了
        28
    wzw   102 天前
    多谢多谢, 我立刻试试
        29
    leobin   101 天前
    很赞,有这种寻求很久了
        30
    allin1   101 天前
    发现一个小问题,conf 文件改动过就不能安装服务了。恢复原样又可以了
        31
    gazeboxu   101 天前
    @allin1,没问题的哈,改了后可以安装的,你可能是改的格式有问题,可以发上来我看看。
        32
    allin1   101 天前
    对哦,是我的问题。我是用记事本打开,没看到后面的符号。现在解决了。可以安装了
        33
    acca   68 天前
    软件被 bitdefender 报毒了
        34
    miaomiao888   61 天前
    用到现在感觉非常不错,顺便催下增加 TCP,202.14.67.4 这类港台 DNS 用 TCP 解析 TUMBLR、FLICKR、AKICDN 的 IP 速度都非常不错!

    帖个防污染配置:StandardResolverAddress 101.6.6.6:53,223.113.97.99:53,208.67.222.222:5353,202.141.162.123:5353,202.38.93.153:5353,202.141.178.13:5353
        35
    HandSonic   40 天前
    希望能开源,希望能移植到 OpenWrt/LEDE
        36
    aleung   30 天前 via Android
    这个要能移植到 linux,可以安装在路由器树莓派上价值就大了
        37
    ondrej   19 天前
    希望能移植到 OpenWrt/LEDE+1
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2873 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 24ms · UTC 03:18 · PVG 11:18 · LAX 20:18 · JFK 23:18
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1