/mosdns-config

mosdns 设置

Primary LanguageShellGNU General Public License v3.0GPL-3.0

mosdns-config

mosdns v5 配置

配置文件不考虑和之前版本的兼容性,如需更新务必拉取所有文件。

yaml 文件应放在 /etc/mosdns/ 目录下,可配合 luci-app-mosdns 使用。如果要在公网使用,建议将 OpenWrt 自带的 uHTTPd 更换成 Nginx 并设置反代。

可以搭配各种代理工具使用。需要将代理工具内置 DNS 指向 mosdns。顺序应为:Dnsmasq → 代理工具 → mosdns 或者 代理工具 → Dnsmasq → mosdns。无论使用何种顺序,请避免回环。

示例 Clash DNS 配置:

dns:
  enable: true
  ipv6: true
  # default-nameserver: [] # 用不到
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - '127.0.0.1:5335'

主要的分流思路是白名单走运营商 DNS,国内和 Akamai 走 AliDNS,其余域名如解析为被墙或者国外 IP,采用可信 DNS。其中远程 DNS 使用 EasyMosdns

在此基础上,对于使用常见 CDN 的域名进行 IP 替换。具体策略见 CDN 优化策略。请定期更换 IP,防止不可用。推荐以下工具:

注意事项

  1. 此配置在电信网络下测试,其他运营商请自行测试,更换上游 DNS、hosts 文件、black_hole 目标。

  2. 首次启动前先运行 /script/update.sh 来更新规则,可以设置为 crontab 定时任务。

  3. 如果使用 TUN 模式自动设置路由,不要劫持运营商的 DNS,或者将运营商的 DNS 去掉,只用非 53 端口的上游。#2

  4. 可以通过 socks5 代理来提高境外 DNS 的联通性。建议使用单独的代理程序,避免相互依赖。

      - tag: "forward_remote"
        type: "forward"
        args:
          concurrent: 1
          upstreams:
            - addr: "https://162.159.36.1/dns-query"
              enable_http3: false
              socks5: "127.0.0.1:1080" # 目前暂不支持用户名密码认证,只支持基于 TCP 的协议
            - addr: "https://162.159.46.1/dns-query"
              enable_http3: false
  5. 如果在 log 中观察到污染记录,可以将域名添加至 greylist,避免后续再次查询国内上游。

参考:

使用Mosdns进行DNS分流

DNS分流与泄露分析

pmkol/easymosdns

QiuSimons/openwrt-mos

sbwml/luci-app-mosdns