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

2015-01-20 15:56:08 +08:00
 walleL

功能

监控同一域名下多台主机的网络情况,并调用 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

5403 次点击
所在节点    分享创造
12 条回复
LazyZhu
2015-01-20 16:41:30 +08:00
其实带宽大小也应该作为权重
如果JP丢包10%以下,带宽100MB; 而HK丢包0%,带宽1MB,你选哪个?
walleL
2015-01-20 16:53:39 +08:00
@LazyZhu 嗯,现在只是简单的通过 ping 测试来判断
带宽情况可能我们无法准确得知,不过可以通过下载文件进行网络质量的评估。这个等有需要的时候再做吧 。目前我的情况用 ping 检测就可以了
nicai000
2015-01-20 17:01:54 +08:00
求你们了, 正经说话, 别撸啊撸的
Seikinmeid
2015-01-20 17:11:05 +08:00
@nicai000 摸摸头
wzxjohn
2015-01-20 18:20:30 +08:00
其实吧。。。在你解析过一次IP以后,解析结果会缓存在本地,所以看不太出你这么做有何意义。。。
walleL
2015-01-20 18:55:34 +08:00
@wzxjohn 缓存总是会有个失效时间的嘛。再说,咱还可以直接改 hosts 文件呢
bigtan
2015-01-20 19:35:34 +08:00
本地网络禁止ping如何破
bigtan
2015-01-20 19:36:28 +08:00
@wzxjohn 其实做host修改更好
walleL
2015-01-20 20:01:08 +08:00
@bigtan Fork 一份, 然后加一个通过下载文件判断网络质量的功能?^_^
xiozf
2015-01-20 20:21:23 +08:00
"目前仅支持自动切换使用 dnspod 管理的域名"这个限制好大啊。
改动一下,注册个动态域名,检测到速度最佳的主机后,将IP用动态域名提供商提供的API更新给动态域名是不是更通用一点?如果不愿意将IP暴露给动态域名提供商,楼上说的改HOSTS也不错。
walleL
2015-01-20 21:31:43 +08:00
@xiozf 网络测试方式(ping/download)和解析更新机制(dnspod/ddns/hosts) 都可以有多种, 现在我实现的只是 ping + dnspod
chijiao
2015-01-21 16:22:10 +08:00
个人感觉没啥意义,依靠ping检测快慢,貌似很不准确的说, 这个没什么实际意义

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/163866

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX