• 弘毅

    本文记录一套已实际部署的家庭策略网关方案:NanoPi R2S 负责路由、DHCP、DNS、防火墙和 OpenClash,TP-Link 只作为无线 AP。目标是“国内默认直连,指定服务走主代理”。

    ^-^ 请仅将本文用于合法的家庭网络管理与技术学习。订阅地址、节点信息、路由器密码均不得公开。文中的内网地址仅为示例,操作前务必备份配置。

    实装环境:FriendlyElec NanoPi R2S|OpenWrt 25.12.3|OpenClash 0.47.133|Fake-IP TUN + Rule

    项目结果快照

    192.168.2.1R2S LAN 管理地址

    28.9 GB扩容后的 F2FS Overlay

    规则模式未指定流量默认直连

    TUN 开启透明接管 LAN IPv4 / IPv6 流量

    项目 |
    当前状态 |

    硬件 |
    FriendlyElec NanoPi R2S,RK3328 四核,1 GB RAM,双千兆网口 |

    系统 |
    OpenWrt 25.12.3 r32912-6639b15f62,rockchip/armv8,aarch64_generic,Linux 6.12.85 |

    LAN / WAN |
    LAN:192.168.2.1/24;WAN:DHCP,从光猫上游 192.168.1.0/24 获取地址 |

    存储 |
    32 GB 级 TF 卡;实际磁盘约 29.7 GB;Overlay 28.9 GB,文档生成时约 28.4 GB 可用 |

    OpenClash |
    0.47.133;Mihomo Meta arm64;Fake-IP TUN;Rule;自定义规则开启 |

    策略 |
    列出的境外服务走“主代理”;其余流量以 MATCH,国内直连 兜底 |

    “企业级”边界:这套方案使用企业网关常见的分层、统一 DHCP/DNS、透明代理和策略路由思路,但 R2S、单张 TF 卡和单电源不具备真正企业设备的双机热备、冗余电源与 SLA。适合家庭、工作室和实验环境。

    第一部分:R2S 连接与工作原理

    1.1 推荐拓扑

    光猫 / 上级路由

    192.168.1.1→

    R2S WAN

    DHCP→

    R2S LAN

    192.168.2.1→

    TP-Link LAN / AP

    Wi-Fi 与交换

    R2S 是真正的三层网关:负责路由、NAT、防火墙、DHCP、DNS 和 OpenClash。TP-Link TL-WDR5620 只作为无线 AP 和交换机,负责把手机、电脑接入同一个 LAN。

    1.2 数据包如何走

    - 手机或电脑从 R2S DHCP 获得 192.168.2.x 地址、网关 192.168.2.1、DNS 192.168.2.1。

    - 域名查询由 R2S 接收;OpenClash 的 Fake-IP/DNS 劫持帮助内核保留域名信息。

    - 流量进入 OpenClash TUN/防火墙链后,Mihomo 按规则从上到下匹配。

    - 指定的 ChatGPT、Claude、Google、Telegram 等服务进入“主代理”;未匹配流量命中 MATCH,国内直连。

    - R2S 再通过 WAN 把直连或代理后的流量送到光猫。

    1.3 为什么 TP-Link 要用 AP 模式

    推荐连接为 R2S LAN → TP-Link LAN,同时关闭 TP-Link DHCP,或直接切换到 AP/无线接入点模式。建议把 TP-Link 管理地址设为 192.168.2.2。

    不要在 LAN-LAN 连接时让两个设备同时提供 DHCP。否则客户端可能随机拿到错误网关,表现为偶尔能上网、偶尔断网、规则时灵时不灵。R2S LAN 接 TP-Link WAN 虽然也可能工作,但会形成双重 NAT,不推荐。

    1.4 本次地址规划

    设备/接口 |
    地址与用途 |

    光猫 |
    192.168.1.1,上游网络 |

    R2S WAN(eth0) |
    DHCP,本次曾获取 192.168.1.17 |

    R2S LAN(eth1 / br-lan) |
    192.168.2.1/24 |

    R2S DHCP |
    从 192.168.2.100 起,最多 150 个租约,租期 12 小时 |

    电脑实测 |
    192.168.2.206,网关与 DNS 均为 192.168.2.1 |

    TP-Link AP(建议) |
    192.168.2.2,DHCP 关闭 |

    第二部分:准备材料与最低配置

    2.1 硬件清单

    材料 |
    最低要求 |
    建议 |

    NanoPi R2S |
    确认不是 R2C/R4S/R5S |
    通过 ubus call system board 验证 model 与 board_name |

    TF / microSD 卡 |
    至少 8 GB |
    16 GB 起步,推荐 32 GB、Class 10 / A1、耐久型;本次使用约 32 GB |

    读卡器 |
    能稳定识别 TF 卡 |
    USB 3.0 品牌读卡器,避免接触不良 |

    电源 |
    USB-C,稳定 5V/2A |
    独立 5V/2A 或更高电流余量的优质电源 |

    网线 |
    至少两根 |
    Cat5e 以上:光猫→WAN、LAN→电脑/AP |

    电脑 |
    Windows 10/11,带有线网口 |
    可使用 USB 网卡;具备管理员权限 |

    无线 AP |
    可关闭 DHCP 的路由器 |
    本次 TP-Link TL-WDR5620,使用 LAN 口接入 |

    TF 卡容量说明:OpenWrt 镜像本身很小,但 OpenClash、Mihomo 内核、GeoSite/GeoIP、规则库、日志和升级空间会快速增长。8 GB 是实用下限,不是镜像写入的物理下限;32 GB 更从容。

    不要长期依赖电脑 USB 口供电。它可能能启动,但电压波动或电流不足会导致随机重启、TF 卡文件系统损坏、网口不亮或高负载掉线。

    2.2 软件与账号准备

    - 官方 OpenWrt Firmware Selector。

    - balenaEtcher(推荐)或 Rufus;7-Zip 可选。

    - Chrome 浏览器与 ChatGPT/Codex Chrome 扩展(如需让 Codex 控制现有 Chrome 标签页)。

    - Codex 的 chrome:control-chrome 与 computer-use:computer-use 插件。

    - SSH 客户端;本次 Codex 通过 Python Paramiko 执行可重复的 SSH 检查和修改。

    - 用户自己的 Clash 订阅链接。教程不提供节点,也不把真实订阅地址写入文档。

    2.3 开工前备份

    - 备份原路由器拨号方式、宽带账号、Wi-Fi 名称和密码。

    - 刷卡前用 Get-Disk 记下电脑硬盘和 TF 卡的磁盘编号/容量。

    - 每次修改 OpenClash 自定义规则前复制备份;本次均生成了带时间戳的 .bak-YYYYMMDD-HHMMSS 文件。

    - 不要把 root 密码、控制器密码、订阅 URL 放入教程、截图或公开仓库。

    第三部分:用读卡器向 TF 卡写入 OpenWrt

    3.1 只从官方入口找最新稳定版

    - 打开 OpenWrt Firmware Selector,搜索 FriendlyARM NanoPi R2S。

    - 设备必须显示 FriendlyARM NanoPi R2S。

    - Target 必须是 rockchip/armv8,设备 ID 必须是 friendlyarm_nanopi-r2s。

    - 选择标记为稳定版的最新 Release,不要为了“新”而选择每日变化的 SNAPSHOT。

    - 本次实装使用的是 25.12.3 的 R2S SquashFS 镜像;文档核对时官方稳定系列已经更新。以后应以 Firmware Selector 当前显示为准。

    不要永久收藏某个具体版本文件。应收藏 Firmware Selector 和 OpenWrt Releases 根目录。具体版本目录只作为核对和回退用途。

    3.2 选 SquashFS 还是 EXT4

    镜像 |
    特点 |
    适用 |

    friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz |
    只读系统 + 可写 Overlay,恢复和抗误操作更友好;本次实际使用 |
    推荐给家庭网关 |

    friendlyarm_nanopi-r2s-ext4-sysupgrade.img.gz |
    根文件系统为 EXT4,直接修改更传统 |
    熟悉 Linux 分区维护的用户 |

    OpenWrt 的 R2S 设备页明确说明,可将 ...sysupgrade.img.gz 解压后或由支持压缩镜像的工具直接写入 microSD。

    3.3 下载后验证 SHA256

    固件目录会同时给出 SHA256。Windows PowerShell:```
    Get-FileHash -Algorithm SHA256 .\openwrt-版本-rockchip-armv8-friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz
    ```输出必须与官方目录中该文件旁的 SHA256 完全一致。校验不一致时删除文件并重新下载,不能继续刷写。

    3.4 Windows 下识别 TF 卡```
    Get-Disk | Sort-Object Number | Format-Table Number,FriendlyName,BusType,Size,PartitionStyle
    Get-Volume | Format-Table DriveLetter,FileSystemLabel,FileSystem,Size
    ```破坏性操作前必须按容量核对目标。例如约 32 GB 的 USB/SD 设备才可能是 TF 卡;数百 GB 或数 TB 的 NVMe/SATA 磁盘绝不能选择。

    资源管理器里出现的“Linux / Ubuntu / docker-desktop”通常是 WSL 入口,不代表读卡器。TF 卡一般显示为“U 盘(E:)”或可移动磁盘。刷入 Linux 镜像后,Windows 可能只看到小分区,甚至提示“需要格式化”;应点击取消。

    3.5 使用 balenaEtcher 写入

    - 安装并打开 balenaEtcher 官方版。

    - Flash from file:选择下载的 .img.gz;Etcher 可直接处理压缩镜像。

    - Select target:按容量选择 TF 卡,禁止选择电脑硬盘。

    - 点击 Flash,等待写入和 Verify 完成。

    - 安全弹出读卡器。不要在 Windows 的格式化提示中点击“确定”。

    写镜像本身会重建分区表,因此刷机前通常不需要先把 TF 卡格式化成 FAT32。若 Etcher 报错,可先在“磁盘管理”里删除 TF 卡旧分区或使用 diskpart 清理,但必须再次核对磁盘编号。

    Linux/macOS 命令行写入(高级用户)```
    gzip -dc openwrt-版本-rockchip-armv8-friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz \
    | sudo dd of=/dev/sdX bs=4M conv=fsync status=progress
    sync
    ```/dev/sdX 必须替换为整张 TF 卡,而不是某个分区。写错会立即覆盖其他磁盘。

    第四部分:R2S 插线、首启与 Codex 调试

    4.1 第一次启动的安全顺序

    - 断电状态下把 TF 卡插入 R2S。

    - 先只连接 R2S LAN → 电脑。光猫如果也是 192.168.1.1,首次设置前不要急着接 WAN,避免同网段冲突。

    - 接入稳定 5V/2A USB-C 电源,等待约 1–3 分钟。

    - 电脑设为自动获取 IP;访问 http://192.168.1.1。

    - 用 root 登录并设置强密码。

    - 把 R2S LAN 改为 192.168.2.1/24,保存应用。

    - 电脑执行 ipconfig /release、ipconfig /renew,再访问 http://192.168.2.1。

    - 最后连接 光猫 LAN → R2S WAN,确认 WAN 通过 DHCP 获取 192.168.1.x。

    4.2 正确插线

    - 光猫侧网线接 R2S 的 WAN。

    - R2S 的 LAN 接电脑,或接 TP-Link 的 LAN。

    - TP-Link 切 AP 模式或关闭 DHCP;不要在 LAN-LAN 拓扑中让 TP-Link 发地址。

    4.3 网口灯不亮时

    - 确认电源稳定、TF 卡已插好、系统至少等待 2 分钟。

    - 交换 WAN/LAN 线进行物理排除,但不要永久接反。

    - 换一根已知正常的 Cat5e 网线和光猫/电脑网口。

    - 电脑执行 Get-NetAdapter 检查以太网是否为 Up。

    - 如果两个灯始终不亮,优先怀疑供电、TF 卡镜像、网线或接口损坏。

    4.4 Codex 使用 Computer Use 和 Chrome 的实际过程

    能力 |
    本次表现 |
    适合用途 |

    computer-use:computer-use |
    尝试控制浏览器时无法可靠确认本地路由器 URL,按安全规则停止,没有用它完成关键配置 |
    Windows 桌面应用、明确可识别窗口与控件 |

    chrome:control-chrome |
    开始因缺少 ChatGPT Chrome Extension 无法连接;安装扩展后成功控制 LuCI、MetaCubeXD 和 Zashboard |
    依赖现有 Chrome 标签页、登录态和扩展的网页操作 |

    SSH / Paramiko |
    完成分区检查、软件安装、UCI 修改、规则写入、服务重启与 API 验证 |
    可重复、可审计的路由器配置和批量诊断 |

    Chrome 控制流程

    - 安装 Codex 的 Chrome 控制插件和 ChatGPT Chrome Extension。

    - 用户先在 Chrome 打开 http://192.168.2.1 并完成登录。

    - Codex 连接现有标签页,进入 OpenClash 控制面板。

    - 打开 MetaCubeXD/Zashboard 的 Proxies 页面。

    - 在策略组搜索框输入“主代理”,查看或切换节点。

    4.5 LuCI/OpenClash 403 的实际修复

    本次访问 OpenClash 页面时,未登录页面返回 HTTP 403,Edge/Chromium 直接显示“拒绝访问”,没有展示 LuCI 登录表单。标准排查顺序应是:

    - 确认 URL 是纯地址:http://192.168.2.1/cgi-bin/luci/admin/services/openclash,不要把 Markdown 方括号带进地址栏。

    - 清除该站点 Cookie、使用无痕窗口、重新登录 root。

    - 重启 uhttpd 或整机。

    - 检查 LuCI/OpenClash 包版本是否匹配。

    本次特定版本最终把 /usr/share/ucode/luci/dispatcher.uc 中“未认证登录页”的 HTTP 状态从 403 改为 200,认证逻辑仍保留,从而让浏览器显示登录页。

    这不是通用安装步骤。它属于版本兼容性绕行,升级 LuCI 后可能自动恢复。操作前必须备份;如需恢复官方文件,可从只读 ROM 复制:```
    cp /rom/usr/share/ucode/luci/dispatcher.uc /usr/share/ucode/luci/dispatcher.uc
    /etc/init.d/uhttpd restart
    ```第五部分:扩展 TF 卡分区并安装 OpenClash

    5.1 为什么需要扩容

    OpenWrt 镜像默认只使用 TF 卡前部的小分区。若不扩容,OpenClash 的 10 MB 级内核、25 MB 级 LuCI 包、GeoSite/GeoIP、订阅、规则和日志很快会耗尽 Overlay。

    5.2 本机扩容后的实际结构

    项目 |
    当前值 |

    整卡 |
    /dev/mmcblk0,约 29655 MiB |

    启动分区 |
    /dev/mmcblk0p1,16 MiB,ext2,boot |

    系统/数据分区 |
    /dev/mmcblk0p2,从 64 MiB 延伸至卡尾 |

    只读系统 |
    /dev/root → /rom,SquashFS,3.8 MB |

    可写层 |
    /dev/loop0 → /overlay,F2FS,28.9 GB |

    Loop 映射 |
    /dev/loop0 映射到 mmcblk0p2 内部,offset 3801088 |

    5.3 F2FS Overlay 的扩容流程

    下面命令只对应本次 R2S 的分区结构。执行前必须用 parted print free、/proc/partitions 和 losetup -a 确认你的设备名、分区号和文件系统。不要照抄到其他设备。```

    OpenWrt 25.12 使用 apk;先安装工具

    apk update
    apk add parted losetup f2fs-tools blkid

    只读确认:整卡、空闲空间、分区号

    cat /proc/partitions
    parted -s /dev/mmcblk0 unit MiB print free
    losetup -a
    df -hT

    本次根数据分区是第 2 分区,将它扩到卡尾

    parted -f -s /dev/mmcblk0 resizepart 2 100%
    reboot

    重启后再次确认 loop 设备;本次是 /dev/loop0

    losetup -a
    command -v resize.f2fs
    resize.f2fs /dev/loop0
    reboot

    验收

    df -hT
    parted -s /dev/mmcblk0 unit MiB print free
    ``验收目标是 /overlay 与 /` 显示接近整张卡的可用容量。本次结果为 28.9 GB,总占用约 503 MB。

    OpenWrt 也提供官方“Expanding root partition and filesystem”脚本,但其说明偏向 x86/EXT4/SquashFS 通用场景。R2S 当前 Overlay 是 F2FS,因此必须根据实际文件系统选择 resize.f2fs,不能盲目运行 resize2fs。

    5.4 安装 OpenClash 依赖与 LuCI 包

    本机是 OpenWrt 25.12 + nftables + apk。按照 OpenClash 官方 Release 给出的 nftables/apk 依赖:```
    apk update
    apk add bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml \
    kmod-tun kmod-inet-diag unzip kmod-nft-tproxy \
    luci-compat luci luci-base

    从 GitHub API 获取官方最新 Release,不硬编码版本号

    curl -L --retry 2 \
    https://api.github.com/repos/vernesong/OpenClash/releases/latest \
    -o /tmp/openclash_version

    download_url=$(jsonfilter -i /tmp/openclash_version \
    -e '@.assets[*].browser_download_url' | grep '\.apk$' | head -n 1)

    curl -L --retry 2 "$download_url" -o /tmp/openclash.apk
    apk add -q --force-overwrite --clean-protected --allow-untrusted \
    /tmp/openclash.apk
    ``安装完成后,LuCI 菜单会出现“服务 → OpenClash”。本次安装版本为 luci-app-openclash 0.47.133`,安装占用约 25 MiB。

    5.5 安装 Mihomo Meta 内核

    - 进入 OpenClash“插件设置 → 版本更新”。

    - 核心类型选择 Meta;架构选择 linux-arm64。

    - 使用 OpenClash 内置下载,或从 Mihomo 官方 Release 下载 arm64 版本。

    - 文件放在 /etc/openclash/core/clash_meta,并执行 chmod +x。

    当前 /etc/openclash/clash 是指向 /etc/openclash/core/clash_meta 的符号链接;内核支持 gVisor,运行正常。

    第六部分:配置 OpenClash 与当前完整策略

    6.1 添加订阅

    - 用户向自己的服务商获取 Clash/Mihomo 兼容订阅链接。

    - OpenClash → 配置订阅 → 新建订阅。

    - 填写别名,例如 my-subscription;粘贴链接;不要公开截图或提交到 Git。

    - 更新配置,确认生成 YAML,运行“配置文件测试”。

    - 选择该配置并启动 OpenClash。```

    文档只写占位符,绝不能写真实链接

    订阅地址:https://example.com/your-private-subscription?clash=1
    ```6.2 当前 OpenClash 设置快照

    设置 |
    当前值 |
    说明 |

    服务 |
    启用,运行中 |
    /etc/init.d/openclash status 返回 running |

    运行模式 |
    fake-ip-tun |
    Fake-IP + TUN |

    代理模式 |
    rule |
    按规则决定主代理或直连 |

    TUN |
    启用;System stack;设备 utun |
    地址 198.18.0.1/30;DNS hijack 127.0.0.1:53 |

    自定义规则 |
    启用 |
    /etc/openclash/custom/openclash_custom_rules.list |

    DNS 重定向 |
    启用 |
    端口 7874;dnsmasq 缓存 1000 |

    IPv6 代理 / IPv6 DNS |
    开启 / 开启 |
    由 OpenClash/Mihomo 统一接管;仍需结合宽带 IPv6 实测 |

    UDP 代理 |
    启用 |
    当前主代理节点支持 UDP |

    非国内 QUIC |
    禁用/拒绝 |
    迫使部分 UDP/443 回落到 TCP,减少分流异常 |

    路由器本机代理 |
    启用 |
    R2S 自身请求也可匹配规则 |

    LAN 访问 |
    允许 |
    管理面板与代理入口仅应留在可信 LAN |

    Meta 核心 |
    linux-arm64 |
    当前为 Mihomo Meta Alpha,gVisor build |

    Dashboard |
    MetaCubeXD |
    另可打开 Zashboard |

    端口 |
    HTTP 7890;SOCKS 7891;redir 7892;mixed 7893;TProxy 7895;API 9090 |
    混合代理启用了认证,凭据不写入本文 |

    自动更新 |
    关闭 |
    升级前手工备份和验证,降低意外中断 |

    当前 DNS

    - 默认/国内:114.114.114.114、119.29.29.29、223.5.5.5。

    - 加密 Nameserver:https://doh.pub/dns-query、https://dns.alidns.com/dns-query。

    - Fallback:Google DoH、Cloudflare DoH。

    - OpenClash IPv6 DNS 已开启;需要同时验证 AAAA 解析、IPv6 出口和规则命中。

    6.3 当前策略组

    策略组 |
    当前选择 |
    状态 |

    主代理 |
    [已隐藏的可用节点] |
    alive;OpenAI API 实测返回 401,说明 TLS/线路正常 |

    国内直连 |
    DIRECT |
    alive |

    GLOBAL |
    DIRECT |
    当前使用 Rule,因此 GLOBAL 不决定日常出口 |

    节点选择经验:节点显示“新加坡/日本/美国”不代表一定能访问 OpenAI。本次曾遇到 V4 新加坡节点和一个日本节点 TLS EOF;通过 api.openai.com/v1/models 返回 401 才确认节点可用。节点变化后应重新测试。

    6.4 白名单代理逻辑

    自定义规则位于订阅规则之前。所有指定服务先走“主代理”,然后以:```
    - MATCH,国内直连
    ``截住其他流量。因此订阅配置末尾原有的 MATCH,主代理` 虽仍存在,但已经不会处理未指定流量。订阅更新不会覆盖自定义规则文件。

    6.5 当前已配置的服务分类

    分类 |
    覆盖 |

    技术与 AI |
    Linux.do、ChatGPT/OpenAI、Claude/Anthropic、Grok/xAI、GitHub/GitHub Copilot、leiting.app |

    视频与社交 |
    YouTube、TikTok、Telegram、WhatsApp、Discord、X/Twitter |

    Google 全系 |
    Google、Gmail、Google Play、Android、Firebase、Drive、Photos、静态/CDN、登录及 API |

    Microsoft 邮件 |
    Outlook、Hotmail、Live、Office 365、Microsoft 登录、Graph API |

    金融 |
    Binance/币安主站、API、静态资源与 GeoSite 分类 |

    依赖服务 |
    Cloudflare Challenge、Intercom、Stripe、Datadog、Sentry、reCAPTCHA 等 |

    展开:当前完整自定义规则(已移除所有敏感信息)```
    rules:
    - DOMAIN-SUFFIX,linux.do,主代理
    - DOMAIN-SUFFIX,chatgpt.com,主代理
    - DOMAIN-SUFFIX,openai.com,主代理
    - DOMAIN-SUFFIX,oaistatic.com,主代理
    - DOMAIN-SUFFIX,oaiusercontent.com,主代理
    - DOMAIN-SUFFIX,openaiapi-site.azureedge.net,主代理
    - DOMAIN-SUFFIX,claude.ai,主代理
    - DOMAIN-SUFFIX,anthropic.com,主代理
    - DOMAIN-SUFFIX,grok.com,主代理
    - DOMAIN-SUFFIX,x.ai,主代理
    - DOMAIN-SUFFIX,xai.com,主代理
    - DOMAIN-SUFFIX,leiting.app,主代理
    - DOMAIN-SUFFIX,github.com,主代理
    - DOMAIN-SUFFIX,github.io,主代理
    - DOMAIN-SUFFIX,githubassets.com,主代理
    - DOMAIN-SUFFIX,githubusercontent.com,主代理
    - DOMAIN-SUFFIX,githubcopilot.com,主代理
    - DOMAIN-SUFFIX,ghcr.io,主代理
    - DOMAIN-SUFFIX,youtube.com,主代理
    - DOMAIN-SUFFIX,youtu.be,主代理
    - DOMAIN-SUFFIX,youtube-nocookie.com,主代理
    - DOMAIN-SUFFIX,googlevideo.com,主代理
    - DOMAIN-SUFFIX,ytimg.com,主代理
    - DOMAIN,youtubei.googleapis.com,主代理
    - DOMAIN,youtube.googleapis.com,主代理
    - DOMAIN-SUFFIX,tiktok.com,主代理
    - DOMAIN-SUFFIX,tiktokv.com,主代理
    - DOMAIN-SUFFIX,tiktokcdn.com,主代理
    - DOMAIN-SUFFIX,tiktokcdn-us.com,主代理
    - DOMAIN-SUFFIX,byteoversea.com,主代理
    - DOMAIN-SUFFIX,ibytedtos.com,主代理
    - DOMAIN-SUFFIX,ibyteimg.com,主代理
    - DOMAIN-SUFFIX,muscdn.com,主代理
    - DOMAIN-SUFFIX,musical.ly,主代理
    - DOMAIN-SUFFIX,telegram.org,主代理
    - DOMAIN-SUFFIX,telegram.me,主代理
    - DOMAIN-SUFFIX,t.me,主代理
    - DOMAIN-SUFFIX,telesco.pe,主代理
    - DOMAIN-SUFFIX,telegra.ph,主代理
    - DOMAIN-SUFFIX,telegram-cdn.org,主代理
    - IP-CIDR,91.108.4.0/22,主代理,no-resolve
    - IP-CIDR,91.108.8.0/22,主代理,no-resolve
    - IP-CIDR,91.108.12.0/22,主代理,no-resolve
    - IP-CIDR,91.108.16.0/22,主代理,no-resolve
    - IP-CIDR,91.108.20.0/22,主代理,no-resolve
    - IP-CIDR,91.108.56.0/22,主代理,no-resolve
    - IP-CIDR,91.108.64.0/22,主代理,no-resolve
    - IP-CIDR,149.154.160.0/20,主代理,no-resolve
    - DOMAIN-SUFFIX,featureassets.org,主代理
    - DOMAIN-SUFFIX,prodregistryv2.org,主代理
    - DOMAIN-SUFFIX,challenges.cloudflare.com,主代理
    - DOMAIN,stun.cloudflare.com,主代理
    - DOMAIN-SUFFIX,intercom.io,主代理
    - DOMAIN-SUFFIX,intercomcdn.com,主代理
    - DOMAIN-SUFFIX,stripe.com,主代理
    - DOMAIN-SUFFIX,stripe.network,主代理
    - DOMAIN-SUFFIX,datadoghq.com,主代理
    - DOMAIN-SUFFIX,sentry.io,主代理
    - DOMAIN-SUFFIX,googletagmanager.com,主代理
    - DOMAIN-SUFFIX,recaptcha.net,主代理
    - DOMAIN-SUFFIX,gmail.com,主代理
    - DOMAIN-SUFFIX,googlemail.com,主代理
    - DOMAIN-SUFFIX,google.com,主代理
    - DOMAIN-SUFFIX,googleapis.com,主代理
    - DOMAIN-SUFFIX,gstatic.com,主代理
    - DOMAIN-SUFFIX,googleusercontent.com,主代理
    - DOMAIN-SUFFIX,ggpht.com,主代理
    - DOMAIN-SUFFIX,outlook.com,主代理
    - DOMAIN-SUFFIX,hotmail.com,主代理
    - DOMAIN-SUFFIX,live.com,主代理
    - DOMAIN-SUFFIX,office.com,主代理
    - DOMAIN-SUFFIX,office365.com,主代理
    - DOMAIN-SUFFIX,office.net,主代理
    - DOMAIN-SUFFIX,microsoftonline.com,主代理
    - DOMAIN-SUFFIX,microsoftonline-p.com,主代理
    - DOMAIN-SUFFIX,msauth.net,主代理
    - DOMAIN-SUFFIX,msftauth.net,主代理
    - DOMAIN,graph.microsoft.com,主代理
    - GEOSITE,google,主代理
    - DOMAIN-SUFFIX,googleplay.com,主代理
    - DOMAIN-SUFFIX,android.com,主代理
    - DOMAIN-SUFFIX,gvt1.com,主代理
    - DOMAIN-SUFFIX,gvt2.com,主代理
    - DOMAIN-SUFFIX,gvt3.com,主代理
    - DOMAIN-SUFFIX,googleapis.cn,主代理
    - DOMAIN-SUFFIX,googleusercontent.cn,主代理
    - DOMAIN-SUFFIX,xn--ngstr-lra8j.com,主代理
    - DOMAIN-SUFFIX,firebaseio.com,主代理
    - DOMAIN-SUFFIX,firebaseapp.com,主代理
    - DOMAIN-SUFFIX,firebase.com,主代理
    - DOMAIN-SUFFIX,appspot.com,主代理
    - DOMAIN-SUFFIX,1e100.net,主代理
    - DOMAIN-SUFFIX,googlesyndication.com,主代理
    - DOMAIN-SUFFIX,doubleclick.net,主代理
    - DOMAIN-SUFFIX,googleadservices.com,主代理
    - DOMAIN-SUFFIX,googleanalytics.com,主代理
    - DOMAIN-SUFFIX,google-analytics.com,主代理
    - DOMAIN-SUFFIX,googletagservices.com,主代理
    - DOMAIN-SUFFIX,gmodules.com,主代理
    - DOMAIN-SUFFIX,withgoogle.com,主代理
    - DOMAIN-SUFFIX,googleblog.com,主代理
    - DOMAIN-SUFFIX,blogspot.com,主代理
    - DOMAIN-SUFFIX,blogger.com,主代理
    - DOMAIN-SUFFIX,chromium.org,主代理
    - DOMAIN-SUFFIX,googlezip.net,主代理
    - DOMAIN-SUFFIX,googledrive.com,主代理
    - DOMAIN-SUFFIX,googlephotos.com,主代理
    - GEOSITE,binance,主代理
    - DOMAIN-SUFFIX,binance.com,主代理
    - DOMAIN-SUFFIX,binance.info,主代理
    - DOMAIN-SUFFIX,binance.org,主代理
    - DOMAIN-SUFFIX,binance.me,主代理
    - DOMAIN-SUFFIX,binance.us,主代理
    - DOMAIN-SUFFIX,binance.cloud,主代理
    - DOMAIN-SUFFIX,binance.vision,主代理
    - DOMAIN-SUFFIX,binanceapi.com,主代理
    - DOMAIN-SUFFIX,bnbstatic.com,主代理
    - GEOSITE,whatsapp,主代理
    - DOMAIN-SUFFIX,whatsapp.com,主代理
    - DOMAIN-SUFFIX,whatsapp.net,主代理
    - DOMAIN-SUFFIX,wa.me,主代理
    - DOMAIN-SUFFIX,fbcdn.net,主代理
    - GEOSITE,discord,主代理
    - DOMAIN-SUFFIX,discord.com,主代理
    - DOMAIN-SUFFIX,discord.gg,主代理
    - DOMAIN-SUFFIX,discordapp.com,主代理
    - DOMAIN-SUFFIX,discordapp.net,主代理
    - DOMAIN-SUFFIX,discord.media,主代理
    - DOMAIN-SUFFIX,discordcdn.com,主代理
    - DOMAIN-SUFFIX,discord.dev,主代理
    - DOMAIN-SUFFIX,dis.gd,主代理
    - GEOSITE,twitter,主代理
    - DOMAIN-SUFFIX,x.com,主代理
    - DOMAIN-SUFFIX,twitter.com,主代理
    - DOMAIN-SUFFIX,t.co,主代理
    - DOMAIN-SUFFIX,twimg.com,主代理
    - DOMAIN-SUFFIX,twitteroauth.com,主代理
    - DOMAIN-SUFFIX,tweetdeck.com,主代理
    - DOMAIN-SUFFIX,periscope.tv,主代理
    - DOMAIN-SUFFIX,pscp.tv,主代理
    - DOMAIN-SUFFIX,ads-twitter.com,主代理
    - MATCH,国内直连
    ```6.6 Windows 本机 Clash 与 Codex 的冲突

    本次 Codex APP 一度必须开启电脑本机 Mihomo 才能联网,实际有两层原因:

    - Windows 系统代理仍指向 127.0.0.1:7897。关闭 Mihomo 后端口消失,Codex 仍连接这个本地端口,因此断线。必须关闭 Windows“使用代理服务器”。

    - 本机 Mihomo TUN 创建默认路由 198.18.0.2,优先级高于以太网的 192.168.2.1。测试 R2S 时必须退出本机 TUN。

    - R2S 原代理节点访问 OpenAI 出现 TLS EOF,同时缺少 featureassets.org 与 prodregistryv2.org。补规则并选择可用节点后,OpenAI API 返回 401。

    检查命令:```

    Windows 系统代理

    Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' |
    Select-Object ProxyEnable,ProxyServer

    默认路由:测试 R2S 时不应由 Mihomo 198.18.0.2 优先

    Get-NetRoute -AddressFamily IPv4 -DestinationPrefix '0.0.0.0/0' |
    Sort-Object RouteMetric,InterfaceMetric

    查找本机 Clash/Mihomo

    Get-Process | Where-Object { $_.ProcessName -match 'mihomo|clash|verge' }
    ```6.7 IPv6 接管与验证

    当前已开启 OpenClash IPv6 代理和 IPv6 DNS 接管。启用后至少完成以下验证:

    - 客户端能取得 IPv6 地址与默认路由;

    - nslookup -type=AAAA google.com 192.168.2.1 能返回 AAAA;

    - curl -6 https://api64.ipify.org 能正常返回出口地址;

    - 查看 OpenClash 连接/日志,确认目标 IPv6 流量命中“主代理”,而非绕过;

    - 指定代理服务与国内站点分别做 IPv4/IPv6 对照测试。

    如果宽带本身没有 IPv6,开启接管不会凭空获得 IPv6;如果不需要 IPv6,关闭 WAN6、LAN DHCPv6/RA 是更简单的防绕过方案。

    故障排查与最终验收

    验收清单

    - 电脑 IP 为 192.168.2.x,默认网关和 DNS 都是 192.168.2.1。

    - R2S WAN 获得 192.168.1.x,能访问上游网关。

    - TP-Link DHCP 已关闭,手机连接 Wi-Fi 后也获得 192.168.2.x。

    - /etc/init.d/openclash status 返回 running。

    - 运行态 mode=rule,TUN enable=true,自定义规则启用。

    - “国内直连”选择 DIRECT;“主代理”选择 alive 且实测支持目标服务的节点。

    - 访问百度等未指定站点走直连;访问 OpenAI、Google、Telegram 等匹配主代理。

    - 电脑本机没有遗留系统代理或本地 TUN 干扰。

    常用诊断```

    R2S

    ubus call system board
    ip -4 addr
    ip -4 route
    df -hT
    /etc/init.d/openclash status
    ps w | grep -E '[c]lash|[m]ihomo'

    无 API Key 访问 OpenAI,401 代表网络和 TLS 正常

    curl -4 -m 20 -sS -o /dev/null -w '%{http_code}\n' \
    https://api.openai.com/v1/models

    Windows

    ipconfig /all
    Get-NetIPConfiguration
    Get-NetRoute -AddressFamily IPv4 -DestinationPrefix '0.0.0.0/0'
    ```现象 |
    优先检查 |

    手机连 Wi-Fi 但规则无效 |
    手机 IP/网关;TP-Link DHCP 是否关闭;是否接成 LAN-LAN |

    Codex 关本机 Clash 就断线 |
    Windows 系统代理 127.0.0.1:7897;本机 TUN 默认路由;OpenAI 节点 TLS |

    OpenAI curl 为 000 / SSL EOF |
    更换主代理节点;节点 alive 不等于目标服务可用 |

    LuCI 403 |
    正确 URL、Cookie、登录态、uhttpd、LuCI 版本;最后才考虑兼容补丁 |

    OpenClash 页面能开但服务不起 |
    配置测试、Meta arm64 内核、依赖、剩余空间、日志 |

    刷完 Windows 提示格式化 |
    这是 Linux 分区的正常表现;取消格式化并安全弹出 |

    升级纪律

    - 先备份 OpenWrt 配置、OpenClash 设置、订阅别名和自定义规则。

    - 从 Firmware Selector 获取稳定版,确认设备 ID、Target、镜像类型和 SHA256。

    - 大版本升级不要盲目保留全部软件包;OpenWrt 25.12 使用 apk,旧教程的 opkg 命令不能混用。

    - 升级后检查 Overlay 容量、OpenClash 内核架构、规则顺序、策略组选中节点和 IPv6。

    - 重新执行 OpenAI 401、Google 204、常用站点 200 等连通性测试。

    官方参考网址

    - OpenWrt Firmware Selector(进入后搜索 FriendlyARM NanoPi R2S):https://firmware-selector.openwrt.org/

    - OpenWrt R2S 设备页:https://openwrt.org/toh/friendlyarm/nanopi_r2s

    - OpenWrt R2S Techdata:https://openwrt.org/toh/hwdata/friendlyarm/friendlyarm_nanopi_r2s

    - OpenWrt Releases 根目录:https://downloads.openwrt.org/releases/

    - OpenWrt rockchip/armv8 目录示例(版本会过期):https://downloads.openwrt.org/releases/25.12.5/targets/rockchip/armv8/

    - OpenWrt Release Builds:https://openwrt.org/releases/start

    - OpenWrt 扩展根分区与文件系统:https://openwrt.org/docs/guide-user/advanced/expand_root

    - FriendlyElec NanoPi R2S 官方 Wiki:https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R2S

    - balenaEtcher:https://etcher.balena.io/

    - Rufus:https://rufus.ie/

    - OpenClash 官方仓库:https://github.com/vernesong/OpenClash

    - OpenClash 官方 Releases:https://github.com/vernesong/OpenClash/releases

    - OpenClash 安装 Wiki:https://github.com/vernesong/OpenClash/wiki/安装

    - Mihomo 官方 Releases:https://github.com/MetaCubeX/mihomo/releases

    来源核对原则:硬件参数看 FriendlyElec/OpenWrt;固件看 Firmware Selector 与 downloads.openwrt.org;OpenClash 与 Mihomo 只看各自 GitHub 官方仓库。拒绝不明网盘、二次打包固件和无法校验 SHA256 的镜像。

    本文依据一次真实 NanoPi R2S 部署记录整理。订阅地址、root 密码、Dashboard 密码和代理认证信息均已移除。请遵守所在地法律、服务条款与网络管理要求。

    主楼
  • 百无聊赖

    我是用R2S做旁路由的,随便折腾也不会影响家庭网络,然后Codex这个真是个坑,估计有很多人会遇到这个问题,感谢分享!

    6.6 Windows 本机 Clash 与 Codex 的冲突

    #1
  • IshareI

    很好

    流程很详细

    操作指令很齐全

    佬有心

    #2
  • kobexi

    感谢佬的保姆级教程,正好需要。 ^-^

    #3

发表回复

登录后回复