holyshawn
V2EX  ›  DNS

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

  •  1
     
  •   holyshawn · Jan 15, 2017 · 14243 views
    This topic created in 3581 days ago, the information mentioned may be changed or developed.

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

    1.0.0 版本介绍传送门: https://www.v2ex.com/t/331100

    1.1.0 版本介绍传送门: https://www.v2ex.com/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 。

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

    Supplement 1  ·  Jan 17, 2017

    更新 1.2.1 版本:

    • 同时监听 TCP 和 UDP
    • 解决新版本 dig 查询的兼容性问题(比如 debian 8 上的)
    • 改进 log 方式
    Supplement 2  ·  Jan 27, 2017
    更新 1.2.2 版本:

    + 修复一个可能导致 IP Match 失效的类型判定 bug ,感谢 sh1r0
    + 代码重构
    79 replies  •  2023-12-22 15:03:21 +08:00
    R18
    R18
    Jan 15, 2017 via Android
    1
    战略性 Make
    ztrt
    ztrt
    Jan 15, 2017
    2
    战略性 install
    DesignerSkyline
    DesignerSkyline
    Jan 15, 2017
    3
    战略性 ./configure
    Akesudia
    Akesudia
    Jan 15, 2017
    4
    战略性 star
    usernametoolong
    usernametoolong
    Jan 15, 2017
    5
    战略性 rm -rf /
    akafeng
    akafeng
    Jan 15, 2017 via iPhone
    6
    战略性 git clone
    kindjeff
    kindjeff
    Jan 15, 2017 via iPhone
    7
    战略性 reply
    ovear
    ovear
    Jan 15, 2017
    8
    战略性 report
    Vicer
    Vicer
    Jan 15, 2017 via Android
    9
    战略性 collect
    JohnLou
    JohnLou
    Jan 15, 2017 via iPhone
    10
    。。。
    16500682
    16500682
    Jan 15, 2017 via iPhone
    11
    战略性 站队型
    douglas1997
    douglas1997
    Jan 15, 2017
    12
    战略性 回复
    baozijianke
    baozijianke
    Jan 15, 2017 via iPhone
    13
    战略性 watch
    Phant0m
    Phant0m
    Jan 15, 2017
    14
    战略性 mark
    qq29701
    qq29701
    Jan 15, 2017
    15
    战略性 收藏
    VYSE
    VYSE
    Jan 15, 2017
    16
    加个 tcp dns listen 吧?
    cncaihua
    cncaihua
    Jan 15, 2017 via Android
    17
    战略性吃瓜
    youthcould
    youthcould
    Jan 15, 2017
    18
    战略性 mark
    laven
    laven
    Jan 15, 2017
    19
    战略性吃瓜
    lxll
    lxll
    Jan 15, 2017 via Android
    20
    战略性 群众
    ClassicOldSong
    ClassicOldSong
    Jan 15, 2017
    21
    overture 不是一个 midi 软件吗。。。
    vibbow
    vibbow
    Jan 15, 2017
    22
    overture 不是一个打谱软件吗?
    holyshawn
    holyshawn
    OP
    Jan 15, 2017
    23
    @VYSE 下个版本考虑直接同时监听 TCP , UDP ,不过监听 TCP 的场景很少感觉,毕竟 overture 一般都在墙内,运行在墙外的意义不大。
    holyshawn
    holyshawn
    OP
    Jan 15, 2017
    24
    @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
    VYSE
    Jan 15, 2017
    25
    @holyshawn pull requested
    myguybetter
    myguybetter
    Jan 15, 2017 via Android
    26
    战略性 fork
    v1024
    v1024
    Jan 15, 2017 via iPhone❤️1
    27
    战略性 fuck
    tmac6740
    tmac6740
    Jan 15, 2017
    28
    战略性 已撸
    Ciefdx
    Ciefdx
    Jan 15, 2017
    29
    ~~ @JohnLou 队形被你破坏掉了 ~~
    战略性 看看
    ladeo
    ladeo
    Jan 15, 2017
    30
    名字可以改个字母,比如 Dverture
    TTL 最好别设置太长,遇到花生之类的动态域名估计会有问题
    bianhua
    bianhua
    Jan 15, 2017❤️1
    31
    其他的功能很好,但是手动修改 TTL 的功能具有一定破坏性(破坏了数据源对数据的定义),最好能斟酌一下。

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

    考虑到你的程序其实就是建立了一个本地 DNS 服务器,而本地查询的速度是很快的,这样既可以尊重数据源,又可以实现差不多相同的功能。
    wclebb
    wclebb
    Jan 15, 2017
    32
    看到楼上破坏了队形我就放心回复了……
    请问这个是……做什么用的……
    ins
    ins
    Jan 15, 2017
    33
    战略性 redis
    est
    est
    Jan 15, 2017
    34
    战略性 B52 轰炸机。
    misaka00251
    misaka00251
    Jan 15, 2017 via Android
    35
    第一反应:打谱软件
    holyshawn
    holyshawn
    OP
    Jan 15, 2017
    36
    @ladeo 命名思想相当不错,这个项目就不动了,毕竟冲突小众,以后可以借鉴。
    holyshawn
    holyshawn
    OP
    Jan 15, 2017
    37
    @bianhua 所以默认情况下 TTL 修改是不开启的,有需求的人自己手动开启。维护新的域名列表难度还是相当大, Github 上的域名列表除了某 List 外更新基本都十分缓慢。另外,根据我日常的使用,除了动态 DNS 这种特殊需求以外,基本上不影响,动态 DNS 可以用 dnsmasq 指定 DNS 服务器解决。至于缓存的问题,我现在的实践是把 overture 作为 dnsmasq 的上游,手动指定 edns-client-subnet ip ,让 dnsmasq 做它自己专业的缓存事情。我一直在想有没有必要把程序做成大而全的,感觉很多特殊问题都可以用套个 dnsmasq 完美解决。
    holyshawn
    holyshawn
    OP
    Jan 15, 2017
    38
    @bianhua 我刚才好像理解错了你列表的意思。如果是根据最频繁访问来设定阈值形成列表的话,感觉用处不是很明显,毕竟国内越大的网站越不会随意修改地区服务器的 IP 地址, TTL 的问题主要还是在动态 DNS 上。
    wql
    wql
    Jan 15, 2017 via Android
    39
    战略性 点赞
    zyqf
    zyqf
    Jan 15, 2017 via Android
    40
    mark
    popu111
    popu111
    Jan 15, 2017
    41
    战略性 感谢
    ladeo
    ladeo
    Jan 15, 2017
    42
    @holyshawn
    overture 的监听端口可以修改吗?
    如果我想在同一台设备上同时安装 overture 和 dnsmasq ,应该会出现端口冲突吧?
    大家都监听 udp:53 ,比如把 overture 的监听端口改成 udp:5533
    这样我一台设备就能 2 个软件都安装了
    PC --> dnsmasq:53 --> overture:5533 --> 上游 DNS
    lydasia
    lydasia
    Jan 15, 2017
    43
    战略性 Star
    holyshawn
    holyshawn
    OP
    Jan 15, 2017 via iPhone
    44
    @ladeo 当然可以,我本人也是套了个 dnsmasq 在外面做缓存、自定义的事情。
    Khlieb
    Khlieb
    Jan 16, 2017 via Android
    45
    哈喇咻👍
    Haos
    Haos
    Jan 16, 2017 via Android
    46
    战略性 回复
    Monstercat
    Monstercat
    Jan 16, 2017
    47
    战略性 build
    laowood
    laowood
    Jan 16, 2017
    48
    战略性 懵逼
    7colcor
    7colcor
    Jan 16, 2017
    49
    战略性 Mark
    vikeria
    vikeria
    Jan 16, 2017 via iPhone
    50
    战略性 mark
    lbp0200
    lbp0200
    Jan 16, 2017 via Android
    51
    原理是什么?
    aheadlead
    aheadlead
    Jan 16, 2017
    52
    战略性 找节拍器
    anym0us
    anym0us
    Jan 16, 2017 via iPhone
    53
    战略性 马克
    m939594960
    m939594960
    Jan 16, 2017
    54
    我还以为你是 安正超 ( https://github.com/overtrue) 你俩就差一个字母
    Ixizi
    Ixizi
    Jan 16, 2017
    55
    战略性 吃瓜
    Sharuru
    Sharuru
    Jan 16, 2017
    56
    战略性 DMCA Takedown
    hebeiround
    hebeiround
    Jan 16, 2017
    57
    战略性 围观
    uqo28887
    uqo28887
    Jan 16, 2017
    58
    战略性保持队形
    steveshi
    steveshi
    Jan 16, 2017
    59
    战略性怎么样呢
    chcx
    chcx
    Jan 16, 2017
    60
    战略性 入侵
    chuhemiao
    chuhemiao
    Jan 16, 2017
    61
    chemandy
    chemandy
    Jan 16, 2017
    62
    战略性 SEO
    dewi
    dewi
    Jan 16, 2017 via iPhone
    63
    战略性 爆肛门
    metowolf
    metowolf
    Jan 16, 2017
    64
    战略性 收藏
    mritd
    mritd
    Jan 17, 2017 via iPhone
    65
    战略性 装逼
    SFsx
    SFsx
    Jan 17, 2017
    66
    战略性 +1s
    missdeer
    missdeer
    Jan 17, 2017
    67
    怎么知道一个 DNS server 是否支持 edns-client-subnet ?
    JackyBao
    JackyBao
    Jan 17, 2017
    68
    战略性 继续使用 pdnsd
    holyshawn
    holyshawn
    OP
    Jan 17, 2017
    69
    @missdeer 一般没有明确说明支持的都是不支持,可以 patch dig 直接测试,参见: http://noops.me/?p=653
    Astralis
    Astralis
    Jan 17, 2017
    70
    {
    "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
    Astralis
    Jan 17, 2017
    71
    想问楼主一个问题
    {
    "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.com 、 slbnew.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
    holyshawn
    OP
    Jan 17, 2017
    72
    @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
    Astralis
    Jan 17, 2017
    73
    @holyshawn 服务器是 centos7 我本机是 MacOS 如果主 DNS 用我的服务器就查询不到 home.console.aliyun.com 这类域名,不会返回结果,然后就是超时,但是在服务器上是能查到的,其他的域名全部都是正常的,如果服务器关闭 EDNSClientSubnet 的话能正常解析这个域名,但是国内的网站会被解析成国外的 IP ,所有没办法只能把我服务器的 IP 设置为备用 DNS 了
    holyshawn
    holyshawn
    OP
    Jan 17, 2017
    74
    @maojy1989 我这里用 119.29.29.29 做 PrimaryDNS 完全正常,无法复现你的问题。
    lybtongji
    lybtongji
    Jan 18, 2017 via Android
    75
    来看看, mark
    iyuyue
    iyuyue
    Feb 2, 2017
    76
    请教一个问题。某些海外的 CDN ,虽然没有国内节点,但有相对靠近的亚洲节点。 overture 目前的方案可能无法在这种情况下得到最优的 IP 。能否考虑让 Alternative DNS 也支持 edns-client-subnet ?
    holyshawn
    holyshawn
    OP
    Feb 4, 2017
    77
    @iyuyue #76 一般支持 edns-client-subnet 的海外公共 DNS 都支持按照 IP 来源进行应答,你说的情况并不至于。目前不让 Alternative DNS 支持这个特性主要是考虑配置简单,毕竟海外 CDN 节点也不是近国内就访问的快,不过如果有这个需求的话,下个版本可以考虑单独把开关做出来。
    helixzz
    helixzz
    Mar 23, 2017
    78
    强烈关注……
    TonyLab
    TonyLab
    Dec 22, 2023
    79
    老板,6 年了,你项目好久没有 release 。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4292 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 189ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
    ♥ Do have faith in what you're doing.