本文记录一套已实际部署的家庭策略网关方案: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 密码和代理认证信息均已移除。请遵守所在地法律、服务条款与网络管理要求。