个人专属终极网络架构与 OpenWrt 编译运维知识库

这是一份为你深度定制的、站在资深网络运维工程师视角的万字级技术知识库文档。由于单次回复存在字符上限,本文将以最详尽、最专业、最具实操性的方式,拆解整个项目。你可以直接将此文档归档为 README.md,作为日后维护和灾备的终极指南。


个人专属终极网络架构、OpenWrt编译与OpenClash分流技术白皮书

📖 前言:项目背景与核心思想

本方案依托一台 Centerm N610 (Intel J1900, x86_64) 小主机,重新编译了一套专属的 OpenWrt/LEDE 固件,彻底摒弃了老旧、协议支持不全的 PassWall。通过在底层编译阶段解决依赖地狱,并在应用层通过 OpenClash 实现精准的源 IP 分流,最终达成“网络扁平化 + 双无线网关物理隔离”的终极网络架构。

设计指标:

  1. 国内设备(主路由下):流量纯直连,跑满物理宽带,无代理误判,0 DNS 污染。
  2. 海外设备(副路由下):流量强制走代理,防 DNS 泄漏,自动节点负载均衡。
  3. 网关隔离:两套 Wi-Fi(国内直连 SSID 与 Home-Global)物理隔离,互不干扰。

第一部分:宿主机环境与 Docker 编译环境搭建(Ubuntu 24.04)

1.1 宿主机系统准备与基础工具安装

编译 OpenWrt 极易受系统环境影响,因此我们推荐在 Ubuntu 24.04 LTS 环境下进行。

  • 依赖安装:
    1
    2
    3
    sudo 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 的安装与深度配置

容器化编译可以完美隔离宿主机环境,避免污染。

  1. 安装 Docker:
    1
    2
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    systemctl enable docker --now
  2. 配置镜像加速:编辑 /etc/docker/daemon.json,填入以下内容(使用国内镜像,防止拉取镜像超时):
    1
    2
    3
    4
    5
    6
    {
    "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
    ]
    }
    重启 Docker 服务:systemctl restart docker
  3. 创建编译工作目录:
    1
    mkdir -p /workspace && cd /workspace

1.3 启动 Docker 编译容器与关键环境变量

启动一个具备特权(--privileged)的 Ubuntu 容器,必须映射 TUN 设备以便后续网络测试:

1
2
3
4
5
6
7
8
9
docker run -itd --name openwrt_build \
--privileged \
--network host \
-v /workspace:/workspace \
-v /dev/net/tun:/dev/net/tun \
ubuntu:24.04 /bin/bash

# 进入容器
docker exec -it openwrt_build /bin/bash

容器内部环境变量与基础配置:

1
2
3
4
# 换源加速(阿里云 Ubuntu 源)
sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
apt update
apt install -y build-essential libncurses5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc wget unzip python3 time rsync file

第二部分:OpenWrt 源码拉取、Feeds 更新与第三方插件植入

2.1 拉取 LEDE 源码

我们选用 coolsnowwolf/lede(Lean 版),该版本集成度高,对国内网络编译环境友好。

1
2
3
cd /workspace
git clone https://github.com/coolsnowwolf/lede.git openwrt
cd openwrt

2.2 Feeds 更新与 Git 所有权问题修复

拉取 feeds 是编译的基础,但 Docker 内 root 用户常常会遇到 Git 安全报错。

1
2
3
4
5
6
# 修复 Git 检测到的不安全所有权问题
git config --global --add safe.directory '*'

# 更新并安装 feeds(默认拉取 packages, luci, routing, telephony, helloworld 等)
./scripts/feeds update -a
./scripts/feeds install -a

排错提示:如果 git clone 极慢,可以修改 /workspace/openwrt/feeds.conf.default,将 https://github.com/ 替换为 https://ghproxy.com/https://github.com/。

2.3 植入第三方核心插件(OpenClash 等)

Feeds 源中默认可能没有 OpenClash 的最新版。我们需要手动 clone 到 package/ 目录下。

1
2
3
4
5
6
7
cd /workspace/openwrt/package
# 拉取 OpenClash 源码
git clone https://github.com/vernesong/OpenClash.git luci-app-openclash

# (可选)拉取 PassWall 源码作为备用
git clone https://github.com/xiaorouji/openwrt-passwall.git passwall_luci
git clone https://github.com/xiaorouji/openwrt-passwall-packages.git passwall_packages

(⚠️ 注意:源码克隆后,确保 Makefile 位于 luci-app-openclash/ 的第一级目录,不要陷入多层嵌套中。)


第三部分:make menuconfig 深度配置指南(万字精华)

这是整个编译过程的心脏,每一个勾选都决定了固件的功能与稳定性。请执行 make menuconfig 逐一配置。

3.1 Target System & Target Images (底层架构)

  • Target System -> x86
  • Subtarget -> x86_64
  • Target Profile -> Generic
  • Target 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. 预下载源码包:
    1
    make download -j8 V=s
    排错:日志中如果出现 Download failed 或 Wrong hash,是 GitHub 连接不稳造成的。系统会自动回退到 git clone 拉取源码。如果卡死,删除 /workspace/openwrt/dl/ 下对应损坏的 .tar.gz 文件,重新执行 make download。
  2. 开始编译(J1900 是 4 核 CPU):
    1
    make -j4 V=s
    耗时:首次编译通常 1-3 小时。如果中间报错停止,仔细看终端最后 20 行红字。大部分是某个源码包下载失败,手动补入 dl/ 目录后重新 make -j4 V=s 即可断点续传。
  3. 产物提取:
    1
    2
    ls -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 刷机实操(网页直刷法,最安全)

  1. 备份旧系统:登录旧 LEDE,系统 -> 备份/升级,生成并下载 .tar.gz 备份文件。
  2. 物理连接:拔掉所有网线,只留电脑连小主机的 LAN 口。
  3. 网页刷机:电脑进入旧系统 192.168.2.1 -> 系统 -> 备份/升级 -> 刷写固件。
  4. 上传并刷机:上传解压后的 .img 文件,⚠️ 必须取消勾选“保留配置”。等待路由器自动重启(约 3-5 分钟)。

5.2 固件自带插件与图形化系统详解

刷机重启后,你拥有了一个无比纯净且功能强大的系统:

  1. **图形化界面 (LuCI)**:全中文的 Argon 主题,响应迅速。集成了系统状态、路由表、DHCP 租约等监控。
  2. **Network (网络底层)**:内置完整的 iptables 防火墙体系,包含 iptables-mod-tproxy,为 OpenClash 提供了最稳固的底层劫持支持。
  3. **OpenClash (核心代理)**:预装的最新版,拥有 TUN 模式支持。
  4. **PassWall (备用核心)**:虽然你不再使用,但编译进固件作为备用方案依然是一个好习惯。
  5. 系统工具:内置 bash、ruby 等所有必要环境,无需再手动 opkg install,彻底告别依赖缺失。
  6. 网络工具:包含 dnsmasq-full、curl、unzip 等。

5.3 网络初始化配置

  1. 修改 LAN 口:默认进入 192.168.1.1。网络 -> 接口 -> LAN -> 修改 IPv4 为 192.168.2.1,保存重启。
  2. 配置 WAN 口:插上光猫网线。协议选 DHCP 客户端(光猫是路由模式),获取 192.168.1.X。
  3. 开启 DHCP:确保 LAN 的 DHCP 处于启用状态。
  4. 物理连线恢复:光猫 -> 小主机 WAN;小主机 LAN -> 华为 AP;小主机 LAN -> Tenda WAN(静态 IP 192.168.2.3)。

第六部分:OpenClash 深度配置与双轨分流实战

6.1 内核更新与订阅拉取

  1. 进入 服务 -> OpenClash -> 运行状态,点击“检查更新”,下载最新的 Meta 内核(Mihomo)。
  2. 进入 配置订阅,填入你的机场 Clash 订阅码。
  3. 过滤节点(极其重要):在订阅编辑中,填入“筛选节点:US”,“排除节点:HK”。从源头过滤出纯美国节点,避免配置中生成空的 JP/HK 策略组导致 Parse config error。

6.2 核心分流规则:实现双轨物理隔离

  • 运行模式:TUN(混合)
  • 代理模式:规则 (Rule)(绝对不能选“直连”或“全局”)。
  • 自定义规则配置(覆写设置 -> 规则设置):
    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
    原理:Clash 从上往下匹配。192.168.2.3 命中第一条(代理);其余设备命中第二条(直连)。至此,完美实现主副路由的物理隔离。

6.3 DNS 防泄漏与网络优化

  1. DNS 劫持:在 OpenClash 的 DNS 设置里,确保 ChinaDNS-NG 开启,DNS 模式选 通过 TCP 请求 DNS,远程 DNS 填 1.1.1.1。强制拦截内网所有 53 端口请求。
  2. 副路由 DNS:登录 Tenda 后台,WAN 口首选/备用 DNS、DHCP 下发 DNS,**全部强制指向 192.168.2.1**。
  3. 终端 IPv6 关闭:在电脑网卡属性里取消 IPv6 勾选,防止流量绕过代理。
  4. 时间同步:系统 -> 系统 -> NTP 客户端,填入 ntp.aliyun.com,时区选 Asia/Shanghai。避免因时间错误导致 HTTPS 证书失效。

第七部分:终极网络架构图与验收

7.1 物理连接拓扑图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
                      ┌───────────────────┐
│ 光 猫 │
│ (路由模式) │
│ 192.168.1.1 │
└─────────┬─────────┘
│ (网线连接 WAN 口)
┌─────────▼─────────┐
│ 小主机 LEDE │ (开启 DHCP: 192.168.2.X)
│ (核心主路由) │ (运行 OpenClash: TUN模式)
│ 192.168.2.1 │ (WAN IP: 192.168.1.187)
└─────────┬─────────┘
│ (LAN 口单线接出)
┌───────────────────┴───────────────────┐
│ │
┌───────────▼───────────┐ ┌───────────▼───────────┐
│ 主路由 (华为AX3 Pro)│ │ 副路由 (Tenda) │
│ 模式:AP / 有线中继 │ │ 模式:二级路由 │
│ 管理IP: 192.168.3.1 │ │ 管理IP: 192.168.4.1 │
│ WAN IP: 192.168.2.2 │ │ WAN IP: 192.168.2.3 │
└───────────┬───────────┘ └───────────┬───────────┘
│ │
┌───────────▼───────────┐ ┌───────────▼───────────┐
│ 国内终端设备 │ │ 海外需求终端设备 │
│ (手机/电脑/家居) │ │ (工作/海外追剧) │
│ IP: 192.168.2.X │ │ IP: 192.168.4.X │
│ 网络策略:DIRECT │ │ 网络策略:GLOBAL │
└───────────────────────┘ └───────────────────────┘

7.2 验收清单(最终检验)

  1. 主路由设备测试:连华为 Wi-Fi,访问百度秒开;CMD 中 ping www.google.com 必定超时(完美直连);ipconfig 确认获取到 192.168.2.X IP。
  2. 副路由设备测试:连 Home-Global Wi-Fi,获取 192.168.4.X IP;浏览器无痕模式访问 YouTube 流畅播放;访问 https://www.dnsleaktest.com/,检测出的 DNS 服务器均为 Google,归属地显示美国。
  3. 日志检查:OpenClash 内核日志中,192.168.2.3 的流量必须全部 match GLOBAL,192.168.2.0/24 的流量必须全部 match DIRECT。

7.3 日常维护与终极建议

  • 节点测速优化:在 Metacubexd 面板中,点击“闪电”图标对 GLOBAL 组进行测速。手动点选延迟在 150ms - 300ms 的节点,以获得最佳 YouTube 观影体验(你之前选的 美国鲨鱼2 - 06 延迟 587ms,偏高)。
  • 配置备份:系统 -> 备份/升级,生成 .tar.gz。OpenClash -> 配置管理,导出配置。
  • 绝对禁忌:这套物理隔离架构已经达到理论最优化。日常除更换节点或更新订阅外,切勿再随意变动防火墙的 iptables 规则或 DNS 劫持设置,任何多余的改动都可能破坏这脆弱的平衡。

本文档归档于 2026年10月7日。这套系统见证了数不清的报错、编译失败、节点解析失败与路由逻辑的推演。请妥善保存,享受这份双轨物理隔离网络带来的极致体验。