什么是 MSM?
MSM 是一个旁路由 DNS 分流方案,通过可视化管理平台统一管理 MosDNS(DNS 服务器)和 SingBox/Mihomo(代理内核),实现智能 DNS 分流和透明代理。
核心概念
旁路由架构
MSM 采用旁路由(旁路网关)架构,作为独立的网络设备部署在主路由旁边:
互联网
↓
主路由 (192.168.1.1)
├─ 正常设备 → 直连互联网
└─ 代理设备 → MSM 旁路由 (192.168.1.2) → 代理服务器 → 互联网优势:
- 不影响主路由配置,无需刷机或安装插件
- 可随时启用或禁用,不影响网络稳定性
- 支持任何路由器系统(只需支持静态路由和自定义 DNS)
- 故障时自动回退到主路由,不影响正常上网
DNS 分流
MSM 使用 MosDNS 实现智能 DNS 分流:
- 国内域名: 使用国内 DNS(如 223.5.5.5),直连访问
- 国外域名: 返回 FakeIP 地址,通过代理访问
- 自定义规则: 支持域名白名单、黑名单、自定义分流规则
FakeIP 模式
FakeIP 是一种高效的代理模式:
- 国外域名解析时返回虚拟 IP(28.0.0.0/8 网段)
- 主路由通过静态路由将 FakeIP 流量转发到 MSM
- MSM 拦截 FakeIP 流量并通过代理转发
- 减少 DNS 泄漏,提高代理效率
透明代理
MSM 实现全局透明代理:
- 无需客户端配置: 设备无需安装任何软件或配置代理
- 自动分流: 根据 DNS 分流结果自动选择直连或代理
- 设备级控制: 通过 IP 白名单精确控制哪些设备走代理
工作流程
1. 客户端发起 DNS 请求
↓
2. 主路由转发 DNS 请求到 MSM (MosDNS)
↓
3. MosDNS 根据规则分流:
├─ 国内域名 → 返回真实 IP → 客户端直连
└─ 国外域名 → 返回 FakeIP (28.0.0.0/8)
↓
4. 客户端访问 FakeIP 地址
↓
5. 主路由通过静态路由将流量转发到 MSM
↓
6. MSM (SingBox/Mihomo) 拦截流量并通过代理转发
↓
7. 代理服务器访问目标网站并返回结果核心组件
MosDNS
- 功能: DNS 服务器,负责 DNS 分流
- 端口: 53(DNS 标准端口)
- 特性:
- 支持多种分流规则(域名、IP、GeoIP)
- 支持 FakeIP 模式
- 支持 DNS 缓存
- 支持自定义上游 DNS
SingBox / Mihomo
- 功能: 代理内核,负责透明代理
- 端口:
- SingBox: 7890 (HTTP), 7891 (SOCKS5), 7892 (混合)
- Mihomo: 7890 (HTTP), 7891 (SOCKS5), 7892 (混合)
- 特性:
- 支持多种代理协议(Shadowsocks, VMess, Trojan, VLESS 等)
- 支持透明代理(TProxy, Redirect)
- 支持规则分流
- 支持负载均衡和故障转移
MSM 管理平台
- 功能: 可视化管理界面
- 端口: 7777(Web 界面)
- 特性:
- 一键安装和配置服务
- 在线编辑配置文件
- 实时查看服务状态和日志
- 配置历史和回滚
- 用户权限管理
适用场景
MSM 适合以下场景:
- 家庭网络: 部分设备需要代理,部分设备直连
- 小型办公室: 统一管理网络代理,无需每台设备配置
- 软路由: 作为软路由的 DNS 和代理解决方案
- 学习研究: 了解 DNS 分流和透明代理的工作原理
系统要求
硬件要求
- CPU: 1 核心以上(推荐 2 核心)
- 内存: 512MB 以上(推荐 2GB)
- 存储: 2GB 可用空间(推荐 10GB)
- 网络: 有线网络连接(推荐千兆网卡)
软件要求
- 操作系统:
- Linux (Debian 11+, Ubuntu 20.04+, CentOS 8+, Alpine 3.15+)
- macOS 10.15+
- 架构: x86_64 (amd64) 或 ARM64 (aarch64)
- 权限: root 或 sudo 权限
网络要求
- 主路由: 支持静态路由和自定义 DNS
- 网络拓扑: MSM 主机与主路由在同一局域网
- IP 地址: MSM 主机需要固定 IP 地址
与其他方案对比
| 特性 | MSM | 路由器插件 | 客户端代理 | 其他旁路由方案 |
|---|---|---|---|---|
| 无需刷机 | ✅ | ❌ | ✅ | ✅ |
| 可视化管理 | ✅ | 部分支持 | ✅ | ❌ |
| 透明代理 | ✅ | ✅ | ❌ | ✅ |
| 设备级控制 | ✅ | ✅ | ❌ | 部分支持 |
| 配置简单 | ✅ | ❌ | ✅ | ❌ |
| 跨平台支持 | ✅ | ❌ | ✅ | 部分支持 |
| 单二进制部署 | ✅ | ❌ | ✅ | ❌ |