V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
marquina
V2EX  ›  分享创造

ts-dns v1.0.0 发布了!

  •  2
     
  •   marquina · 2022-12-07 21:42:12 +08:00 · 1620 次点击
    这是一个创建于 711 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2020 年的时候 OP 为了跳槽学了 go ,然后写了一个用于防止 dns 污染的小工具:ts-dns,还在 V2EX 上发了帖子:用 Go 写了一个老少皆宜的 DNS 分流 /转发器:TS-DNS - V2EX

    虽然后续迭代了一些版本、而且 OP 在使用时也发现有可改进的地方,但困于初版糟糕的代码结构,项目在 OP 跳槽到新公司后不久就停滞了。最近偶然发现有人在催更新功能,于是索性花时间整体重构了一遍,并发布了 v1.0.0 版,主要是移除了初版所谓的 [半智能污染检测] 、增加了解析重定向功能。


    ts-dns 的定位是灵活快速的 DNS 分组转发器:

    灵活解析

    • 支持按 ABP 风格规则 /GFWList 对 DNS 请求进行分组
    • 支持按 CIDR 对 DNS 请求进行重定向
    • 支持 DNS over UDP/TCP/TLS/HTTPS 、socks5 代理、ECS
    • 支持将查询结果中的 IPv4 地址添加至 IPSet

    快速解析

    • 支持并发请求上游 DNS ,选择最快响应
    • 选择 ping 值最低的 IPv4 地址( tcp/icmp ping )
    • 支持 hosts/DNS 缓存 /屏蔽指定查询类型
    • 支持热重载配置文件

    整体架构也是比较简单的:

    查找 hosts -> 查找缓存 -> 匹配规则 -> 指定 group 处理 -> 重定向 -> 设置缓存
    

    配置文件示例:

    listen = ":53"
    
    [groups]
      [groups.clean]
      dns = ["223.5.5.5", "114.114.114.114"]
      concurrent = true
    
      [groups.dirty]
      dns = ["208.67.222.222:5353", "176.103.130.130:5353"]
      gfwlist_file = "gfwlist.txt"
    

    下载地址: https://github.com/wolf-joe/ts-dns/releases/latest

    6 条回复    2022-12-08 08:02:49 +08:00
    nebkad
        1
    nebkad  
       2022-12-07 22:18:09 +08:00
    我来说一个不合时宜的话,当时等 OP 更新等到我绝望我甚至捏着鼻子学了一下 golang.
    现在已经转投用 rust 写的了 XD
    marquina
        2
    marquina  
    OP
       2022-12-07 22:28:18 +08:00
    @nebkad 太真实了……我填坑的时候也挺愧疚的。
    现在用的是哪个服务呢?感觉咋样?
    CharlesGray
        3
    CharlesGray  
       2022-12-07 22:47:01 +08:00
    @nebkad 来个地址?
    nebkad
        4
    nebkad  
       2022-12-07 23:21:10 +08:00
    @marquina @CharlesGray
    /t/726539
    虽然帖子发布得挺早但我是很久之后才知道
    nebkad
        5
    nebkad  
       2022-12-07 23:32:34 +08:00
    @marquina
    我又要说不合时宜的话了,那位的作品用起来真的挺稳定的,修过一次 bug 之后从来没有问题。
    至少对我来说是够用了。如果还不够用,还可以自己写脚本决定怎么转发 dns 请求。
    marquina
        6
    marquina  
    OP
       2022-12-08 08:02:49 +08:00   ❤️ 2
    @nebkad #5 dns 服务器是一个百花齐放的 topic ,你能找到适合自己的工具我很开心。
    dcompass 的自定义脚本确实有点惊到我了,有点在配置文件里写代码的感觉😂在编译型语言里做到这一点我觉得很不容易
    anyway ,感谢分享
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1045 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.