NanoPi R2S + OpenWrt + OpenClash:低成本家庭策略网关完整教程

弘毅 2026-07-19 21:25 1


本文记录一套已实际部署的家庭策略网关方案: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 数据包如何走



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

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

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

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

  5. 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-chromecomputer-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 只从官方入口找最新稳定版



  1. 打开 OpenWrt Firmware Selector,搜索 FriendlyARM NanoPi R2S

  2. 设备必须显示 FriendlyARM NanoPi R2S

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

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

  5. 本次实装使用的是 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 写入



  1. 安装并打开 balenaEtcher 官方版。

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

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

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

  5. 安全弹出读卡器。不要在 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 第一次启动的安全顺序



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

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

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

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

  5. 用 root 登录并设置强密码。

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

  7. 电脑执行 ipconfig /releaseipconfig /renew,再访问 http://192.168.2.1

  8. 最后连接 光猫 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 网口灯不亮时



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

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

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

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

  5. 如果两个灯始终不亮,优先怀疑供电、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 控制流程



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

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

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

  4. 打开 MetaCubeXD/Zashboard 的 Proxies 页面。

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


4.5 LuCI/OpenClash 403 的实际修复


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



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

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

  3. 重启 uhttpd 或整机。

  4. 检查 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/partitionslosetup -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 内核



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

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

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

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


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


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


6.1 添加订阅



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

  2. OpenClash → 配置订阅 → 新建订阅。

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

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

  5. 选择该配置并启动 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.114119.29.29.29223.5.5.5

  • 加密 Nameserver:https://doh.pub/dns-queryhttps://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 才能联网,实际有两层原因:



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

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

  3. R2S 原代理节点访问 OpenAI 出现 TLS EOF,同时缺少 featureassets.orgprodregistryv2.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 接管。启用后至少完成以下验证:



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

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

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

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

  5. 指定代理服务与国内站点分别做 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 分区的正常表现;取消格式化并安全弹出

升级纪律



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

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

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

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

  5. 重新执行 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 密码和代理认证信息均已移除。请遵守所在地法律、服务条款与网络管理要求。

最新回复 (3)
  • 百无聊赖 07-19 21:33
    1

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



    6.6 Windows 本机 Clash 与 Codex 的冲突


  • IshareI 07-19 21:40
    2

    很好

    流程很详细

    操作指令很齐全

    佬有心

  • kobexi 07-19 22:33
    3

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

* 帖子来源Linux.do
返回