本文介绍 sing-box(或 mihomo)搭配 mosdns 的 fakeip 方案,实现全家设备透明代理和国内外精确分流
[TOC]
一、基础知识
此方案的分流策略是 DNS 分流(域名分流)。本文从实际操作方面做简略介绍,详细进阶知识请参考 skk 大佬的博客。
DNS 解析基本原理
- 在浏览器输入 www.google.com 后,浏览器需要知道其 IP 地址才能建立连接
- 操作系统向本地 DNS 服务器(如 mosdns)发起解析请求
- mosdns 返回 www.google.com 的 IP(如 172.217.31.132)
- 浏览器向该 IP 发起请求并建立连接
传统 CNIP 分流法
在主路由中添加中国 IP 列表:
- IP 不属于 CN 列表 → 流量导向代理软件
- IP 属于 CN 列表 → 通过主路由 WAN 口直连
二、FakeIP 分流的流量走向
工作原理
FakeIP 分流法在 DNS 解析阶段 将 Google 等国外域名解析为不存在于公网的虚假 IP,常用网段:
- 198.18.0.0/18
- 28.0.0.0/8
完整流量路径
浏览器访问 google
↓
获取 fakeip(如 28.0.0.5)
↓
向 28.0.0.5 发起连接
↓
主路由判断 28.0.0.5 在 fakeip 段内
↓
通过静态路由/下一跳网关导入代理程序(sing-box 或 mihomo)
↓
代理程序将 fakeip 还原为域名
↓
域名发送给代理节点进行 DNS 解析
↓
内容返回浏览器
主路由配置
仅需 1 条规则:将 fakeip 段导入代理程序。
RouterOS 用户可通过 mangle 或 route 方式实现,详细参考:RouterOS 使用 FakeIP
三、方案拓扑结构
整体架构
本方案属于 旁路网关 架构:
光猫(桥接)
↓
PVE/ESXI 底层
├── RouterOS 虚拟机(10.0.0.1)→ DHCP + 拨号
├── Debian13 虚拟机(10.0.0.2)→ sing-box 透明代理
└── Debian13 虚拟机(10.0.0.3)→ mosdns DNS 分流
技术过硬的同学可将 sing-box 和 mosdns 部署于同一虚拟机,博主为求稳分开部署。
主路由选择
支持静态路由的系统均可使用:
- RouterOS
- OPNsense
- VyOS
- iKuai
- OpenWrt
- 部分硬路由
部署灵活性
sing-box 和 mosdns 可部署于:
- PVE 的 LXC 容器
- Debian/Ubuntu/Alpine 虚拟机
- OpenWrt 裸核(如 PH 大佬的方案)
- RouterOS 容器(不推荐,性能差)
初次接触建议一个程序一个 VM,熟悉后再自由搭配。
网络配置表
项目 RouterOS sing-box mosdns 需科学的设备 不科学的设备
IP 10.0.0.1/24 10.0.0.2/24 10.0.0.3/24 任意 任意
网关 拨号 10.0.0.1 10.0.0.1 10.0.0.1 10.0.0.1
DNS 运营商 DNS 10.0.0.3 10.0.0.3 10.0.0.3 10.0.0.1 或 223.5.5.5
方案优势
- 国内流量直连:所有设备网关为主路由,国内流量不经过旁路
- 旁路故障不影响国内:旁路挂掉时国内访问正常
- 仅代理流量走旁路:只有 fakeip、TG、奈飞等少数 IP 进入旁路
- P2P 流量天然直连:PT/BT 下载不消耗机场/VPS 流量
注意:如 qb/tr 等程序的 DNS 设置为 mosdns,需将 tracker 服务器域名加入 mosdns 白名单,避免通过代理访问 tracker。
