freedns-go 一个类似 ChinaDNS 的轮子 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Chenyao
V2EX    分享创造

freedns-go 一个类似 ChinaDNS 的轮子

  •  
  •   Chenyao 2018-05-08 21:50:47 +08:00 5709 次点击
    这是一个创建于 2717 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    项目地址:Chenyao2333/freedns-go

    第 1 条附言    2018-05-12 01:37:48 +08:00
    建议大家套着 ss-tunnel 使用。或者通过路由器配置,让 8.8.8.8 的路由走代理出去。
    16 条回复    2018-08-01 23:48:02 +08:00
    zrt
        1
    zrt  
       2018-05-08 21:57:30 +08:00
    不错不错..可以自己建干净的 dns 了..
    TheKiller
        2
    TheKiller  
       2018-05-08 22:17:50 +08:00
    emmm 硬编码到时候 IP 列表一更新又要更新了 应该要做成读取配置文件比较好....
    Chenyao
        3
    Chenyao  
    OP
       2018-05-08 22:22:39 +08:00
    @TheKiller 嗯嗯。不过这个微变化一般不影响 dns 的正确性,出现一点错误也没关系。而且为了第一次部署方便就硬编码进去了。
    LazyZhu
        4
    LazyZhu  
       2018-05-09 08:22:28 +08:00
    其实 golang 版 ChinaDNS 早就有,了 https://github.com/shawn1m/overture

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

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

    请求是并发的。但之前我遇到过被污染的域名 114 会超时而不是返回错误结果,为了防止有国内的 cdn 只能先等国内域名返回。你可以手动测一下上游的行为。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1069 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 18:11 PVG 02:11 LAX 11:11 JFK 14:11
    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