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

再分享一个分流 DNS

  •  1
     
  •   brMu · 2022-02-06 17:09:22 +08:00 · 10089 次点击
    这是一个创建于 1028 天前的主题,其中的信息可能已经有所发展或是发生改变。

    19 年的时候推荐过 smartdns ( t/629205 ),今天再推荐一个,就是 mosdns ,说下原因:

    smartdns 有个 bug ,关闭测速和带有 cname 的域名都会导致 TTL 不变,进而导致这个域名的缓存不刷新,带来的影响就是动态域名不更新或正常的域名 IP 变更也不会更新。

    mosdns 拥有 smartdns 的几乎所有功能,正好可以拿来替换,就是配置稍复杂,特别注意 tab 产生的空格会导致配置文件无效。

    目前也用了 2 个多月了,稳定性没有问题,有兴趣的可以尝试。

    第 1 条附言  ·  2022-02-12 14:48:18 +08:00
    更新一下:发现这个 mosdns 也会出现一些奇怪的问题
    1.某些网站的域名解析会报错,要多次刷新才可以,不知道什么原因
    2.cpu 占用要 smartdns 高不少,N1 上有时到 30%,smartdns 不会超过 3%
    3.对比体验下来,感觉 smartdns 还是要快那么一丢丢,特别是第一次打开网页

    后来发现,smartdns 的 cname ttl 不变有某位大佬提供了补丁,我重新编译下确实可以了,关闭测速 ttl 不变的问题目前无解,那就不关闭测试
    第 2 条附言  ·  2022-05-25 09:11:41 +08:00
    20220525 更新:mosdns 作者开发很积极,目前的 v3.8 版本已经非常稳定,上面提到的那些问题都没有了
    24 条回复    2022-05-15 22:16:28 +08:00
    choutou
        1
    choutou  
       2022-02-06 18:00:49 +08:00 via iPhone
    臭宝 你用什么 doh 啊 分享一下
    MrCurly
        2
    MrCurly  
       2022-02-06 18:02:02 +08:00 via iPhone
    mosdns 前几天在我的 openwrt 上折腾了下,忘了是啥问题,反正就不能用,最后还是回归 smartdns 了…
    sky96111
        3
    sky96111  
       2022-02-06 18:07:02 +08:00 via Android
    AdGuardHome 关掉广告过滤拿来做 dnsmasq 上游也很不错
    hzqim
        4
    hzqim  
       2022-02-06 19:32:15 +08:00
    #Dnsmasq 好像只能单线程查询,性能较弱,添加正则查询用于分流
    #Adguard Home 是刚需,大缓存,可修改 TTL ,拦截广告追踪
    #目前中国移动的 IPV6 已不错

    我的方案:
    Client -> AdH(listen:127.0.0.1:53) -> Dnsmasq(listen:127.0.0.1:54,CN_Upstream:127.0.0.1:55,Other_Upstream:127.0.0.1:56) -> SmartDNS(listen:127.0.0.1:55,Ali_DOH_ipv4&6;listen:127.0.0.1:56,GOOGLE_DOH_ipv4_only)
    bitdepth
        5
    bitdepth  
       2022-02-06 19:40:23 +08:00
    那給作者報 bug 啊
    ZeroClover
        6
    ZeroClover  
       2022-02-06 19:57:02 +08:00   ❤️ 1
    @hzqim 都有 AdGuardHome 了,看不懂 dnsmasq 存在的意义是什么
    hzqim
        7
    hzqim  
       2022-02-06 22:55:15 +08:00
    @ZeroClover 谢谢你的质疑。
    本方案中的 Dnsmasq 打了正则补丁,能根据域名关键字(不局限于 example.com 的形式)匹配上游 DNS 服务器。非常方便定制自己的域名列表。
    看了 AdGuardHome 的 wiki ,它也能分流。但不能匹配关键字,只能匹配合法的域名或泛域名。虽有现成的 list ,但体积都在 1MiB 左右。
    sky96111
        8
    sky96111  
       2022-02-06 23:41:21 +08:00 via Android
    @ZeroClover OpenWrt 只有用内置的 dnsmasq 的时候,luci 主机名命名和本地主机名解析 IP 地址才有效。不然多一次查询开销谁乐意
    yaott2020
        9
    yaott2020  
       2022-02-06 23:54:55 +08:00 via Android
    这个不错,我一直在用。主要是支持 if ,复杂操作都可以胜任
    zro
        10
    zro  
       2022-02-07 00:13:47 +08:00
    一直嫌这个配置有点复杂,没开始用。。有没有默认配置的模板啊?😁
    carrionlee
        11
    carrionlee  
       2022-02-07 08:52:17 +08:00
    我已经稳定使用半年多了~~
    brMu
        12
    brMu  
    OP
       2022-02-07 09:43:29 +08:00   ❤️ 1
    @zro 这是我的配置,规则是 gfwlist 域名用远程 DNS 解析,其他域名用本地 DNS 解析,以本地为优先,确保不会将本地域名解析到国外,个别需要用远程 DNS 解析的放到 mylist 列表。

    log:
    level: info
    file: '/tmp/mosdns.log'

    plugin:
    - tag: server
    type: server
    args:
    entry:
    - hosts
    - mem_cache
    - main_sequence
    server:
    - protocol: udp
    addr: 127.0.0.1:53
    - protocol: udp
    addr: 192.168.2.1:53
    - protocol: tcp
    addr: 127.0.0.1:53
    - protocol: tcp
    addr: 192.168.2.1:53

    - tag: 'mem_cache'
    type: 'cache'
    args:
    size: 65536
    lazy_cache_ttl: 259200
    lazy_cache_reply_ttl: 5

    - tag: 'modify_ttl'
    type: 'ttl'
    args:
    minimal_ttl: 300
    maximum_ttl: 3600

    - tag: main_sequence
    type: sequence
    args:
    exec:
    - if:
    - gfwlist
    exec:
    - _prefer_ipv4
    - forward_google
    - ipset
    - modify_ttl
    - _return

    - if:
    - '!gfwlist'
    exec:
    - _prefer_ipv4
    - forward_cn
    - modify_ttl
    - _return


    - tag: forward_cn
    type: forward
    args:
    upstream:
    - addr: tls://dns.pub
    - addr: tls://223.5.5.5
    bootstrap:
    - 119.29.29.29
    - 223.5.5.5

    - tag: forward_google
    type: fast_forward
    args:
    upstream:
    - addr: tcp://8.8.8.8
    - addr: tcp://1.1.1.1
    idle_timeout: 60

    - tag: 'ipset'
    type: 'ipset'
    args:
    set_name4: 'gfwlist'
    set_name6: ''
    mask4: 0
    mask6: 0

    - tag: gfwlist
    type: query_matcher
    args:
    domain:
    - 'ext:./gfwlist.conf'
    - 'ext:./mylist.conf'

    - tag: 'hosts'
    type: 'hosts'
    args:
    hosts:
    - 'ext:./hosts'
    moxuanyuan
        13
    moxuanyuan  
       2022-02-07 10:01:19 +08:00
    之前在軟路由 op 中折騰 smartdns ,過年前重裝了 op ,沒配置 smartdns ,只在 Turbo ACC 中開了 DNS 缓存,感覺沒什麼區別。。現在不明白當初爲什麼要折騰 dns 。。。
    brMu
        14
    brMu  
    OP
       2022-02-07 10:21:33 +08:00
    @bitdepth 报过 bug ,作者好久没更新了,不知道什么原因

    @moxuanyuan 主要是用来分流、超长时间缓存、并发查询、修改 TTL 、DoT ,如果没有这些特殊需求,确实不用折腾的
    wagsoft
        15
    wagsoft  
       2022-02-07 10:25:51 +08:00
    捣鼓 DNS 的目的是啥?
    难道能直连 GFW 不让连的?
    moxuanyuan
        16
    moxuanyuan  
       2022-02-07 10:43:34 +08:00
    @brMu #14 op 中的出国软件都自带 dns 分流和缓存。。超长时间缓存,并发查询、修改 TTL 、DoT ,感觉都是伪需求。。
    Rilimu
        17
    Rilimu  
       2022-02-07 12:43:15 +08:00 via Android
    在用。神器。

    if 很灵活。有需要直接 if 。一个程序解决,不用套娃其他 dns 。而且可以 IP 分流。

    个人感觉单域名分流是大坑。域名是可以随便注册和改 IP 的,所有的域名表其实都是大佬们收集的。所以域名表理论上是不可能全的而且变动很大。所以可能有很多域名都被错误分流了。但人们只会感觉网慢了但不知道原因。IP 可是严格分配制的。域名顶多能白名单分流。只有 IP 才能地域分流。

    用域名来地域分流,不在域名表里的域名能不能正确分流全靠运气。

    曾经也是 adh yyds ,现在换了,就知道 ip 分流多有用了。

    还有 redis 外部缓存也是神技,要多大有多大,重启路由都不怕。
    Rilimu
        18
    Rilimu  
       2022-02-07 12:45:07 +08:00 via Android   ❤️ 1
    @zro 有模板啊,wiki 里面,现成的分流配置,复制粘贴直接用。
    Rilimu
        19
    Rilimu  
       2022-02-07 12:53:59 +08:00 via Android
    配置确实难。但是作者还有个不用配置的 mosdns-cn 。以 cn 结尾没错就那个意思。我跟我朋友都推荐这个。自动安装开箱就用。不想折腾的可以去看看。
    brMu
        20
    brMu  
    OP
       2022-02-07 16:09:29 +08:00
    @moxuanyuan 那还真不适合你,对你来说是就是伪需求,但对于别人来说真不是

    @Rilimu IP 分流也用过,最大的问题就是会有误判,比如米家会判断到欧洲、华为有些 app 也会分流到国外
    Rilimu
        21
    Rilimu  
       2022-02-07 17:25:25 +08:00
    @brMu 对。IP 分流误判也很烦。以前网易云什么的经常变国外。但自从加上域名后分流就再也没遇到过问题了。猜测误判的 ip 都是大公司的,然后大公司的域名都被大佬们收录了。两种分流一起用完美取长补短体验就很好。只是带这功能的软件不多。
    brMu
        22
    brMu  
    OP
       2022-02-07 17:36:18 +08:00
    @Rilimu mosdns 的默认分流配置我也用过,也遇到过问题,支付宝里的网商银行打不开,后来干脆放弃了(不希望以后有什么打不开就怀疑到分流),直接白名单吧,国外要访问的网页也就那几个,主要还是国内,当然适合自己的才是最好的
    dudulangjiao
        23
    dudulangjiao  
       2022-03-26 20:50:45 +08:00
    我也发现了 某些网站的域名解析会报错,要多次刷新才可以
    fcymk2
        24
    fcymk2  
       2022-05-15 22:16:28 +08:00
    试了下, 真好用..从 coredns 转过来了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:10 · PVG 15:10 · LAX 23:10 · JFK 02:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.