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

DNS 分流防污染软件 mos-chinadns 踩坑分享

  •  
  •   Rilimu · 2020-07-11 09:53:40 +08:00 via Android · 3785 次点击
    这是一个创建于 1625 天前的主题,其中的信息可能已经有所发展或是发生改变。
    很好用的软件。配置起来算是最简单的了。可惜是新软件详细教程很少。默认配置文件直接拿来用还有坑。之前 openwrt 摸爬滚打终于成功配置上了。在这里给 v 友分享一下踩过的坑。

    虽然“开箱即用”,但配置文件里:
    local 默认是 223.5.5.5 udp,不能防运营商劫持。要换 doh 。
    remote 默认是 1.0.0.1 dot 。丢包超严重,基本上不能用。由于没有能稳定直连的服务器,最后选择了通过 socks5 走代理。

    openwrt 的坑:
    默认监听地址会和 dnsmasq 冲突,要改。
    必须要装 ca-bundle 包。否则 doh 和 dot 都会报错不能连接。(太坑了,找了很久原因,最后从隔壁 smartdns 看到了....

    windows:
    除了配置文件默认服务器要改,目前没有遇到其他坑。用作者的脚本一键安装就行了。👍

    最后,Windows 上运行一个,防止出门连其他 WiFi 的时候被劫持。路由器上和 smartdns 一起用。国内 CDN 友好而且还能分流防污染。

    太香了,完全不后悔折腾。感谢开源大佬们的无私奉献。

    现在就是还不知道有什么办法能自动更新大陆 IP 和域名表。每次都是隔一周手动更新然后重启。
    45 条回复    2020-11-20 17:21:33 +08:00
    shikkoku
        1
    shikkoku  
       2020-07-11 10:06:18 +08:00 via Android
    默认监听端口 53 被占用的问题,要把 dnsmaq 的端口改成 0 禁用。
    shikkoku
        2
    shikkoku  
       2020-07-11 10:08:12 +08:00 via Android
    local 我记得默认配置是同时配置了 dot 和 doh 的。
    terrytw
        3
    terrytw  
       2020-07-11 11:16:06 +08:00
    能详细介绍一下和 smartdns 怎么一起用么
    Rilimu
        4
    Rilimu  
    OP
       2020-07-11 11:30:50 +08:00
    @shikkoku 没。虽然默认 dot 和 doh 参数都填好了。但 protocol 是`udp`....极具迷惑性....

    @terrytw smartdns 不要设置分流,只用国内 dns 服务器。然后设置成 mos-chinadns 的 local 服务器。就可以了。
    terrytw
        5
    terrytw  
       2020-07-11 11:47:00 +08:00
    @Rilimu 原来如此,谢谢分享
    之前试过 openwrt 自带的 https-dns-proxy,总有些奇怪的问题
    现在试试这个看看
    zro
        6
    zro  
       2020-07-11 12:49:48 +08:00
    @terrytw #5 hdp 我都弃用了,还是 stubby 好用,不知 mos-chinadns 跟开启 add-subnet 的 dnsmasq 比,会好在哪?🤔
    看起来好像差别不大,而且空间占用得还大。。
    shikkoku
        7
    shikkoku  
       2020-07-11 16:47:24 +08:00
    我装了 ca-bundle 都不行,阿里的连接改成 dot 或者 doh 都解析不了。

    用 wiki 的命令测试会这样提示

    root@OpenWrt:~# mos-chinadns -c config.yaml -dir2exe
    INFO[0000] main: mos-chinadns ver: v1.2.0-0-g5e173f3
    INFO[0000] main: arch: amd64 os: linux
    INFO[0000] main: current working directory: /usr/bin
    FATA[0000] main: can not load config file, open config.yaml: no such file or directory

    配置文件路径是
    /etc/mos-chinadns/config.yaml
    /etc/mos-chinadns/chn.list
    /etc/mos-chinadns/chn_domain.list
    AoTmmy
        8
    AoTmmy  
       2020-07-11 16:57:51 +08:00
    smartdns 也能防污染,用 blacklist
    shikkoku
        9
    shikkoku  
       2020-07-11 17:34:50 +08:00
    确实有点坑踩的,我试着 DOH 工作不太正常去问作者,作者才告诉我,addr: "223.5.5.5:53"上的端口号要随 dns 类型改,例如 DoT 是 853,DoH 是 443 。虽然我应该留意到下面的 remote 配置里 1.0.0.1 的端口号默认是用了 853 的并且类型是 DoT 的。
    Rilimu
        10
    Rilimu  
    OP
       2020-07-11 18:22:28 +08:00 via Android
    我主要是分流用。

    真的比我之前用的 overture 和 dnsmasq 分流方案都高效的多。在我小路由上,overture ip+域名分流最卡,有请求时 30%CPU 占用。dnsmasq 只能域名分流,占 20%。前两者请求多了容易直接 100%。mos-chinadns 最多只见到 2%占用(怪不得作者的介绍页 20%都在强调高性能,虽然看不懂...

    @zro 感觉性能上确实有点区别。

    而且到目前为止分流还没出错过。dnsmasq 经常出错。

    也试过 chinadns-ng,但要编译太难了放弃了。

    就是作者的教程什么都没写,全是坑啊啊啊啊啊。你这坑我也踩了过..... @shikkoku
    shikkoku
        11
    shikkoku  
       2020-07-11 18:42:38 +08:00
    @Rilimu #10

    每个人的使用环境都不一样。Openwrt 的碎片化也很严重。全都写进 wiki 不现实。

    相信对于已经开始折腾 dns 的玩家来说,这些都是小问题。——IrineSistiana

    作者原话。
    Rilimu
        12
    Rilimu  
    OP
       2020-07-11 18:48:58 +08:00
    @zro #11

    确实,最后发现踩到的坑都是常识问题。对小白可能不友好。

    刨去踩的坑。配置完其实很快很简单。
    zro
        13
    zro  
       2020-07-11 19:07:25 +08:00
    @Rilimu #10 我一直在用 dnsmasq,没发现会出什么错,开启 add-subnet 都不用考虑分流,上游是支持 EDNS 的 DNS 就可以,挂代理拿到的结果跟直连的结果可以是一样的~~
    Rilimu
        14
    Rilimu  
    OP
       2020-07-11 19:19:55 +08:00
    @zro 还有这种操作?

    大佬,能详细说一下嘛。👀
    zro
        15
    zro  
       2020-07-11 19:37:48 +08:00   ❤️ 2
    @Rilimu #14 在 /etc/dnsmasq.conf 添加“add-subnet=x.x.x.x/24,x.x.x.x/24”,x.x.x.x 换成你本省 ISP 的 IP,第二个 x.x.x.x/24 可以不要,也可以换成 X::Y:Z/64 之类的本省 IPv6,之后保存退出重启 dnsmasq~~

    至于上游 DNS,我是首选 Google 的,其次是 NextDNS,因为 Google 的 EDNS 貌似支持的比较好。。
    terrytw
        16
    terrytw  
       2020-07-11 21:27:34 +08:00
    同样遇到坑,分享一下
    如果是配合 luci 的科学软件的话,卸载了 chinadns 之后原来的 chnroute.txt 也被一并删除了,所以绕过的列表要改
    改成 chn.list 是可以的,但是要把 chn.list 里所有 ipv6 的地址删除,否则 ss-rules 一直报错
    gesse
        17
    gesse  
       2020-07-12 01:54:44 +08:00 via iPhone
    作者已经这两天被你们“气得删库跑路了” 😁

    “This project is no longer maintained.”
    evilvoy
        18
    evilvoy  
       2020-07-12 02:04:20 +08:00
    看到楼上我笑喷了
    natsji
        19
    natsji  
       2020-07-12 02:23:57 +08:00 via Android
    ssplus 不是自带 dns 分流吗,非大陆的直接从服务器查询 dns
    natsji
        20
    natsji  
       2020-07-12 02:26:15 +08:00 via Android
    missdeer
        21
    missdeer  
       2020-07-12 08:34:51 +08:00
    gesse
        22
    gesse  
       2020-07-12 10:27:03 +08:00
    @gesse
    怎么今天看又恢复了? 昨天晚上看已经删库了-_-
    Rilimu
        23
    Rilimu  
    OP
       2020-07-13 10:28:33 +08:00
    @natsji #20 coolsnowwolf 大佬👍,现在我也是按在他的逻辑分流,速度起飞。
    Rilimu
        24
    Rilimu  
    OP
       2020-07-13 10:32:04 +08:00
    重新测试了一下 smartdns 。貌似只要上游服务器可靠,比如大阿里的 223.5.5.5 。smartdns 就体现不出优势,甚至延时更高变逆向优化了。放弃了 smartdns 了。改用 mos-chinadns dot 直连 223.5.5.5 了。
    HalloCQ
        25
    HalloCQ  
       2020-07-13 11:14:27 +08:00
    mos-chinadns 有一点不完善 不支持把请求者 ip 设置为 ecs ip,也就是说 ecs ip 只能写死,这导致只能部署到本地。
    还是认为 overture 好用
    Rilimu
        26
    Rilimu  
    OP
       2020-07-13 12:47:56 +08:00
    @HalloCQ issus 里有人提过。但作者最后这个功能给拒绝了。

    > 如果把 mos-chinadns 部署到公网,建议使用 unbound + mos-chinadns 。unbound 负责插入请求者的 ip,负责缓存之类的。mos-chinadns 则作为 unbound 的上游。mos-chinadns 是个分流器,插 ECS 和缓存这方面做的没有 unbound 好。而且效率不高。考虑了一下,没必要再造个方形的轮子,所以这个功能不会加入。

    原话。😢
    HalloCQ
        27
    HalloCQ  
       2020-07-13 13:35:42 +08:00
    @Rilimu 这样的话,还是用 overture 好了。overture 的分流 和 ecs 做的挺好的。
    就是缓存发现只按域名来缓存,应该按域名+ecs 来缓存比较好
    06_taro
        28
    06_taro  
       2020-07-14 07:09:35 +08:00 via Android
    https://github.com/folbricht/routedns
    推荐一下 routedns,上面说的基本上都有,另外多个上游规则很强大
    shikkoku
        29
    shikkoku  
       2020-07-14 10:49:31 +08:00
    @06_taro #28 看上去更复杂了,又要自己编译。
    Whalko
        30
    Whalko  
       2020-07-17 12:24:06 +08:00
    mos-chinadns 改好了但还是返回被污染的结果……,我已经不知道问题出在哪里了……
    CORE2020
        31
    CORE2020  
       2020-07-20 18:43:58 +08:00
    @zro 大佬能否给个联系方式,这个怎么配合科学插件呢
    CORE2020
        32
    CORE2020  
       2020-07-20 18:55:11 +08:00
    @06_taro 这个怎么编译呢
    CORE2020
        33
    CORE2020  
       2020-07-20 18:56:17 +08:00
    dalao 我想知道你这个和科学插件怎么配合使用
    zro
        34
    zro  
       2020-07-20 20:37:23 +08:00
    @CORE2020 #31 回帖问就是了,会答复你的。。那你是打算用什么科学插件呢?
    CORE2020
        35
    CORE2020  
       2020-07-21 08:02:13 +08:00
    @zro passwall 和 ssrp 呀
    zro
        36
    zro  
       2020-07-21 13:26:40 +08:00
    @CORE2020 #35 就一个 DNS 服务都要搞得那么复杂的吗?🤔以加密方式稳定地拿到干净、速度快的 IP 就可以了,上次跟你说的 dnsmasq+add-subnet+支持 EDNS 的 DoT/DoH 为上游 DNS,真的不香吗?🙄
    CORE2020
        37
    CORE2020  
       2020-07-21 15:28:21 +08:00
    @zro 那个知道了。就是想玩 mos 怎么办
    zro
        38
    zro  
       2020-07-21 19:50:53 +08:00
    @CORE2020 #37 这个要不定时更新 IP 和域名数据的,每次查询新域名,都要遍历一次数据库,遍历完了我用 dnsmasq 的话请求数据估计都发到上游了,这边才开始发数据~~😜
    CORE2020
        39
    CORE2020  
       2020-07-22 13:41:03 +08:00 via Android
    @zro 那算了,还是继续用 smartdns
    shikkoku
        40
    shikkoku  
       2020-07-22 15:59:19 +08:00
    @CORE2020 #39 smartdns 就不用维护 blacklist ip 了吗?
    bclerdx
        41
    bclerdx  
       2020-10-21 23:01:45 +08:00
    @zro 你本省 ISP 的 IP 是什么意思?
    bclerdx
        42
    bclerdx  
       2020-10-21 23:11:18 +08:00
    @zro 遍历一次数据库时间需要多久?
    bclerdx
        43
    bclerdx  
       2020-10-21 23:12:05 +08:00
    @zro 这种方案,我觉得其实挺香的。
    Kobayashi
        44
    Kobayashi  
       2020-11-20 17:07:14 +08:00
    @HalloCQ mos-chinadns 和 overture 相比,前者效率更高,可以复用连接。而且 overture 规则匹配使用的是正则,灵活高但开销大。

    @AoTmmy 污染响应黑名单不大靠谱,当年 ChinaDNS 就讨论过这个问题,现在没人用这种老掉牙的方式抗污染了。https://github.com/pymumu/smartdns/issues/9
    HalloCQ
        45
    HalloCQ  
       2020-11-20 17:21:33 +08:00
    @Kobayashi 我记得 overture 可以设置 4 种规则匹配方式,看你选择。不过我已经在用 adgh 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2758 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:47 · PVG 22:47 · LAX 06:47 · JFK 09:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.