overture: DNS 分流净化器(更新 1.2.0) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
holyshawn
V2EX    DNS

overture: DNS 分流净化器(更新 1.2.0)

  •  1
     
  •   holyshawn 2017-01-15 12:33:05 +08:00 13175 次点击
    这是一个创建于 3201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github 项目传送门: https://github.com/holyshawn/overture

    1.0.0 版本介绍传送门: t/331100

    1.1.0 版本介绍传送门: t/332764

    二进制下载地址: https://github.com/holyshawn/overture/releases

    添加了 TTL 最小值的设定,在绝大多数情况下, DNS 结果对用户而言在很长一段时间都是不变的,手动合适的 TTL 可以让浏览器乃至于 dnsmasq 的缓存更有效率,实现秒解析。我设了一段时间 604800 (一周) ,感觉良好。( -1 为禁用此特性)

    添加了 edns-client-subnet 的支持,可以为支持此特性的如 119.29.29.29 提供指定的或者客户端的 IP 地址,从而使 DNS 返回的 CDN 地址更加准确,提升上网的速度。( auto 尝试使用客户端 IP 地址,如果不是公网地址使用服务器的 IP 地址, custom 完全使用自定义的 IP 地址)

    其他功能参见 README 。

    配置文件语法有更改,请参照新版配置文件修改。

    第 1 条附言    2017-01-17 21:41:11 +08:00

    更新 1.2.1 版本:

    • 同时监听 TCP 和 UDP
    • 解决新版本 dig 查询的兼容性问题(比如 debian 8 上的)
    • 改进 log 方式
    第 2 条附言    2017-01-27 00:14:19 +08:00
    更新 1.2.2 版本:

    + 修复一个可能导致 IP Match 失效的类型判定 bug ,感谢 sh1r0
    + 代码重构
    79 条回复    2023-12-22 15:03:21 +08:00
    R18
        1
    R18  
       2017-01-15 12:53:28 +08:00 via Android
    战略性 Make
    ztrt
        2
    ztrt  
       2017-01-15 13:09:53 +08:00
    战略性 install
    DesignerSkyline
        3
    DesignerSkyline  
       2017-01-15 13:30:03 +08:00
    战略性 ./configure
    Akesudia
        4
    Akesudia  
       2017-01-15 13:35:00 +08:00
    战略性 star
    /table>
    usernametoolong
        5
    usernametoolong  
       2017-01-15 13:38:34 +08:00
    战略性 rm -rf /
    akafeng
        6
    akafeng  
       2017-01-15 13:54:55 +08:00 via iPhone
    战略性 git clone
    kindjeff
        7
    kindjeff  
       2017-01-15 14:09:51 +08:00 via iPhone
    战略性 reply
    ovear
        8
    ovear  
       2017-01-15 14:12:51 +08:00
    战略性 report
    Vicer
        9
    Vicer  
       2017-01-15 14:20:26 +08:00 via Android
    战略性 collect
    JohnLou
        10
    JohnLou  
       2017-01-15 14:21:27 +08:00 via iPhone
    。。。
    16500682
        11
    16500682  
       2017-01-15 14:25:14 +08:00 via iPhone
    战略性 站队型
    douglas1997
        12
    douglas1997  
       2017-01-15 14:26:14 +08:00
    战略性 回复
    baozijianke
        13
    baozijianke  
       2017-01-15 14:26:56 +08:00 via iPhone
    战略性 watch
    Phant0m
        14
    Phant0m  
       2017-01-15 14:29:36 +08:00
    战略性 mark
    qq29701
        15
    qq29701  
       2017-01-15 14:37:40 +08:00
    战略性 收藏
    VYSE
        16
    VYSE  
       2017-01-15 14:38:08 +08:00
    加个 tcp dns listen 吧?
    cncaihua
        17
    cncaihua  
       2017-01-15 14:38:47 +08:00 via Android
    战略性吃瓜
    youthcould
        18
    youthcould  
       2017-01-15 14:40:55 +08:00
    战略性 mark
    laven
        19
    laven  
       2017-01-15 14:48:34 +08:00
    战略性吃瓜
    lxll
        20
    lxll  
       2017-01-15 15:03:53 +08:00 via Android
    战略性 群众
    ClassicOldSong
        21
    ClassicOldSong  
       2017-01-15 15:35:04 +08:00
    overture 不是一个 midi 软件吗。。。
    vibbow
        22
    vibbow  
       2017-01-15 15:44:46 +08:00
    overture 不是一个打谱软件吗?
    holyshawn
        23
    holyshawn  
    OP
       2017-01-15 15:46:31 +08:00
    @VYSE 下个版本考虑直接同时监听 TCP , UDP ,不过监听 TCP 的场景很少感觉,毕竟 overture 一般都在墙内,运行在墙外的意义不大。
    holyshawn
        24
    holyshawn  
    OP
       2017-01-15 15:48:51 +08:00
    @ClassicOldSong
    @vibbow
    的确是一个打谱软件,有点撞名了,取名的时候没看到。不过由于比较小众,感觉问题不大。
    取这个名字主要是因为(来自 README ):
    Overture means an orchestral piece at the beginning of a classical music composition, just like dns which is nearly the first step of surfing the internet.
    强行掰扯一下。
    VYSE
        25
    VYSE  
       2017-01-15 15:59:46 +08:00
    @holyshawn pull requested
    myguybetter
        26
    myguybetter  
       2017-01-15 16:03:05 +08:00 via Android
    战略性 fork
    v1024
        27
    v1024  
       2017-01-15 16:30:42 +08:00 via iPhone   1
    战略性 fuck
    tmac6740
        28
    tmac6740  
       2017-01-15 17:16:37 +08:00
    战略性 已撸
    Ciefdx
        29
    Ciefdx  
       2017-01-15 17:25:22 +08:00
    ~~ @JohnLou 队形被你破坏掉了 ~~
    战略性 看看
    ladeo
        30
    ladeo  
       2017-01-15 17:41:22 +08:00
    名字可以改个字母,比如 Dverture
    TTL 最好别设置太长,遇到花生之类的动态域名估计会有问题
    bianhua
        31
    bianhua  
       2017-01-15 17:41:32 +08:00   1
    其他的功能很好,但是手动修改 TTL 的功能具有一定破坏性(破坏了数据源对数据的定义),最好能斟酌一下。

    我觉得更好地方式是维护一张最频繁访问域名的列表,记录足够多的项,然后根据它们的 TTL 自动刷新这些记录,并将新的记录缓存下来。

    考虑到你的程序其实就是建立了一个本地 DNS 服务器,而本地查询的速度是很快的,这样既可以尊重数据源,又可以实现差不多相同的功能。
    wclebb
        32
    wclebb  
       2017-01-15 17:42:05 +08:00
    看到楼上破坏了队形我就放心回复了……
    请问这个是……做什么用的……
    ins
        33
    ins  
       2017-01-15 17:56:32 +08:00
    战略性 redis
    est
        34
    est  
       2017-01-15 18:34:32 +08:00
    战略性 B52 轰炸机。
    misaka00251
        35
    misaka00251  
       2017-01-15 18:35:27 +08:00 via Android
    第一反应:打谱软件
    holyshawn
        36
    holyshawn  
    OP
       2017-01-15 19:29:59 +08:00
    @ladeo 命名思想相当不错,这个项目就不动了,毕竟冲突小众,以后可以借鉴。
    holyshawn
        37
    holyshawn  
    OP
       2017-01-15 19:37:45 +08:00
    @bianhua 所以默认情况下 TTL 修改是不开启的,有需求的人自己手动开启。维护新的域名列表难度还是相当大, Github 上的域名列表除了某 List 外更新基本都十分缓慢。另外,根据我日常的使用,除了动态 DNS 这种特殊需求以外,基本上不影响,动态 DNS 可以用 dnsmasq 指定 DNS 服务器解决。至于缓存的问题,我现在的实践是把 overture 作为 dnsmasq 的上游,手动指定 edns-client-subnet ip ,让 dnsmasq 做它自己专业的缓存事情。我一直在想有没有必要把程序做成大而全的,感觉很多特殊问题都可以用套个 dnsmasq 完美解决。
    holyshawn
        38
    holyshawn  
    OP
       2017-01-15 19:42:57 +08:00
    @bianhua 我刚才好像理解错了你列表的意思。如果是根据最频繁访问来设定阈值形成列表的话,感觉用处不是很明显,毕竟国内越大的网站越不会随意修改地区服务器的 IP 地址, TTL 的问题主要还是在动态 DNS 上。
    wql
        39
    wql  
       2017-01-15 19:46:00 +08:00 via Android
    战略性 点赞
    zyqf
        40
    zyqf  
       2017-01-15 19:49:04 +08:00 via Android
    mark
    popu111
        41
    popu111  
       2017-01-15 19:59:40 +08:00
    战略性 感谢
    ladeo
        42
    ladeo  
       2017-01-15 21:15:29 +08:00
    @holyshawn
    overture 的监听端口可以修改吗?
    如果我想在同一台设备上同时安装 overture 和 dnsmasq ,应该会出现端口冲突吧?
    大家都监听 udp:53 ,比如把 overture 的监听端口改成 udp:5533
    这样我一台设备就能 2 个软件都安装了
    PC --> dnsmasq:53 --> overture:5533 --> 上游 DNS
    lydasia
        43
    lydasia  
       2017-01-15 21:17:32 +08:00
    战略性 Star
    holyshawn
        44
    holyshawn  
    OP
       2017-01-15 23:33:26 +08:00 via iPhone
    @ladeo 当然可以,我本人也是套了个 dnsmasq 在外面做缓存、自定义的事情。
    Khlieb
        45
    Khlieb  
       2017-01-16 00:20:14 +08:00 via Android
    哈喇咻
    Haos
        46
    Haos  
       2017-01-16 00:21:26 +08:00 via Android
    战略性 回复
    Monstercat
        47
    Monstercat  
       2017-01-16 00:33:57 +08:00
    战略性 build
    laowood
        48
    laowood  
       2017-01-16 00:54:07 +08:00
    战略性 懵逼
    7colcor
        49
    7colcor  
       2017-01-16 07:19:17 +08:00
    战略性 Mark
    vikeria
        50
    vikeria  
       2017-01-16 07:32:36 +08:00 via iPhone
    战略性 mark
    lbp0200
        51
    lbp0200  
       2017-01-16 08:54:53 +08:00 via Android
    原理是什么?
    aheadlead
        52
    aheadlead  
       2017-01-16 08:54:55 +08:00
    战略性 找节拍器
    anym0us
        53
    anym0us  
       2017-01-16 08:55:25 +08:00 via iPhone
    战略性 马克
    m939594960
        54
    m939594960  
       2017-01-16 09:12:11 +08:00
    我还以为你是 安正超 ( https://github.com/overtrue) 你俩就差一个字母
    Ixizi
        55
    Ixizi  
       2017-01-16 09:18:04 +08:00
    战略性 吃瓜
    Sharuru
        56
    Sharuru  
       2017-01-16 09:21:23 +08:00
    战略性 DMCA Takedown
    hebeiround
        57
    hebeiround  
       2017-01-16 09:37:03 +08:00
    战略性 围观
    uqo28887
        58
    uqo28887  
       2017-01-16 10:05:28 +08:00
    战略性保持队形
    steveshi
        59
    steveshi  
       2017-01-16 10:12:36 +08:00
    战略性怎么样呢
    chcx
        60
    chcx  
       2017-01-16 10:54:05 +08:00
    战略性 入侵
    chuhemiao
        61
    chuhemiao  
       2017-01-16 11:04:53 +08:00
    chemandy
        62
    chemandy  
       2017-01-16 12:13:07 +08:00
    战略性 SEO
    dewi
        63
    dewi  
       2017-01-16 12:55:56 +08:00 via iPhone
    战略性 爆肛门
    metowolf
        64
    metowolf  
       2017-01-16 22:35:28 +08:00
    战略性 收藏
    mritd
        65
    mritd  
       2017-01-17 07:57:10 +08:00 via iPhone
    战略性 装逼
    SFsx
        66
    SFsx  
       2017-01-17 13:03:07 +08:00
    战略性 +1s
    missdeer
        67
    missdeer  
       2017-01-17 14:24:44 +08:00
    怎么知道一个 DNS server 是否支持 edns-client-subnet ?
    JackyBao
        68
    JackyBao  
       2017-01-17 14:46:02 +08:00
    战略性 继续使用 pdnsd
    holyshawn
        69
    holyshawn  
    OP
       2017-01-17 14:59:03 +08:00
    @missdeer 一般没有明确说明支持的都是不支持,可以 patch dig 直接测试,参见: http://noops.me/?p=653
    Astralis
        70
    Astralis  
       2017-01-17 15:24:36 +08:00
    {
    "BindAddress": ":53",
    "PrimaryDNSAddress": "45.76.145.234:5533",
    "PrimaryDNSProtocol": "udp",
    "AlternativeDNSAddress": "208.67.220.220:443",
    "AlternativeDNSProtocol": "tcp",
    "Timeout": 6,
    "RedirectIPv6Record": true,
    "IPNetworkFilePath": "./china_ip_list.txt",
    "DomainFilePath": "./gfwlist.txt",
    "DomainBase64Decode": true,
    "MinimumTTL": -1,
    "EDNSClientSubnetPolicy": "disable",
    "EDNSClientSubnetIP": ""
    }
    试了一下挺好用的,主 dns 是我在 VPS 上用这个软件搭的, EDNSClientSubnetPolicy 设置了 auto , TTL 3600 ,主 DNS 跟备用 DNS 设置的 Google 的 dns ,就是 8.8.8.8 跟 8.8.4.4 , ip 设置了禁止 ping ,有兴趣的可以试一下,国内用不了 Google 的 DNS ,要不然也不用这么麻烦了
    Astralis
        71
    Astralis  
       2017-01-17 17:27:45 +08:00
    想问楼主一个问题
    {
    "BindAddress": ":5533",
    "PrimaryDNSAddress": "8.8.8.8:53",
    "PrimaryDNSProtocol": "tcp",
    "AlternativeDNSAddress": "208.67.222.222:443",
    "AlternativeDNSProtocol": "tcp",
    "Timeout": 6,
    "RedirectIPv6Record": true,
    "IPNetworkFilePath": "./china_ip_list.txt",
    "DomainFilePath": "./gfwlist.txt",
    "DomainBase64Decode": true,
    "MinimumTTL": -1,
    "EDNSClientSubnetPolicy": "auto",
    "EDNSClientSubnetIP": ""
    }

    这是我在 VPS 上配置文件,访问别的域名都没有问题,但是当我访问 home.console.aliyun.comslbnew.console.aliyun.com 这一类的域名我本地就会出现

    WARN[0209] Get dns response failed: Response message is nil, maybe timeout

    时间长了以后重新启动程序就变成了

    WARN[0002] DNS lookup for external ip failed, please check your internet configuration:read udp 192.168.50.245:57128->45.76.145.234:5533: i/o timeout

    这是什么原因导致的呢?
    holyshawn
        72
    holyshawn  
    OP
       2017-01-17 19:58:24 +08:00
    @maojy1989 已知若开启 EDNSClientSubnet ,在 debian8 下用 dig 工具查询域名就会报:
    WARN[0209] Get dns response failed: Response message is nil, maybe timeout
    但正常使用其他程序不会影响。 OSX 下 dig 没有这个问题。
    下面的问题是程序查询不了你设定的 PrimaryDNS 45.76.145.234:553 ,查询超时。外部 IP 是通过查询 ipip.cn 的数据获取的, ipip.cn 本身需要域名解析,默认是用 PrimaryDNS 。
    Astralis
        73
    Astralis  
       2017-01-17 20:14:11 +08:00
    @holyshawn 服务器是 centos7 我本机是 MacOS 如果主 DNS 用我的服务器就查询不到 home.console.aliyun.com 这类域名,不会返回结果,然后就是超时,但是在服务器上是能查到的,其他的域名全部都是正常的,如果服务器关闭 EDNSClientSubnet 的话能正常解析这个域名,但是国内的网站会被解析成国外的 IP ,所有没办法只能把我服务器的 IP 设置为备用 DNS 了
    holyshawn
        74
    holyshawn  
    OP
       2017-01-17 21:39:49 +08:00
    @maojy1989 我这里用 119.29.29.29 做 PrimaryDNS 完全正常,无法复现你的问题。
    lybtongji
        75
    lybtongji  
       2017-01-18 10:43:38 +08:00 via Android
    来看看, mark
    iyuyue
        76
    iyuyue  
       2017-02-02 14:45:01 +08:00
    请教一个问题。某些海外的 CDN ,虽然没有国内节点,但有相对靠近的亚洲节点。 overture 目前的方案可能无法在这种情况下得到最优的 IP 。能否考虑让 Alternative DNS 也支持 edns-client-subnet ?
    holyshawn
        77
    holyshawn  
    OP
       2017-02-04 19:41:10 +08:00
    @iyuyue #76 一般支持 edns-client-subnet 的海外公共 DNS 都支持按照 IP 来源进行应答,你说的情况并不至于。目前不让 Alternative DNS 支持这个特性主要是考虑配置简单,毕竟海外 CDN 节点也不是近国内就访问的快,不过如果有这个需求的话,下个版本可以考虑单独把开关做出来。
    helixzz
        78
    helixzz  
       2017-03-23 11:44:00 +08:00
    强烈关注……
    jmxct520
        79
    jmxct520  
       2023-12-22 15:03:21 +08:00
    老板,6 年了,你项目好久没有 release 。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3092 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 12:31 PVG 20:31 LAX 05:31 JFK 08:31
    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