V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
walleL
V2EX  ›  分享创造

撸了一个 DNS 解析自动切换工具 DNSwitcher

  •  
  •   walleL · 2015-01-20 15:56:08 +08:00 · 5274 次点击
    这是一个创建于 3393 天前的主题,其中的信息可能已经有所发展或是发生改变。

    功能

    监控同一域名下多台主机的网络情况,并调用 dnspod-api 自动切换 DNS 解析到网络较好的主机

    用途

    买 SS 服务时都会提供多个不同地区的主机,我们需要找到网络最好的一个主机,而且当该主机网络变差时还希望能自动切换。
    我的方案
    1. 配置 SS Server 为我自己的域名 ss.example.com
    2. 通过 DNSwitcher 找到当前网络环境下最好的 SS 主机, 并自动将 ss.example.com CNAME 到该主机

    当然啦~ 其他类似场景也可以使用该工具

    原理

    定时对多台主机进行 ping 测试,找到网络最好的主机,并自动切换解析到该主机(目前仅支持自动切换使用 dnspod 管理的域名)
    默认 30分钟进行一次网络检查,并参考10条历史数据对网络质量进行评分(简单的权重计算)


    最后,上地址: https://github.com/jinxingxing/DNSwitcher

    第 1 条附言  ·  2015-01-20 21:44:09 +08:00
    网络测试方式(ping/download)和解析更新机制(dnspod/ddns/hosts) 都可以有多种, 现在我实现的只是 ping + dnspod
    如果有v友有空帮忙实现其他的机制,我不介意您 Fork 的啦~

    感谢 @LazyZhu @xiozf 帮我开脑洞
    12 条回复    2015-01-21 16:22:10 +08:00
    LazyZhu
        1
    LazyZhu  
       2015-01-20 16:41:30 +08:00
    其实带宽大小也应该作为权重
    如果JP丢包10%以下,带宽100MB; 而HK丢包0%,带宽1MB,你选哪个?
    walleL
        2
    walleL  
    OP
       2015-01-20 16:53:39 +08:00
    @LazyZhu 嗯,现在只是简单的通过 ping 测试来判断
    带宽情况可能我们无法准确得知,不过可以通过下载文件进行网络质量的评估。这个等有需要的时候再做吧 。目前我的情况用 ping 检测就可以了
    nicai000
        3
    nicai000  
       2015-01-20 17:01:54 +08:00   ❤️ 2
    求你们了, 正经说话, 别撸啊撸的
    Seikinmeid
        4
    Seikinmeid  
       2015-01-20 17:11:05 +08:00
    @nicai000 摸摸头
    wzxjohn
        5
    wzxjohn  
       2015-01-20 18:20:30 +08:00 via iPhone
    其实吧。。。在你解析过一次IP以后,解析结果会缓存在本地,所以看不太出你这么做有何意义。。。
    walleL
        6
    walleL  
    OP
       2015-01-20 18:55:34 +08:00
    @wzxjohn 缓存总是会有个失效时间的嘛。再说,咱还可以直接改 hosts 文件呢
    bigtan
        7
    bigtan  
       2015-01-20 19:35:34 +08:00
    本地网络禁止ping如何破
    bigtan
        8
    bigtan  
       2015-01-20 19:36:28 +08:00
    @wzxjohn 其实做host修改更好
    walleL
        9
    walleL  
    OP
       2015-01-20 20:01:08 +08:00
    @bigtan Fork 一份, 然后加一个通过下载文件判断网络质量的功能?^_^
    xiozf
        10
    xiozf  
       2015-01-20 20:21:23 +08:00
    "目前仅支持自动切换使用 dnspod 管理的域名"这个限制好大啊。
    改动一下,注册个动态域名,检测到速度最佳的主机后,将IP用动态域名提供商提供的API更新给动态域名是不是更通用一点?如果不愿意将IP暴露给动态域名提供商,楼上说的改HOSTS也不错。
    walleL
        11
    walleL  
    OP
       2015-01-20 21:31:43 +08:00
    @xiozf 网络测试方式(ping/download)和解析更新机制(dnspod/ddns/hosts) 都可以有多种, 现在我实现的只是 ping + dnspod
    chijiao
        12
    chijiao  
       2015-01-21 16:22:10 +08:00
    个人感觉没啥意义,依靠ping检测快慢,貌似很不准确的说, 这个没什么实际意义
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1678 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:24 · PVG 00:24 · LAX 09:24 · JFK 12:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.