这是一份为你深度定制的、站在资深网络运维工程师视角的万字级技术知识库文档。由于单次回复存在字符上限,本文将以最详尽、最专业、最具实操性的方式,拆解整个项目。你可以直接将此文档归档为 README.md,作为日后维护和灾备的终极指南。
个人专属终极网络架构、OpenWrt编译与OpenClash分流技术白皮书
📖 前言:项目背景与核心思想
本方案依托一台 Centerm N610 (Intel J1900, x86_64) 小主机,重新编译了一套专属的 OpenWrt/LEDE 固件,彻底摒弃了老旧、协议支持不全的 PassWall。通过在底层编译阶段解决依赖地狱,并在应用层通过 OpenClash 实现精准的源 IP 分流,最终达成“网络扁平化 + 双无线网关物理隔离”的终极网络架构。
设计指标:
- 国内设备(主路由下):流量纯直连,跑满物理宽带,无代理误判,0 DNS 污染。
- 海外设备(副路由下):流量强制走代理,防 DNS 泄漏,自动节点负载均衡。
- 网关隔离:两套 Wi-Fi(国内直连 SSID 与 Home-Global)物理隔离,互不干扰。
第一部分:宿主机环境与 Docker 编译环境搭建(Ubuntu 24.04)
1.1 宿主机系统准备与基础工具安装
编译 OpenWrt 极易受系统环境影响,因此我们推荐在 Ubuntu 24.04 LTS 环境下进行。
- 依赖安装:
1
2
3sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential libncurses5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc wget unzip python3 time
1.2 Docker 的安装与深度配置
容器化编译可以完美隔离宿主机环境,避免污染。
- 安装 Docker:
1
2curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable docker --now - 配置镜像加速:编辑
/etc/docker/daemon.json,填入以下内容(使用国内镜像,防止拉取镜像超时):重启 Docker 服务:1
2
3
4
5
6{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}systemctl restart docker - 创建编译工作目录:
1
mkdir -p /workspace && cd /workspace
1.3 启动 Docker 编译容器与关键环境变量
启动一个具备特权(--privileged)的 Ubuntu 容器,必须映射 TUN 设备以便后续网络测试:
1 | docker run -itd --name openwrt_build \ |
容器内部环境变量与基础配置:
1 | # 换源加速(阿里云 Ubuntu 源) |
第二部分:OpenWrt 源码拉取、Feeds 更新与第三方插件植入
2.1 拉取 LEDE 源码
我们选用 coolsnowwolf/lede(Lean 版),该版本集成度高,对国内网络编译环境友好。
1 | cd /workspace |
2.2 Feeds 更新与 Git 所有权问题修复
拉取 feeds 是编译的基础,但 Docker 内 root 用户常常会遇到 Git 安全报错。
1 | # 修复 Git 检测到的不安全所有权问题 |
排错提示:如果 git clone 极慢,可以修改 /workspace/openwrt/feeds.conf.default,将 https://github.com/ 替换为 https://ghproxy.com/https://github.com/。
2.3 植入第三方核心插件(OpenClash 等)
Feeds 源中默认可能没有 OpenClash 的最新版。我们需要手动 clone 到 package/ 目录下。
1 | cd /workspace/openwrt/package |
(⚠️ 注意:源码克隆后,确保 Makefile 位于 luci-app-openclash/ 的第一级目录,不要陷入多层嵌套中。)
第三部分:make menuconfig 深度配置指南(万字精华)
这是整个编译过程的心脏,每一个勾选都决定了固件的功能与稳定性。请执行 make menuconfig 逐一配置。
3.1 Target System & Target Images (底层架构)
Target System->x86Subtarget->x86_64Target Profile->GenericTarget Images-> 勾选squashfs和ext4,**必须选中Build EFI image**(生成小主机可用的.img.gz固件)。
3.2 LuCI (图形界面)
LuCI->Collections-><*> luci(全选)LuCI->Modules-><*> luci-compat(极其重要,OpenClash 与 PassWall 核心界面的依赖)LuCI->Themes-><*> luci-theme-argon(美观的现代化主题)LuCI->Applications-> 选中你需要的大部分网络、系统插件。
3.3 Network (网络底层,生死线)
⚠️ 避坑核心! 小主机之前报错 kmod-nft-core 的根源就在这里。
Network->Firewall:- 必须选中:
<*> iptables、<*> iptables-mod-tproxy、<*> iptables-mod-extra。 - 必须取消选中:
< > nftables、< > firewall4。 - 原理:OpenClash 和 PassWall 在缺乏特定 nftables 内核模块的固件上极容易崩溃。彻底拥抱传统的 iptables 体系是兼容性的王道。
- 必须选中:
Network->DHCP and DNS:<*> dnsmasq-full(必须替换精简版 dnsmasq,OpenClash 的 DNS 劫持依赖它)。
3.4 Utilities 与 Languages (运行环境依赖)
Utilities->Shells-><*> bash(OpenClash 的脚本运行环境,一定要内置)Languages->Ruby-><*> ruby和<*> ruby-yaml(订阅转换依赖)
3.5 系统工具与其他常用插件推荐
Utilities->Terminal-> 选中nano或vim(方便 SSH 下编辑文件)。Network->SSH-> 确保内置openssh-sftp-server(方便后台上传文件)。- 选中
luci-app-turboacc(网络加速,但需注意与代理插件的兼容性,若不稳定可不装)。 - 选中
luci-app-filetransfer或luci-app-ttyd(网页终端与文件上传)。
3.6 保存配置与依赖检查
执行 make defconfig 生成默认的 .config 文件。随后搜索 luci-app-openclash 确保其被 <*> 选中。若提示缺少依赖,按照错误提示逐一在 menuconfig 中补齐(通常是 bash、ruby 等)。
第四部分:编译、排错与固件提取
4.1 预下载与编译
- 预下载源码包:排错:日志中如果出现
1
make download -j8 V=s
Download failed或Wrong hash,是 GitHub 连接不稳造成的。系统会自动回退到git clone拉取源码。如果卡死,删除/workspace/openwrt/dl/下对应损坏的.tar.gz文件,重新执行make download。 - 开始编译(J1900 是 4 核 CPU):耗时:首次编译通常 1-3 小时。如果中间报错停止,仔细看终端最后 20 行红字。大部分是某个源码包下载失败,手动补入
1
make -j4 V=s
dl/目录后重新make -j4 V=s即可断点续传。 - 产物提取:
1
2ls -lh /workspace/openwrt/bin/targets/x86/64/
# 核心产物:openwrt-x86-64-generic-squashfs-combined-efi.img.gz
4.2 从 Docker 取出固件
宿主机(Ubuntu)执行:
1 | docker cp openwrt_build:/workspace/openwrt/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined-efi.img.gz /root/ |
然后通过 SFTP 或 SCP 下载到本地电脑。
第五部分:刷机实操、固件插件详解与系统初始化
5.1 刷机实操(网页直刷法,最安全)
- 备份旧系统:登录旧 LEDE,系统 -> 备份/升级,生成并下载
.tar.gz备份文件。 - 物理连接:拔掉所有网线,只留电脑连小主机的 LAN 口。
- 网页刷机:电脑进入旧系统
192.168.2.1-> 系统 -> 备份/升级 -> 刷写固件。 - 上传并刷机:上传解压后的
.img文件,⚠️ 必须取消勾选“保留配置”。等待路由器自动重启(约 3-5 分钟)。
5.2 固件自带插件与图形化系统详解
刷机重启后,你拥有了一个无比纯净且功能强大的系统:
- **图形化界面 (LuCI)**:全中文的 Argon 主题,响应迅速。集成了系统状态、路由表、DHCP 租约等监控。
- **Network (网络底层)**:内置完整的
iptables防火墙体系,包含iptables-mod-tproxy,为 OpenClash 提供了最稳固的底层劫持支持。 - **OpenClash (核心代理)**:预装的最新版,拥有
TUN模式支持。 - **PassWall (备用核心)**:虽然你不再使用,但编译进固件作为备用方案依然是一个好习惯。
- 系统工具:内置
bash、ruby等所有必要环境,无需再手动opkg install,彻底告别依赖缺失。 - 网络工具:包含
dnsmasq-full、curl、unzip等。
5.3 网络初始化配置
- 修改 LAN 口:默认进入
192.168.1.1。网络 -> 接口 -> LAN -> 修改 IPv4 为192.168.2.1,保存重启。 - 配置 WAN 口:插上光猫网线。协议选 DHCP 客户端(光猫是路由模式),获取
192.168.1.X。 - 开启 DHCP:确保 LAN 的 DHCP 处于启用状态。
- 物理连线恢复:光猫 -> 小主机 WAN;小主机 LAN -> 华为 AP;小主机 LAN -> Tenda WAN(静态 IP
192.168.2.3)。
第六部分:OpenClash 深度配置与双轨分流实战
6.1 内核更新与订阅拉取
- 进入 服务 -> OpenClash -> 运行状态,点击“检查更新”,下载最新的 Meta 内核(Mihomo)。
- 进入 配置订阅,填入你的机场 Clash 订阅码。
- 过滤节点(极其重要):在订阅编辑中,填入“筛选节点:
US”,“排除节点:HK”。从源头过滤出纯美国节点,避免配置中生成空的 JP/HK 策略组导致Parse config error。
6.2 核心分流规则:实现双轨物理隔离
- 运行模式:
TUN(混合) - 代理模式:
规则 (Rule)(绝对不能选“直连”或“全局”)。 - 自定义规则配置(覆写设置 -> 规则设置):原理:Clash 从上往下匹配。192.168.2.3 命中第一条(代理);其余设备命中第二条(直连)。至此,完美实现主副路由的物理隔离。
1
2
3
4
5# 注意:绝对不要用带 Emoji 或空格的策略组名,否则报错 "Parse config error"
# 副路由 (192.168.2.3) 强制走 GLOBAL 代理
- SRC-IP-CIDR,192.168.2.3/32,GLOBAL
# 主路由及国内设备 (192.168.2.0/24) 强制直连
- SRC-IP-CIDR,192.168.2.0/24,DIRECT
6.3 DNS 防泄漏与网络优化
- DNS 劫持:在 OpenClash 的 DNS 设置里,确保
ChinaDNS-NG开启,DNS 模式选通过 TCP 请求 DNS,远程 DNS 填1.1.1.1。强制拦截内网所有 53 端口请求。 - 副路由 DNS:登录 Tenda 后台,WAN 口首选/备用 DNS、DHCP 下发 DNS,**全部强制指向
192.168.2.1**。 - 终端 IPv6 关闭:在电脑网卡属性里取消 IPv6 勾选,防止流量绕过代理。
- 时间同步:系统 -> 系统 -> NTP 客户端,填入
ntp.aliyun.com,时区选Asia/Shanghai。避免因时间错误导致 HTTPS 证书失效。
第七部分:终极网络架构图与验收
7.1 物理连接拓扑图
1 | ┌───────────────────┐ |
7.2 验收清单(最终检验)
- 主路由设备测试:连华为 Wi-Fi,访问百度秒开;CMD 中
ping www.google.com必定超时(完美直连);ipconfig确认获取到192.168.2.XIP。 - 副路由设备测试:连
Home-GlobalWi-Fi,获取192.168.4.XIP;浏览器无痕模式访问 YouTube 流畅播放;访问https://www.dnsleaktest.com/,检测出的 DNS 服务器均为 Google,归属地显示美国。 - 日志检查:OpenClash 内核日志中,
192.168.2.3的流量必须全部 matchGLOBAL,192.168.2.0/24的流量必须全部 matchDIRECT。
7.3 日常维护与终极建议
- 节点测速优化:在 Metacubexd 面板中,点击“闪电”图标对
GLOBAL组进行测速。手动点选延迟在150ms - 300ms的节点,以获得最佳 YouTube 观影体验(你之前选的美国鲨鱼2 - 06延迟 587ms,偏高)。 - 配置备份:系统 -> 备份/升级,生成
.tar.gz。OpenClash -> 配置管理,导出配置。 - 绝对禁忌:这套物理隔离架构已经达到理论最优化。日常除更换节点或更新订阅外,切勿再随意变动防火墙的
iptables规则或 DNS 劫持设置,任何多余的改动都可能破坏这脆弱的平衡。
本文档归档于 2026年10月7日。这套系统见证了数不清的报错、编译失败、节点解析失败与路由逻辑的推演。请妥善保存,享受这份双轨物理隔离网络带来的极致体验。