V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Rilimu
V2EX  ›  DNS

分享一个非常灵活全插件配置的 DNS 转发器 mosdns

  •  
  •   Rilimu · 2020-12-11 21:01:59 +08:00 · 12013 次点击
    这是一个创建于 1470 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: IrineSistiana/mosdns

    配置方式很独特,转发流程完全由用户自己设置。大概就是,mosdns 提供这些基本功能模块,能实现什么,全靠用户自己想了。

    以下是项目 wiki 里原文:


    mosdns 是一个灵活的 DNS 转发器。灵活是指,mosdns 可以通过组合不同的插件,实现想要的功能。如果自带插件无法满足需求,mosdns 还提供了插件框架供高级用户向 mosdns 内添加新插件。

    听起来很像 coredns? 是的,mosdns 和 coredns 一样,每个插件实现一个功能。但 mosdns 的插件执行顺序可动态调整。

    目前 mosdns 的插件可以实现:

    丢弃或屏蔽应答。(blackhole) 为请求附加 ECS (可以是预设地址,也可以自动用客户端地址)。删除 ECS 。(ecs) DNS 转发,支持 DoT/DoH 协议。(forward) 将应答 IP 写入 ipset 。(ipset) 匹配请求域名和应答的 CNAME 域名。(domain_matcher) 匹配应答的 IP 和客户端地址。(ip_matcher) 匹配请求的类型。(qtype_matcher) 非加密 DNS 服务器。(plain_server) DoH 服务器。支持关闭 TLS 配合反向代理使用。( http_server) hosts 功能。(hosts) 自定义上述插件的执行顺序,实现最适合自己的运行方式。(sequence)


    我主要是用来分流。努力配置后,成功实现了我想象中的多地区同时靠不同域名靠不同 IP 靠不同 ECS 靠不同 ipset 的分流逻辑。真的非常灵活。

    个人感觉还有几个非常实用的特点: ip 和域名可以从 txt 表导入也可以从 v2 的规则文件导入。很兼容,路由上用脚本更新很方便。请求模块“用的 AdguardHome 的组件驱动,运行行为跟 AdguardHome 是差不多一样”,所以可以安心配置多个上游,然后挂在 AdguardHome 前面。因为有一样的负载均衡。

    然后第一次配置可能要把整个 wiki 看完,不然不理解 mosdns 的运行方式配置起来会有点迷。

    感谢作者。已使用作者的 mos-chinadns 很久了。今天成功切换到 mosdns 。分享到 V2EX 来支持作者。

    8 条回复    2020-12-15 13:36:52 +08:00
    zro
        1
    zro  
       2020-12-12 00:17:26 +08:00
    有空试试。。。
    Rorysky
        2
    Rorysky  
       2020-12-12 02:25:54 +08:00
    多地区同时靠不同域名靠不同 IP 靠不同 ECS 靠不同 ipset 分流

    请教下,走代理的时候 dns 是选 靠近服务器的 还是 靠近客户端的
    INTEL2333
        3
    INTEL2333  
       2020-12-12 07:59:16 +08:00 via Android   ❤️ 1
    发现宝藏
    https://github.com/IrineSistiana/mosdns/wiki/Plugin#ecs
    可以解决双栈 v4v6 不同运营商的解析问题了
    @zro
    Rilimu
        4
    Rilimu  
    OP
       2020-12-12 11:12:14 +08:00
    @Rorysky 走代理的时候 dns 应该要选靠近服务器的。这样路径最短。

    但不分流的流量 dns 要选靠近客户端的。

    我现在是先请求本地服务器,然后根据 IP 或域名区分地域,如果是本地的结果就接受,如果不是就吧 ecs 去掉再请求对应的远程服务器。

    请教下大佬们,这个方案有没有什么问题,能做到两边都最好吗?
    szpunk
        5
    szpunk  
       2020-12-12 11:38:12 +08:00   ❤️ 1
    新版把监听 server 作为插件就很灵活,可以单程序开几个服务器监听,做不同的流程。
    gianni238
        6
    gianni238  
       2020-12-12 21:02:36 +08:00 via iPhone
    看上去不错
    Rilimu
        7
    Rilimu  
    OP
       2020-12-12 22:45:33 +08:00
    @szpunk 感谢提醒,之前没想到还能这么操作😂。开了两个程序。
    今晚又仔细看完了项目的 wiki 。把配置合并了。感觉这个项目把折腾 DNS 带到了新的维度。要是有教程就好了,太灵活了有些操作自己想不到。。。
    Kobayashi
        8
    Kobayashi  
       2020-12-15 13:36:52 +08:00
    是很灵活,但好像没办法对 IP 筛选做并发:同时向 2 个 DNS 转发,根据结构是否匹配 China 地区决定是否采用结果。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1565 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:54 · PVG 00:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.