MosDNS 分流
MosDNS 是什么 🧭
MosDNS 是一个开源的分流 DNS 工具,作用类似 AdGuard Home 的 DNS 分流功能:按域名规则把不同查询交给不同的上游 DNS,实现国内域名走国内 DNS、国外域名走国外 DNS、广告域名直接拦截。
相比 AdGuard Home 自带分流,MosDNS 规则更灵活,适合软路由 / 旁路由上做精细分流。
项目地址:https://github.com/IrineSistiana/mosdns
典型场景 🏠
- 国内域名走国内 DNS(延迟低),国外域名走国外 DNS(解析准)
- 拦截广告域名,配合 AdGuard Home 或单独使用
- 解决国内 DNS 解析国外域名慢、国外 DNS 解析国内 CDN 不准的问题
与 AdGuard Home 配合 🤝
推荐组合:AdGuard Home(过滤 + 缓存)+ MosDNS(分流)
设备 → AdGuard Home(拦截广告、缓存)→ MosDNS(按域名分流)→ 国内/国外上游 DNS- AdGuard Home 的上游 DNS 填 MosDNS 的监听地址(如
127.0.0.1:5335) - MosDNS 再按规则把查询分发给不同上游
安装方式 ⚙️
OpenWRT
- 有 iStore / 插件源的软路由,直接在商店搜索 mosdns 安装
- 或下载对应架构的安装包:https://github.com/IrineSistiana/mosdns/releases
Docker
bash
mkdir -p /mnt/docker/apps/mosdns && cd /mnt/docker/apps/mosdns
# 编写 config.yaml 后启动
docker run -d --name mosdns \
-v /mnt/docker/apps/mosdns/config.yaml:/etc/mosdns/config.yaml \
-p 5335:53/udp -p 5335:53/tcp \
--restart always \
irine/mosdns:latest配置示例 📝
一份简单的分流配置(国内走阿里 DNS,国外走 Cloudflare,广告域名拦截):
yaml
log:
level: info
plugins:
- tag: upstream_cn
type: forward
args:
concurrent: 2
upstreams:
- addr: https://dns.alidns.com/dns-query
- addr: https://doh.pub/dns-query
- tag: upstream_foreign
type: forward
args:
concurrent: 2
upstreams:
- addr: https://cloudflare-dns.com/dns-query
- addr: https://dns.google/dns-query
- tag: ads
type: query_matcher
args:
domain:
- adguard-dns: A
- adguard-dns: AAAA
- tag: cn_domains
type: query_matcher
args:
domain:
- geosite: cn
- tag: sequence_main
type: sequence
args:
- matches:
- ads
exec: reject 0
- matches:
- cn_domains
exec: goto upstream_cn
- exec: goto upstream_foreign
- tag: dns_server
type: udp_server
args:
entry: sequence_main
listen: ":5335"TIP
配置较复杂时建议先用别人的成品规则,跑通再改。MosDNS 官方仓库和社区有大量现成配置。