第一阶段:网络环境初始化
刷机后的 R2S 是“白纸”一张,无法下载插件。我们需要利用电脑作为“奶妈”提供初始流量。
1. 利用 Clash Verge 局域网共享(详细步骤)
如果你电脑上有 Clash Verge 且有节点,可以让 R2S “借道”翻墙。
- 电脑端设置:
- 打开 Clash Verge,进入 设置 (Settings) -> 系统设置。
- 找到 允许局域网 (Allow LAN) 开关,将其打开。
- 记录下电脑的 局域网 IP 地址(例如
192.168.10.10)和 混合端口 (Mixed Port)(通常是7890或7897)。 - 注意:如果连接失败,请暂时关闭 Windows 防火墙或允许 Clash 通过防火墙。
- R2S 端设置 (HomeProxy):
- 安装并进入 HomeProxy。
- 添加一个节点,类型选 手动 (Manual)。
- 地址 (Address):填写你电脑的 IP(如
192.168.10.10)。 - 端口 (Port):填写 Clash 的端口(如
7897)。 - 保存并启用,此时 R2S 即可正常下载后续插件。
2. Nikki安装与配置
- 核心步骤:HomeProxy 稳定后安装 Nikki 并导入配置文件。
- 【避坑重点】:配置文件中 UI 控制面板相关的几行代码严禁注释,否则初次使用无法打开UI面板!
- 配置文件 删除
QUIC模块: ports: [443, 8443],原因,保留这个模块后,国内淘宝APP卡顿。 - 保持状态:全程保持翻墙状态,否则 UI 面板数据无法下载,会导致插件空壳运行。
第二阶段:安装Docker 防坑与硬盘锁
R2S 系统闪存极其有限,必须通过“物理手段”防止系统盘爆满。
1. 磁盘分区与逻辑
- 软件包常规安装 DiskMan
- 使用 DiskMan 进行分区:
- Docker 分区:划分 10GB 空间。
- 剩余存储区:剩余空间格式化为 ext4,并挂载为 /mnt/tf-disk
2. 【核心】chattr +i 系统盘防爆锁
必须在挂载硬盘前,于 SSH 执行:
Bash
# 1. 创建入口文件夹
mkdir -p /opt/docker
# 2. 安装锁定工具
opkg update && opkg install chattr
# 3. 锁定系统盘坑位(防止数据“掉入”系统闪存)
chattr +i /opt/docker
3. 精准挂载与 Docker 安装
- 路径:系统 -> 挂载点 -> 添加。
- 设置:将 10GB 分区 挂载到
/opt/docker。 - 自动挂载策略:
- 自动挂载未配置分区:取消勾选 (OFF)(防止路径偏移)。
- 自动挂载已配置分区:保持勾选 (ON)(确保重启后硬盘自动就位)。
4.在 SSH 终端中重启路由器:
Bash
reboot
验证锁定与挂载: 重启回来后,请务必执行以下命令验证你的 10G 硬盘 是否已经成功“盖住”了那个锁死的坑位:
Bash
df -h | grep /opt/docker
- 预期结果:你应该能看到类似
/dev/sda1(你的分区名)挂载在/opt/docker下,且容量显示为 10G。 - 如果看到了 10G:恭喜,你可以立即执行
opkg install luci-app-dockerman开始安装 Docker 了!
5.安装 Docker:
重启路由器后,在 SSH 执行:
# 更新并安装 Docker 管理插件及中文语言包
opkg update
opkg install luci-app-dockerman
opkg install luci-i18n-dockerman-zh-cn
- 由于
/opt/docker被锁且已被 10G 硬盘覆盖,镜像将直接进入硬盘。
6.核心避坑:解决 Docker 端口打不开的问题
问题描述:
你安装了 Docker 插件(如 Jellyfin 8096 或 Navidrome 4533),且在 Docker 管理界面看到端口映射 0.0.0.0:xxxx 已经生效,但使用浏览器访问 路由器IP:端口 却提示“连接超时”或“无法访问”。
原因分析:
ImmortalWrt 默认的防火墙规则出于安全考虑,将**“默认转发(Forward)”**设置为了“拒绝(Reject)”。由于 Docker 容器运行在虚拟网桥(docker0)上,访问容器属于跨区域流量,会被防火墙直接拦截。
解决方案:
- 登录 Web 管理后台。
- 进入 网络 -> 防火墙 -> 常规设置。
- 找到 “默认转发” 选项,将其从 “拒绝” 修改为 “接受 (Accept)”。
- 点击底部的 “保存并应用”。
第三阶段:安装文件分享Samba
针对 Win11 访问需要用户名密码的情况,手动创建 xxx 用户。
1.软件包常规安装Samba
2. SSH 创建用户
Bash
# 1. 安装工具
opkg update && opkg install shadow-useradd
# 2. 创建用户(不创建家目录,禁止 shell 登录)
useradd -M -s /bin/false sirenyan
# 3. 设置 Samba 密码(输入 sirenyan)
smbpasswd -a sirenyan
3.创建剩余磁盘空间
在磁盘管理中,把当前系统存储卡的剩余空间创建并格式化为ext4
并在挂载点中创建一个挂载点:/mnt/tf-disk
4. 网页端配置 (Samba)
进入:服务 -> 网络共享 (Samba) -> 共享目录 (针对 tf-disk)。
- 允许用户 (Allowed users):填入
sirenyan。 - 允许访客:可以取消勾选或保留。
- 强制 Root:取消勾选(使用 sirenyan权限)。
4. 权限修正
若无权限读写,勾选强制 Root即可,但不推荐,推荐以下方案,执行:
Bash
# 将文件夹及其内部所有文件的“所有者”改为 sirenyan
chown -R sirenyan:sirenyan /mnt/tf-disk
chmod -R 755 /mnt/tf-disk
第四阶段:安装iStore 和首页
1. iStoreOS 商店核心安装方案
在原生 ImmortalWrt 终端中执行以下脚本。该方案利用 /tmp 内存目录作为中转,安全且高效。
Bash
opkg update || exit 1
cd /tmp
wget https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run
chmod 755 istore-reinstall.run && ./istore-reinstall.run
关键点解析:
opkg update || exit 1:这是脚本的“保险开关”。opkg update负责更新软件列表,如果更新失败(例如网络不通),exit 1会立即停止后续操作,防止在错误的环境下继续安装。/tmp目录:在内存中运行安装包,保护路由器的闪存(Flash)寿命。
2.安装网络向导与首页 (ARM64 & x86-64 通用)
安装完商店核心后,为了获得更好的交互体验和类似 iStoreOS 的首页外观,需要手动安装中文语言包和快速启动插件:
执行指令:
is-opkg install luci-i18n-quickstart-zh-cn
作用说明:
is-opkg:这是 iStore 专用的包管理命令。- 首页功能:安装后,你的路由器后台会多出一个“首页”菜单,提供直观的设备状态监控、网络状态展示以及应用快捷入口。
第五部分:安装Tailscale
1. 准备工作
访问 asvow/luci-app-tailscale 下载以下适用于 R2S 的特定版本文件:
- 主程序:
luci-app-tailscale_1.2.6_all.ipk - 简体中文包:
luci-i18n-tailscale-zh-cn_250509.33792_all.ipk
2. 安装核心依赖
首先,我们需要安装 Tailscale 程序本身和 SSL 证书支持。
opkg update
opkg install tailscale ca-bundle
3. 上传并覆盖安装插件
将下载好的两个 .ipk 文件通过 WinSCP 上传到路由器的 /tmp 目录。
注意:由于该插件会替换系统原有的启动脚本,必须使用
--force-overwrite参数,否则会提示文件冲突。
cd /tmp
opkg install --force-overwrite luci-app-tailscale_1.2.6_all.ipk luci-i18n-tailscale-zh-cn_250509.33792_all.ipk
4. 清理缓存与启动
执行以下命令清理界面缓存并启动服务:
rm -rf /tmp/luci-indexcache
/etc/init.d/tailscale enable
/etc/init.d/tailscale start
5. 账号绑定与初始化
- 进入后台:刷新路由器网页,在 “服务” -> “Tailscale” 即可看到控制界面。
第六部分:Tailscale直连优化与避坑
如果你希望手机在外面能通过 Tailscale 使用家里的 R2S 旁路由代理上网,并能像在家里一样管理主路由和 Docker 服务,以下设置是成功的关键。
1. 联动 Nikki/Clash 翻墙与 MTU 优化
在旁路由环境下,让代理插件感知并处理来自 Tailscale 的流量是第一步。由于 Tailscale 的流量经过加密封装,如果不将其接口告知代理插件,流量会绕过代理直接流出。
在 Nikki 插件中进行如下设置:
- Nikki 设置:进入“代理配置” -> “局域网代理”中,将
tailscale0添加到入站接口(Inbound Interfaces)。这确保了手机传回 R2S 的流量在解密后能立即进入代理分流逻辑。
为了防止因 MTU 大小不匹配导致的数据包分片丢失,建议在防火墙规则中添加以下 MSS 钳制命令。这能显著提升网页加载的顺滑度,防止因 5G 或公共 WiFi 环境导致的卡顿(可选):
nft add rule inet fw4 forward oifname "eth0" tcp flags syn tcp option maxseg size set rt mtu
2. 禁止Tailscale接管系统DNS(必做)
Tailscale 默认接管了系统的 DNS 设置。 当它启动时,会尝试将系统的 DNS 修改为它自己的服务器(通常是 100.100.100.100),或者强制推送到 /etc/resolv.conf。在旁路由模式下,这往往会破坏原本指向主路由或 SmartDNS 的解析路径,导致系统无法解析外部域名,因此必须执行禁用。
请在 SSH 终端执行以下命令:
tailscale up --accept-dns=false --reset
--accept-dns=false:拒绝接受官方 DNS 设置。这是旁路由环境的“救命参数”,防止 Tailscale 修改系统 DNS 导致与 Nikki/Clash 产生死锁,确保 DNS 解析权掌握在 R2S 代理手上。
下面的完整命令,包括:DNS 处理方式、路由宣告、出口节点能力,可在插件界面设置中设置路由宣告、出口节点(可选):
tailscale up --reset --advertise-exit-node --advertise-routes=192.168.10.0/24 --accept-dns=false
上述命令中参数的详细设置要点如下:
--advertise-exit-node:宣称自己为“出口节点”。它是实现“异地借线翻墙”的核心,允许其他设备将全局流量发给 R2S 转发。--advertise-routes=192.168.10.0/24:宣称内网网段路由。让手机在外网也能像在家里一样,通过192.168.10.x访问 NAS 或管理主路由。
3. 插件界面设置与官网后台“放行”
在完成 SSH 命令后,还需要通过图形界面确认状态,并去 Tailscale 云端控制台手动授予转发权限。
在 R2S 的 Tailscale 插件高级设置中确认以下项:
- 启用路由:勾选(允许接受其他节点广播的子网)。
- 允许 DNS:勾选(使用管理控制台的 DNS 配置)。
- 出口节点:勾选(确认为 Tailscale 广域网出口)。
- 公开网段:确保列表中已添加
192.168.10.0/24。
随后登录 Tailscale 官网后台进行 Edit route settings 操作:
- 登录 Tailscale Admin Console。
- 找到 R2S 设备,点击右侧三个点,选择 Edit route settings。
- 必须勾选
Use as exit node:确认该设备可以作为全网出口。 - 必须勾选
192.168.10.0/24:确认允许该设备转发此内网网段的流量。
4. 解决“无法管理主路由 (10.1)”:NAT 规则配置
即便开启了子网路由,由于主路由(如高恪)默认不认识 Tailscale 的 100.x 网段,回程包会发往 WAN 口导致丢失。我们需要在 R2S 的防火墙中配置 MASQUERADE(IP 伪装),让主路由以为是 R2S 本身在访问它,才可以在外网打开192.168.10.1主路由地址(最新测试,可选,没做也可以访问)。
在“网络” -> “防火墙” -> “NAT 规则”中新建如下参数:
- 名称:
Tailscale-MASQ - 地址族限制:选择
仅 IPv4。 - 协议:选择
任意。 - 出站区域:选择
lan(对应 R2S 连接主路由的物理接口br-lan)。 - 源地址:选择
任意。 - 目标地址:选择
任意。 - 操作 (Action):选择
MASQUERADE - 自动重写源地址为出站接口 IP。
5. 解决“打不开 Google.com”:DNS 覆盖(必做)
这是最容易被忽视的坑:手机开启出口节点后,如果解析不到真实国外 IP,翻墙就会失败。
操作路径:Tailscale 官网后台 -> DNS -> Nameservers -> Add nameserver。
添加 Nameservers:
- 添加
1.1.1.1(Cloudflare):点击设置,开启Use with exit node。确保手机拿到真实国际 IP 以触发代理。 - 添加
223.5.5.5(阿里):点击设置,开启Use with exit node。保证国内 App 访问速度。 - 开启覆盖:确保
Override local DNS开关为 开启 (蓝色)。
6. Docker 访问配置:打通虚拟网卡权限(必做)
如果你在 Docker 中运行了服务(如 Navidrome 音乐服务器、Jellyfin 等),默认情况下 Tailscale 流量无法进入 Docker 虚拟网络。
请在 R2S 后台的“Docker” -> “配置”中执行以下操作:
- 找到 “允许的访问接口” 选项。
- 在列表中手动勾选或填入
tailscale0。 - 点击“保存并应用”。这一步能确保来自 Tailscale 隧道的流量可以穿透 Docker 的虚拟防火墙。
7. 高恪 (GoCloud) 主路由映射与状态验证
最后,需要在高恪主路由上为 Tailscale 开启“直连快车道”,以确保异地组网的低延迟体验。
在高恪主路由中按以下路径和参数进行配置:
- 路径:网络设置 -> 端口映射 -> 端口映射。点击“新建”:
- 名称:
Tailscale-Direct - 协议:
UDP - 外部端口:
41641 - 内部 IP 地址:填写 R2S 的内网 IP(如
192.168.10.3) - 内部端口:
41641 - 端口回流:禁用(保持默认即可)。
- 关闭 UPnP:建议在高恪中关闭 UPnP 功能,避免随机端口抢占导致手动映射失效。
为了保证打洞成功率,请在 R2S 的防火墙常规设置中,将 入站数据、出站数据、转发 全部改为 “接受 (Accept)”。最后在 SSH 中输入以下命令验证是否成功直连:
tailscale status --active
判定标准:若显示 active; direct,说明 UDP 打洞成功,延迟最低。若显示 relay,则说明正在走服务器中转,请检查高恪端口映射是否生效。
第六阶段:安装Cloudflare Tunnel
- 软件安装:iStore 中常规安装 Cloudflare。
- 令牌 (Token):直接粘贴以
ey...开头的超长令牌。 - 证书上传:在 Cloudflare 官网选择域名后,系统会自动下载
cert.pem,需在路由器插件界面对应的“源站证书”位置上传。
第七阶段:媒体中心——Navidrome 防火墙神坑
- 安装:Docker 部署 Navidrome 镜像。
- 故障现象:服务正常但
http://192.168.10.3:4533无法打开。 - 解决方案:进入 网络 -> 防火墙 -> 常规设置,将 转发 (Forward) 设为 接受 (ACCEPT)。
- 原理:这是为了打通 LAN 区域到 Docker 区域(172.17.x.x)的“跨区”传送门。
其它操作
GoWebDav:将剩余空间映射到 /mnt/tf-disk 后,在此插件中开启共享,方便网页端文件存取。





