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

2017-02-16 11:42:40 +08:00
 holyshawn

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

Binary 下载地址: https://github.com/holyshawn/overture/releases

添加了多上游 DNS 功能,自动选择最快应答。

添加了缓存功能,如果开启了 edns-client-subnet ,则命中时就会考虑到缓存时所用的 ip 。

添加了本地 Hosts 支持。

如需开启 edns-client-subnet,外网 IP 请手动填写,策略是如果访问 IP 是内网 IP 就用填的外网 IP,否则用访问 IP 进行查询。原先自动填写不太稳定而且耗时,这版本就取消了。

其他功能参见 README 。

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

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

1.1.0 版本介绍传送门: https://www.v2ex.com/t/332764

1.2.0 版本介绍传送门: https://www.v2ex.com/t/334691

14919 次点击
所在节点    DNS
65 条回复
holyshawn
2017-04-21 19:59:22 +08:00
@aruisi 如果开启 edns ,生效的应该都是 c 的公网出口 ip ;不开启的话,生效的是末端 a 。
holyshawn
2017-04-21 20:08:18 +08:00
@bobopu overture 为了实现 ip 分流 overture 实际上是进行的两段处理,一段是拿 primary dns 的结果,另一段才是根据结果选择进一步的解析策略,和 bind , outbound 之类的一段式静态规则没有可比性。而且,理论上 go 写的肯定会比 c 写的慢,没必要进行比较。 overture 的定位不是做一个完备的 server , server 只是基础,主要功能还是在分流调度修改上, zone 文件导入暂时不再考虑范围。 overture hosts 的通配符是在解析的动态匹配时候,不会对内存产生特殊影响。
unboy
2017-04-22 00:39:43 +08:00
楼主,请问如何把 overture 作为系统服务实现启动重启停止呢,参考网上的教程都搞不定啊,能否给出范例,谢谢。
bobopu
2017-04-22 01:47:45 +08:00
@holyshawn 你好,测试了下发现 hosts 在使用通配符时存在 bug ,例如当 hosts 设置为 0.0.0.0 *.abc.com 时

dig www.abc.com 返回的 ip 确为 0.0.0.0
而当 dig abc.com 时却绕过了 hosts 返回了真实 ip
通配符对根域不起作用。

而当 dig a.a.b.abc.com 时同样存在绕过 hosts 的问题,不能返回 0.0.0.0
通配符对三级以上域名不起作用。

烦劳修复一下。
holyshawn
2017-04-22 11:19:37 +08:00
@bobopu 这个问题已经有人提过 issue 了,已经在开发分支中修复了还没有 release ,参见 issue ,你可以先自行编译最新源码测试。
holyshawn
2017-04-22 11:21:52 +08:00
@unboy linux 的话用 supervisor , windows 我不是很清楚,可以参见 issue #4
unboy
2017-04-23 13:10:13 +08:00
@holyshawn 请问这个源代码版本的如何编译安装呢?我运行./build.py 没法安装,提示 /usr/bin/env: python3: No such file or directory
unboy
2017-04-23 13:16:42 +08:00
@unboy python -V 当前版本是 3.6
Oi0Ydz26h9NkGCIz
2017-04-23 14:46:37 +08:00
请教下第一次运行时 hosts 是全部加载到内存中读取,还是在接到查询请求后仍然在硬盘中查询匹配?
holyshawn
2017-04-23 16:09:38 +08:00
@unboy #48 我已经 release 了 1.3.4 版,可以直接下载。
holyshawn
2017-04-23 16:10:51 +08:00
@aruisi #49 全部加载在内存中, hosts 文件理论上应该比较小。
unboy
2017-04-23 18:06:23 +08:00
@holyshawn 你好,运行 1.3.4 版时报错
panic: runtime error: index out of range

goroutine 81 [running]:
github.com/shawn1m/overture/core/hosts.parseLine(0x18890bf6, 0x1, 0x18846de0)
/home/travis/gopath/src/github.com/shawn1m/overture/core/hosts/hostsline.go:137 +0x4ae
github.com/shawn1m/overture/core/hosts.newHostsLineList.func1(0x18846dbf, 0x1860c3f0, 0x18846de0, 0x18846dd0, 0x18890bf6, 0x1)
/home/travis/gopath/src/github.com/shawn1m/overture/core/hosts/hostsline.go:67 +0x62
created by github.com/shawn1m/overture/core/hosts.newHostsLineList
/home/travis/gopath/src/github.com/shawn1m/overture/core/hosts/hostsline.go:73 +0x1d6
unboy
2017-04-23 18:31:22 +08:00
@holyshawn 此问题已确认是由于 hosts 文件有空行的问题,删掉空行就好了。
Oi0Ydz26h9NkGCIz
2017-04-24 00:08:27 +08:00
@holyshawn CacheSize 这一项在 Tips:中没有做详细说明,这里缓存大小单位默认是 m 吗?例如 128 、 512 ?您建议缓存大小设置为多少合适呢?
Oi0Ydz26h9NkGCIz
2017-04-24 00:29:37 +08:00
发现当 hosts 超过 5000 条时,后面的 hosts 会失效不起作用了,只有前面的起作用。
holyshawn
2017-04-24 10:53:02 +08:00
@unboy #53 @aruisi #55 请把你们出现问题的 hosts 文件提交一下,我排查一下具体 bug 。可以放在
https://github.com/shawn1m/overture/issues/36 这个 issue 里。

@aruisi #54 针对单个域名的缓存个数,合适的个数没有推荐,我自用 100000 。
Oi0Ydz26h9NkGCIz
2017-04-24 17:26:05 +08:00
@holyshawn 已在 issue 提交。
holyshawn
2017-04-24 19:55:22 +08:00
@unboy #53
@aruisi #57
已修复,请测试 1.3.5-rc1
Oi0Ydz26h9NkGCIz
2017-04-25 13:37:56 +08:00
@holyshawn 当前的通配符*包含一切字符的方式误伤太大,已在 issue 反馈请您查看下。
Oi0Ydz26h9NkGCIz
2017-05-03 21:02:57 +08:00
@holyshawn 关于两台 overture 串联使用时,末端丢失客户端 ip 的问题已在 issue 反馈。

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

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

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

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

© 2021 V2EX