用 Go 写了一个老少皆宜的 DNS 分流/转发器: TS-DNS

2020-03-09 14:59:37 +08:00
 marquina

Telescope DNS

地址: https://github.com/wolf-joe/ts-dns 欢迎尝试~

TODO:

配置文件

默认情况(配置文件读取失败)时使用如下配置:

listen = ":53"

[groups]
  [groups.clean]
  dns = ["119.29.29.29", "223.5.5.5", "114.114.114.114"]

  [groups.dirty]
  dns = ["208.67.222.222:5353", "176.103.130.130:5353"]
  suffix = ["google.com", "twimg.com", "quoracdn.net"]

完整配置示例:

listen = ":53"
gfwlist = "gfwlist.txt"
hosts_files = ["/etc/hosts"]

[redis]
host = "localhost:6379"
password = ""
db = 10

[hosts]
"example.com" = "8.8.8.8"

[groups]
  [groups.clean]
  dns = ["119.29.29.29", "223.5.5.5", "114.114.114.114"]

  [groups.dirty]
  socks5 = "127.0.0.1:1080"
  dns = ["8.8.8.8", "1.1.1.1"]
  suffix = ["google.com", "twimg.com", "quoracdn.net"]

  [groups.work]
  dns = ["10.1.1.1"]
  suffix = ["company.com"]

特别鸣谢: /t/649297 @suspended @XiaoxiaoPu

3130 次点击
所在节点    分享创造
75 条回复
marquina
2020-03-10 01:56:52 +08:00
@miaomiao888 可以配置一个 suffix 为.的 group,匹配所有域名,然后再基于这个 group 实现和 smartdns 类似的 dns 并发+测速,哈哈
kios
2020-03-10 08:17:38 +08:00
mark。正好也学习一下,哈哈
suspended
2020-03-10 10:33:49 +08:00
啊哈,既然派生自我的算法,还希望在 repo 里 credit 一下我的 repo 呢。^_^
marquina
2020-03-10 10:35:54 +08:00
@miaomiao888 看了一下,smartdns 解决污染问题的手段是设置 ip 黑名单和 ip 白名单……感觉有点绕了
marquina
2020-03-10 11:10:59 +08:00
@suspended 已更新 readme ~
suspended
2020-03-10 11:18:05 +08:00
@marquina 谢谢
nogoodren
2020-03-10 11:50:00 +08:00
本地系统的 dns 需要修改为 127.0.0.1 吗
marquina
2020-03-10 12:45:11 +08:00
@nogoodren 你的意思是让本机的 dns 请求由 ts-dns 负责解析?
qsnow6
2020-03-10 13:13:34 +08:00
@marquina #28 是的
marquina
2020-03-10 13:46:11 +08:00
@nogoodren @qsnow6 #27 那就需要设置
nogoodren
2020-03-10 21:02:42 +08:00
groups 参数里面,是不是不同的域名,使用不同的 dns 解析?
marquina
2020-03-10 23:26:32 +08:00
@nogoodren 对。核心思想是将域名划分为不同的 group,每个 group 可以独立指定上游 dns、匹配规则、代理、ipset。
虽然一个 group 可以指定多个上游 dns,但目前还只是顺序请求,一般只会用到第一个 dns。
marquina
2020-03-11 14:34:49 +08:00
v0.2.0 发布,欢迎大家尝试、交流~
marquina
2020-03-11 18:06:13 +08:00
@sujin190 #20 测试了一下,可以做 edns client subnet 缓存的支持,预计会在 v0.3.0 添加该功能。不过我本身对 edns 不太熟,就算支持也只会是对 client subnet 特殊照顾~
marquina
2020-03-11 18:42:25 +08:00
@sujin190 我用 socks5 代理搭配 8.8.8.8 测试 EDNS Client-Subnet 通过,代码推到 github 上了,你也可以先自行编译。现在的缓存策略是 address 和 mask 有任何变动就重新请求。
wzw
2020-03-12 09:00:14 +08:00
@marquina #35 有些地方可以参考 https://github.com/shawn1m/overture 这个项目
是否有考虑自动加一些 ***list_domain china_ip_list , 这样会更加 老少皆宜, 开箱即用
marquina
2020-03-12 09:23:04 +08:00
@wzw v0.2.0 的 release 包内添加了 gfwlist.txt 并强制开启 gfwlist 模式。不过目前还没有打算添加 china_ip_list 相关的功能~
wzw
2020-03-12 09:31:12 +08:00
@marquina #37 好用, 谢谢了. (主要看上 hosts 了)
marquina
2020-03-12 17:31:17 +08:00
@sujin190 #20 v0.3.0 已发布,支持 EDNS Client-Subnet 缓存,可直接下载二进制包~

@wzw #38 v0.3.0 已发布,取消自动重载 hosts 文件。上一个版本 v0.2.0 每隔 10 秒会自动重载 hosts 文件,会在一定程度上影响性能,后来想想还是取消了(哈哈
wzw
2020-03-12 17:52:00 +08:00
@marquina #39 和 clashx 一样, 可以 reload config 就行, 提供这样的命令吗?

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

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

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

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

© 2021 V2EX