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

推荐一个 smartdns 的替代品 mosdns

  •  
  •   YGBlvcAK · 2023-02-13 09:27:17 +08:00 · 12646 次点击
    这是一个创建于 653 天前的主题,其中的信息可能已经有所发展或是发生改变。
    smartdns 用了 3 、4 年,mosdns 用了 2 年,非常感谢 2 位大佬!

    用 mosdns 替代 smartdns ,主要是因为 mosdns 可以实现国内国外域名分流的功能,对个人来说 mosdns 最核心功能是:
    1.国内已经域名 List 用国内 DNS 解析,直连访问
    2.国外已经域名 List 用国外 DNS 解析,添加到 ipset ,走代理访问
    3.对于未知域名的处理是 mosdns 的核心,未知域名用国内国外 DNS 同时查询,如果国内 DNS 返回国内 IP ,则直接返回给客户端,如果返回非国内 IP ,则用国外 DNS 返回的结果,同时添加到 ipset 中,走代理访问,这样就实现了比如美国大使馆、美国大学这些未封但访问慢的网站走代理

    以上功能就可以实现全球所有域名以最优方式访问,smartdns 虽然也可以按域名分流查询,但未知域名无法按逻辑判断来处理,目前也只有 mosdns 可以实现,mosdns 从 v3 开始用,到现在的 v5 ,也已经非常稳定,如果有同样需求的,十分推荐

    还有其他各种功能就不详说了:hosts 、redirect 、广告过滤、Dot 、Doh 、lazy cache 、ecs 、mark 、ipv4 优先、屏蔽 qtype65 、缓存持久化...

    但实际上 mosdns 的配置还是有那么一点复杂的,没办法,想要实现各种功能肯定不会是纯傻瓜化的,下面是我的配置模板可以参考:
    https://github.com/IrineSistiana/mosdns/discussions/605
    28 条回复    2023-12-22 18:17:40 +08:00
    azure2023us
        1
    azure2023us  
       2023-02-13 09:37:20 +08:00
    coredns
    yyysuo
        2
    yyysuo  
       2023-02-13 09:47:17 +08:00
    感谢分享,楼主帮忙看一下,这个 luci 的配置,能实现你的核心功能 3 吗?

    https://github.com/sbwml/luci-app-mosdns/blob/v5-dev/luci-app-mosdns/root/usr/share/mosdns/default.yaml
    yyysuo
        3
    yyysuo  
       2023-02-13 09:55:23 +08:00
    看了一下你的配置文件,没有用 geosite 了,sbwml 大佬的 luci v5 分支,可以直接使用 geosite dat 文件,fork 一下,自己发布就会自动编译。
    https://github.com/sbwml/luci-app-mosdns/tree/v5-dev
    XIU2
        4
    XIU2  
       2023-02-13 10:38:12 +08:00
    我用 mosdns 就是为了实现 CDN 优选 IP 加速访问。
    目前已经实现了 Cloudflare CDN 、AWS Cloudfront CDN 、Akamai CDN 指定为优选 IP 。
    唯独 Fastly CDN 比较特殊,有规律但末尾数字不同,难以直接指定为某一个优选 IP 。。。

    其他 CDN 的话,平时似乎很少能碰到,就懒得去折腾了~

    当然,我也折腾了一些其他需求,比如国内外分流、去广告什么的。
    gbw1992
        5
    gbw1992  
       2023-02-13 11:08:43 +08:00
    又发现了一个好玩的东西(新手)
    在树莓派上尝试跑了一下,报了
    fail to load config, failed to read config: While parsing config: yaml: line 25: mapping values are not allowed in this context
    是不是还需要其他配置插件和参数?
    kongkongyzt
        6
    kongkongyzt  
       2023-02-13 11:50:46 +08:00
    我也是用的 mosdns ,确实好评+1
    keyfunc
        7
    keyfunc  
       2023-02-13 12:31:41 +08:00
    @XIU2 能分享下配置吗?
    XIU2
        8
    XIU2  
       2023-02-13 12:32:35 +08:00
    @gbw1992 你好歹翻译看一下呀,这个报错是配置文件第 25 行有错误(比如 格式 什么的)
    mDRjsArlz6c6kxad
        9
    mDRjsArlz6c6kxad  
       2023-02-13 12:32:59 +08:00
    码一下,回头研究
    anguiao
        10
    anguiao  
       2023-02-13 12:37:27 +08:00
    和我的需求一致,之前弄了一半,最近心思不在上面了就没有继续。mark 一下,回头用起来。
    licolnlee886
        11
    licolnlee886  
       2023-02-13 12:38:31 +08:00 via Android
    @XIU2 有配置可以分享下吗
    XIU2
        12
    XIU2  
       2023-02-13 12:39:14 +08:00
    @keyfunc 你可以参考这个 Issues:
    https://github.com/XIU2/CloudflareSpeedTest/issues/115

    也是这个人在我的项目里发了后我才注意到 mosdns 的,使用后我就顺便帮其完善了,方便新手使用。

    其中我贴出了 Cloudflare CDN 自选 IP 的配置示例,其他 CDN 也就是复制粘贴重复 response_matcher 、blackhole 组合罢了,另外这个示例为了小白方便且 IP 段少,所以我是直接将 Cloudflare CDN 的 IP 段写到配置文件内了,但我自己的话是用 data_providers 来载入外部数据文件的。
    winterbells
        13
    winterbells  
       2023-02-13 12:40:34 +08:00 via Android
    刚用上这个 /t/864322
    YGBlvcAK
        14
    YGBlvcAK  
    OP
       2023-02-13 13:00:03 +08:00
    @XIU2 你的方案是这些 cdn 域名走直连(优选 ip ),不走代理,可能存在的问题是优选 ip 高峰期延迟不稳定、突然全天变慢了、突然用不了了,又要重新去找优选 ip ,当然我也用过你的工具,非常感谢!
    我的方案是所有国外 ip 的域名都走代理,只要保证代理这一个点足够稳定就可以了,而且 dns 解析也是从代理发出的,获得的域名 ip 就是理论上和代理之间互通的最优 ip ,比如说我的代理在日本,国内延迟是 60ms ,那我访问所有 cf cdn 网站的延迟一般都不会超过 70ms

    @yyysuo 看了下配置,解析到的 ip 是最优的,但国外 ip 是否走代理看不出来哈

    @azure2023us 大致看了下,未知域名的逻辑判断应该是实现不了
    5460
        15
    5460  
       2023-02-13 13:16:06 +08:00
    能跑在路由器上吗?
    vowers
        16
    vowers  
       2023-02-13 15:27:12 +08:00
    是比 smartdns 更智能,但是配置也更麻烦了,先马了 回头研究下把我的 smartdns 换了
    wangerka
        17
    wangerka  
       2023-02-13 16:39:05 +08:00
    @5460 #15 能。我的路由器 ROM 太小了装不下,最小要 40MB ,可惜
    wangerka
        18
    wangerka  
       2023-02-13 16:44:44 +08:00
    问一下 mosdns 和 openclash 共存的话,应该怎么操作呢。53 端口还是给 dnsmasq ,然后转发到 openclash 的 7874 端口,再把 openclash 的上游改成 mosdns 的端口吗,这样的话分流还是由 openclash 做,mosdns 只是作为加速
    pC0oc4EbCSsJUy4W
        19
    pC0oc4EbCSsJUy4W  
       2023-02-13 17:06:40 +08:00
    openclash fake-ip 下,解析速度其实都差不多了
    pagxir
        20
    pagxir  
       2023-02-13 17:21:28 +08:00 via Android
    用 pac 也很好,这是我自己用的 pac ,https://gist.github.com/pagxir/b4552da41207749a7cce6c5512aef692 仅用在 ipv4 only ,国内域名直连,国外做代理,因为 pac 不影响本地 /远端域名,所以不影响本地的 cdn 也不影响远端的 cdn ,仅仅对域名判断是国内还是国外进行分流
    cky
        21
    cky  
       2023-02-14 09:15:49 +08:00
    确实不错,还在用 v4 ,等有空了研究下 v5 的配置
    YGBlvcAK
        22
    YGBlvcAK  
    OP
       2023-02-14 16:20:21 +08:00
    @fatelight fake-ip 总有一种路子过于野了的感觉,可能会有一些未知的副作用,比如 edns 的处理、客户端是否验证 ip 、映射关系可能会意外丢失、在无线切换到数据时有没有可能不清除 dns 缓存,等各种可能的潜在问题,我不喜欢那种某个网站打不开了,然后怀疑是不是某个配置导致的,继而开始各种调试的感觉。mosdns 是完全正统的路子,肯定不会产生奇怪的副作用

    @pagxir 你这有点复古了,建议多看点现在的新技术

    @5460 作者是有 mips 和 arm 版本的,不过折腾起来可能会更复杂,还是软路由合适
    js9528
        23
    js9528  
       2023-02-16 14:12:06 +08:00 via iPhone
    如何劫持 53 端口? dnsmasq 禁用 53 端口,设备就无法上网
    yeohreet
        24
    yeohreet  
       343 天前
    码一下,回头研究
    zwyyy456
        25
    zwyyy456  
       341 天前
    @YGBlvcAK 楼主有试过直接在 debian 系统上跑这个 mosdns 吗?
    YGBlvcAK
        26
    YGBlvcAK  
    OP
       341 天前 via Android
    @zwyyy456 我就是在 debian 上跑的,非常稳定!
    zwyyy456
        27
    zwyyy456  
       340 天前
    @YGBlvcAK 我也尝试了在 debian 上跑 mosdns ,目前是这样设置的,openwrt (主路由)的 dnsmasq 将所有 dns 请求转发给 mosdns ,mosdns 进行分流,国内域名直接解析(返回真实 ip ),国外域名转发给 clash 的 dns 进行解析(会返回 fakeip );

    当我尝试这么做之后,碰到了一个非常奇怪的问题,以 google.com 为例,我在 mac 的终端执行 `dig google.com`,dns 解析结果有时候是 realip ,有时候是 fakeip ,我试过 mosdns 不分流,直接将所有 dns 请求转发给 clash ,也还是可能不返回 fakeip 而返回真实 ip 。
    YGBlvcAK
        28
    YGBlvcAK  
    OP
       340 天前 via Android
    @zwyyy456 关闭 fakeip ,没必要
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5843 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 06:29 · PVG 14:29 · LAX 22:29 · JFK 01:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.