以 FakeIP 分流为基石的科学上网方案

以 FakeIP 分流为基石的科学上网方案原文备份。

本文介绍 sing-box(或 mihomo)搭配 mosdns 的 fakeip 方案,实现全家设备透明代理和国内外精确分流

[TOC]

一、基础知识

此方案的分流策略是 DNS 分流(域名分流)。本文从实际操作方面做简略介绍,详细进阶知识请参考 skk 大佬的博客。

DNS 解析基本原理

  1. 在浏览器输入 www.google.com 后,浏览器需要知道其 IP 地址才能建立连接
  2. 操作系统向本地 DNS 服务器(如 mosdns)发起解析请求
  3. mosdns 返回 www.google.com 的 IP(如 172.217.31.132)
  4. 浏览器向该 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

方案优势

  1. 国内流量直连:所有设备网关为主路由,国内流量不经过旁路
  2. 旁路故障不影响国内:旁路挂掉时国内访问正常
  3. 仅代理流量走旁路:只有 fakeip、TG、奈飞等少数 IP 进入旁路
  4. P2P 流量天然直连:PT/BT 下载不消耗机场/VPS 流量

注意:如 qb/tr 等程序的 DNS 设置为 mosdns,需将 tracker 服务器域名加入 mosdns 白名单,避免通过代理访问 tracker。