freedns-go 一个类似 ChinaDNS 的轮子

2018-05-08 21:50:47 +08:00
 Chenyao

ChinaDNS 主要是解决大厂同时有国内国外 CDN 的时候,查询时会返回国际站点的问题。freedns-go 是一个解决类似问题的工具,他会预先查询一下,如果发现有国外的 ip 或者遇到错误的时候,就会使用干净的 dns 再查询一遍。

使用懒缓存,同时遵守 ttl 过期时间。

golang 写的,ip 地址是用 ipip.net 的给出的一个列表,然后硬编码到代码里。

项目地址:Chenyao2333/freedns-go

5389 次点击
所在节点    分享创造
16 条回复
zrt
2018-05-08 21:57:30 +08:00
不错不错..可以自己建干净的 dns 了..
TheKiller
2018-05-08 22:17:50 +08:00
emmm 硬编码到时候 IP 列表一更新又要更新了 应该要做成读取配置文件比较好....
Chenyao
2018-05-08 22:22:39 +08:00
@TheKiller 嗯嗯。不过这个微变化一般不影响 dns 的正确性,出现一点错误也没关系。而且为了第一次部署方便就硬编码进去了。
LazyZhu
2018-05-09 08:22:28 +08:00
其实 golang 版 ChinaDNS 早就有,了 https://github.com/shawn1m/overture

楼主可以考虑写一个 Golang 版的 dnschooser, https://www.v2ex.com/t/419555
Chenyao
2018-05-09 10:16:23 +08:00
@LazyZhu 呃,可以考虑加上。不过我现在策略是认为有国外 ip (没有国内 cdn,或者可能被污染)就返回第二个。chose 之前并不是很好判断一个返回是否是正确的……
Tink
2018-05-09 21:34:27 +08:00
出现好多 error,连不上 8888
Chenyao
2018-05-09 22:24:13 +08:00
@Tink 呃呃,那就是你真的连不上 8888 哈哈哈。。。如果你有使用任何办法转发 8888 到本地的某个端口(比如说 5353,你可以使用

```
./freedns-go -c 127.0.0.1:5353
```
当然你把 8888 的路由做的特殊一点也行(
Tink
2018-05-09 22:54:23 +08:00
得上 sstunnel
mmtromsb456
2018-05-11 23:24:48 +08:00
大佬有打算支持把国外 dns 请求经过 socks 类的代理发出去这种请求吗,主要是 1111 国内经常就伦敦去了,查询时间就比较久,能塞到香港的代理里面就快多了。
exkernel
2018-05-11 23:36:49 +08:00
Chenyao
2018-05-12 01:25:18 +08:00
@mmtromsb456 楼上发的 overture 是一种选择,ss-tunnel 转发一下也可以。
mmtromsb456
2018-05-12 16:57:15 +08:00
@Chenyao 我有个思路是在 surge for mac 中使用 enhance mode 捕获 freedns-go 的请求然后把 1111 的分流出去,然后 surge 再使用这个本地 dns,这个流程应该可以吧?因为我现在是把 surge 作为 ssr 的前置代理然后在局域网中以网关工作共享的。
Chenyao
2018-05-12 17:49:29 +08:00
@mmtromsb456 你可以试一下,我没有用过 surge。只要让 1111 走和代理同一个出口就可以起到作用。
muziling
2018-07-24 17:33:01 +08:00
挺好的,不用维护 gfwlist 了,把 ip list 编译进程序,不方便更新,改成配置文件了
https://github.com/muziling/freedns-go
muziling
2018-07-24 18:14:03 +08:00
没缓存,第一次访问的域名,效率好低啊,单线程排队请求 DNS 解析?
Chenyao
2018-08-01 23:48:02 +08:00
@muziling 前几天看到你的贡献啦,我有时间给改进代码里面

请求是并发的。但之前我遇到过被污染的域名 114 会超时而不是返回错误结果,为了防止有国内的 cdn 只能先等国内域名返回。你可以手动测一下上游的行为。

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

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

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

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

© 2021 V2EX