孙亮亮
返回 家庭网络

家庭网络

家庭网络智能 DNS 分流实战:用 mosdns 实现国内外域名解析加速与 DoH 防污染

2026年10月13日

用 mosdns 给家庭网络做国内外 DNS 分流,加速访问并防污染。

智能DNSDNS分流mosdns家庭网络

家庭网络智能 DNS 分流实战:用 mosdns 实现国内外域名解析加速与 DoH 防污染

摘要

家里访问国内站点慢、打开部分国外服务又经常解析超时?根因往往不是带宽,而是 DNS。本文用轻量开源工具 mosdns 在家庭网关上做 DNS 分流:国内域名走本地运营商解析保证快,国外域名走 DoH/DoT 加密解析防污染,并保留广告域名拦截能力。

为什么需要 DNS 分流

默认情况下,路由器把所有域名都交给同一个上游 DNS。问题有两个:一是国内域名被送到境外 DNS 会绕路变慢;二是境外域名在部分网络环境下会被污染或劫持,导致能 ping 通 IP 却打不开网页。

分流的核心思路是"按域名归属选路":

  • 国内域名(如 taobao.com、qq.com)→ 国内公共 DNS(如 223.5.5.5、119.29.29.29),延迟低、解析准。
  • 国外域名(如 github.com、openai.com)→ DoH/DoT 加密上游(如 Cloudflare 1.1.1.1、Google 8.8.8.8 的 DoH 端点),防篡改。
  • 广告/跟踪域名 → 返回 0.0.0.0 或 NXDOMAIN 直接拦截。

mosdns 是什么

mosdns 是一个用 Go 写的高性能 DNS 转发器,特色是"按规则分流 + 多上游并发 + 可插拔逻辑"。它比单纯的 DNS 去广告工具(如 AdGuard Home)更侧重"分流解析",也常和 AdGuard 搭配:AdGuard 负责缓存与去广告面板,mosdns 放在更上游做分流选路。

部署形态通常是 Docker 容器(群晖/飞牛/OpenWrt 均可),监听 53 端口,把自己设为局域网的 DNS 服务器。

部署步骤(以 Docker 为例)

  1. 准备配置目录:
mkdir -p /opt/mosdns && cd /opt/mosdns
  1. 编写 config.yaml,核心结构包含三个部分:上游定义、分流规则、监听端口。示例片段:
upstream:
- addr: "223.5.5.5"
  tag: "local"
- addr: "https://1.1.1.1/dns-query"
  tag: "remote"
  1. 用 docker-compose 拉起:
services:
  mosdns:
    image: sbwml/mosdns:latest
    container_name: mosdns
    volumes:
      - ./config.yaml:/etc/mosdns/config.yaml
    network_mode: host
    restart: unless-stopped
  1. 把路由器 DHCP 下发的 DNS 改为这台主机的 IP(如 192.168.1.10),或在 OpenWrt 的"网络→DHCP/DNS"里把"DNS 转发"指向它。

两条关键规则

  • 地理分流:mosdns 内置 geoip 与 geosite 数据库,可按域名所属地区自动判定走 local 还是 remote。规则大致是:命中国内列表→local;其余→remote。
  • 防污染校验:对 remote 上游开启"EDNS 客户端子网关闭 + 并行查询 + 结果比对",如果返回的 IP 属于被污染段,则丢弃重新解析。

与 AdGuard Home 的取舍

如果你只想要"去广告 + 基础加速",AdGuard Home 一个就够;但当你出现"国内快、国外抽风"的割裂现象,就需要 mosdns 做更细的分流。常见组合:客户端 DNS → AdGuard(53) → mosdns(分流) → 上游。两者共用一台机器时注意端口错开(AdGuard 用 53,mosdns 用 5335,AdGuard 的上游填 127.0.0.1:5335)。

验证与排错

  • 验证分流是否生效:
dig github.com +short @192.168.1.10
dig taobao.com +short @192.168.1.10

观察前者是否走加密上游、后者是否走国内。

  • 常见坑:国内公共 DNS 用 UDP 53 易被运营商限速,可改用 DoT(tls://dot.pub);geosite 数据库需定期更新否则新域名会误判;IPv6 环境下记得同时处理 AAAA 记录。

小结

DNS 分流是家庭网络里"投入小、体感强"的优化项。一条 mosdns 规则就能让国内外访问同时变快变稳,配合 AdGuard 还能顺手去广告。建议先在旁路由或一台常开设备上试点,确认解析正常再全屋切换 DNS。

本模块其他文章

家庭网络智能 DNS 分流实战:用 mosdns 实现国内外域名解析加速与 DoH 防污染 · 孙亮亮