中兴问天 BE7200 Pro+ 开启 Telnet、安装 SSH 和 Larktun 实战
家里的路由器除了负责上网,其实还是一台 24 小时运行的小型 Linux 设备。如果能够安全地进入系统,再配合组网工具,它就可以成为远程管理家庭网络的一个入口。
但原厂路由器通常不会在管理页面提供 SSH 开关。对于中兴问天 BE7200 Pro+,我尝试通过修改自己的配置备份,在局域网内开启 Telnet,再安装独立运行的 SSH,最后接入 Larktun,实现通过私网访问路由器后台和 SSH。
我把实测过程整理成了一个开源项目:
https://github.com/OwnDing/zte-sr7410
这篇文章介绍方案的原理、完整操作流程,以及使用时需要注意的安全边界。
一、先说结论和适用范围
本次实测设备及环境:
- 产品:中兴问天 BE7200 Pro+。
- 后台型号:ZXSLC SR7410。
- 原厂固件:V1.0.0.7B4.8000。
- 电脑端:macOS,使用 Python 3.10、3.12、3.13 测试。
- 最终效果:局域网 Telnet、基于密钥的 SSH,以及通过 Larktun 私网访问路由器网页和原生 SSH。
整个过程通过修改用户配置和安装附加软件完成,不需要刷写固件。项目工具是从实测步骤整理而来,仍需在自己的设备上逐步验收。其他型号、固件版本以及 Linux、Windows 上的完整设备安装未经过同样的实测,不要直接假设兼容。
重要提示:操作有可能导致路由器重启、网络中断或配置异常。请仅对自己有权管理的设备操作,提前备份原始配置,安排好恢复方式,并选择可以中断网络的时间进行。不同设备或固件不匹配、校验失败时应停止,不要强行绕过检查。
项目地址和仓库文档是后续更新的准确信息来源:
https://github.com/OwnDing/zte-sr7410
二、整个方案是怎么工作的?
可以把这次改造分为四个阶段:
- 在路由器后台导出自己的配置备份,在电脑离线修改配置,仅开启局域网 Telnet。
- 恢复修改后的配置,重启后通过 Telnet 进入路由器。
- 安装独立运行的 Dropbear SSH,启用公钥认证,并验证命令执行和交互终端。
- 通过 SSH 安装 Larktun,让路由器作为私网节点提供后台和 SSH 访问。
这里的 Telnet 只是初始安装入口。它明文传输,不适合跨公网使用;项目要求保持 WAN Telnet 关闭。SSH 也只监听路由器 LAN 地址和本机回环地址,不自动创建公网端口映射或 WAN 放行规则。
Larktun 使用用户态网络,路由器后台和 SSH 需要显式配置私网 TCP 转发。它不是简单地把服务暴露到公网,也不会因为安装完成就自动打通整个家庭局域网。
三、操作前的准备
电脑上需要准备 Git、Python 3.10 或更新版本,以及 OpenSSH 客户端(ssh 和 ssh-keygen)。电脑需要能够访问路由器管理后台,也需要能够下载 GitHub 依赖和 Entware 软件包。
SSH 安装前,路由器的 /Plugin 分区至少需要 8 MiB 可用空间;启用 SSH 自启时还要检查至少 4 MiB 的余量。安装 Larktun 时空间要求更高,后面会单独说明。
下载仓库并创建 Python 虚拟环境:
1 | git clone https://github.com/OwnDing/zte-sr7410.git |
Windows PowerShell 可以使用:
1 | py -3 -m venv .venv |
Windows 下先确认已经安装 Git 和 OpenSSH。不要为了激活环境而全局放宽执行策略;也可以直接运行 .venv\Scripts\python.exe。需要再次说明:Windows 和 Linux 的完整设备安装流程尚未实测。
本文使用 192.168.5.1 作为示例地址。如果你的路由器管理地址不同,后续的浏览器地址和命令中的 --host 都要替换成自己的实际地址。
四、导出原始配置并生成 Telnet 配置
登录路由器后台,先核对型号和固件版本。然后进入:
“系统 → 备份配置 → 备份用户配置 → 备份配置”。
下载自己的 config.bin,妥善保留原件,再复制一份到仓库的 private/config.bin。macOS 或 Linux 可先创建目录:
1 | mkdir -p private |
配置备份包含 Wi-Fi、管理等敏感信息,后续生成的 XML 也是明文私有数据。不要将其发到 Issue、网盘或聊天群,也不要使用别人设备的备份。
接下来,在电脑上离线生成只开启局域网 Telnet 的配置:
1 | python scripts/config_tool.py private/config.bin --output-dir private/telnet |
这一步不连接路由器。工具会检查配置格式、加密长度、压缩块和 CRC,并进行原始文件的解码、重编码一致性检查;随后仅修改 TelnetCfg 中的 TS_Enable 和 Lan_Enable,要求 Wan_Enable 原本就是 0 并保持关闭。原有 Telnet 用户名、密码、端口和其他配置会保留。
处理成功后,主要文件包括:
1 | private/telnet/ |
其中,config-telnet-lan-only.bin 是待恢复的文件;config-original.xml 包含私人明文配置。输出目录必须事先不存在,工具不会覆盖此前的结果,重新生成时请换一个目录。
五、恢复配置,开启局域网 Telnet
回到路由器后台,进入“系统 → 备份配置 → 恢复用户配置”,选择:
1 | private/telnet/config-telnet-lan-only.bin |
确认恢复后,路由器会自动重启,网络会短暂中断。等设备恢复后,确保电脑重新连接的是同一台路由器的 Wi-Fi 或有线网络。
如果使用普通 Telnet 客户端,可以连接示例地址:
1 | telnet 192.168.5.1 |
具体账号、密码和端口可在自己的 config-original.xml 里查找 TelnetCfg 的 TS_UName、TS_UPwd、TS_Port。不要把它们写进命令参数,也不要公开配置文件。
更方便的方式是直接使用项目提供的检查工具,由它在本地读取配置:
1 | python scripts/router.py doctor --host 192.168.5.1 --config private/telnet/config-original.xml |
这一步是只读检查,会通过 Telnet 检查 UID 0、aarch64 架构、br0、基础命令和 /Plugin 空间,不会修改路由器。不想让工具读取 XML 时,可以省略 --config,根据提示输入用户名和密码;密码输入不回显。
六、生成 SSH 密钥并安装 SSH
SSH 建议使用专用 Ed25519 密钥。已有合适的密钥时,可以使用对应的 .pub 公钥;否则在电脑上创建:
1 | ssh-keygen -t ed25519 -f ~/.ssh/sr7410_ed25519 -C sr7410 |
建议为私钥设置口令。安装过程中只上传公钥,私钥始终保留在自己的电脑上。
执行安装:
1 | python scripts/router.py install-ssh --host 192.168.5.1 --config private/telnet/config-original.xml --public-key ~/.ssh/sr7410_ed25519.pub |
安装器会下载锁文件指定的 Entware 软件包并核对 SHA-256,构建独立的 aarch64 SSH 运行包,通过局域网临时传输给路由器,并在回读核对后解包安装。它会为设备现场生成独立的 SSH 主机密钥,同时准备交互终端需要的 PTY 环境。
这套 SSH 安装在 /Plugin/sr7410-ssh,使用专用运行库,不替换原厂系统 libc,也不修改原厂 /etc/passwd。默认监听 LAN 地址和 127.0.0.1 的 22 端口,关闭密码认证。
安装器会在电脑上生成独立的私有 SSH 配置和 known_hosts,而不是修改已有的 ~/.ssh/config。安装完成后:
1 | ssh -F private/ssh/ssh_config sr7410 |
如果路由器 22 端口已被占用,可以在安装时使用 --ssh-port 2222 等选项。更多多网卡、缓存目录和自定义密钥路径等参数,请查看项目 README。
七、别只验证能执行命令:还要检查交互终端
路由器原厂环境的 /dev 等路径受到限制,SSH 有时可能出现“能执行命令,却无法进入交互 Shell”的情况。因此,这里要同时验证公钥认证、UID 0 命令执行和 PTY。
如果私钥有口令,先将其解锁到 ssh-agent:
1 | ssh-add ~/.ssh/sr7410_ed25519 |
只有三项检查都通过,才能认为本次 SSH 验证完成。如果更改过客户端输出目录,验证时也要使用同一目录。
Windows 用户可以先直接运行 ssh -F private/ssh/ssh_config sr7410 确认交互登录;自动验证需要私钥已能通过 ssh-agent 免交互解锁。
如果遇到 PTY allocation request failed 或 shell request failed,不要替换固件 libc,也不要强行重挂根文件系统。可通过仍然可用的 Telnet 检查 /var/sr7410-ssh/ssh.log,并按照仓库的常见问题排查。
八、可选:让 SSH 重启后自动启动
确认 SSH 正常后,再开启自启:
1 | python scripts/router.py enable-autostart --host 192.168.5.1 --config private/telnet/config-original.xml |
这个方案利用原厂测速组件的覆盖包入口,在校验过的组件脚本中增加后台启动调用,保留原有逻辑。项目会先核对原厂组件版本;如果已有其他软件的覆盖包,或者组件版本不匹配,工具会停止,不会直接覆盖。
启用命令本身不会重启路由器。请自行通过后台重启,等待网络恢复后检查:
1 | python scripts/router.py verify-ssh |
重启后再次通过命令和交互终端验证,才算完成本机自启验收。固件或测速组件升级后,也应重新检查自启入口。
九、安装 Larktun,让路由器接入私网
完成 SSH 登录、verify-ssh 和 SSH 自启配置后,就可以继续安装 Larktun。
原厂系统的 /usr、/etc 等路径只读,闪存容量也有限,因此不要直接套用普通 Linux 的一键安装命令。项目提供了专用安装器:ARM64 程序以 gzip 形式存放在 /Plugin/sr7410-larktun,启动时解压到 /var/sr7410-larktun,并使用 userspace-networking 模式。
安装前需要约 29 MiB 的压缩程序空间、额外 4 MiB 闪存余量,以及安装期间至少 128 MiB 可用 RAM。安装器会使用已配置的局域网 SSH 连接;安装、停止和卸载期间都应使用局域网 SSH。
1 | python -m pip install -r requirements.txt |
安装器下载并校验 larktun.lock.json 中固定的版本,再通过 SSH 传输。已有安装会被保留,工具会停止操作,不会直接覆盖。
接下来,在 Larktun 控制台对应的工作空间中,为这台设备创建独立的一次性 Auth Key,然后在自己的交互终端执行:
1 | python scripts/larktun_tool.py login |
根据提示粘贴密钥,输入不回显。不要将真实 Auth Key 放进命令、文档、Issue 或截图。默认控制服务器是 https://hs.larktun.com;如有自己的 HTTPS 控制服务器,可使用 --login-server 指定。
确认状态为 Running,并记下这台设备自己的私网 IP。默认情况下,工具不会接管 DNS,也不会接受其他节点宣告的路由。
十、通过 Larktun 访问路由器后台和 SSH
这里有一个很容易踩的坑:用户态节点可以 ping 通,不代表原厂路由器网页和 SSH 已经能从私网访问。
需要显式创建私网 TCP 转发,并生成远程 SSH 配置:
1 | python scripts/larktun_tool.py expose-router |
第一条命令默认将节点私网的 TCP 80 和 22 转发到路由器本机 127.0.0.1 对应端口。它通过 Larktun 网络和 ACL 控制访问,不开启公网 Funnel,也不创建 WAN 端口映射。如果 SSH 使用了其他端口,请按仓库文档提供 --ssh-port。
第二条命令生成独立的 private/ssh/ssh_config.larktun 和 known_hosts.larktun,沿用此前通过可信局域网会话固定的主机公钥,保持严格校验,不修改原有 LAN 配置。
在另一台加入同一账号或工作空间、并被 ACL 允许访问的设备上,可以通过该节点私网 IP 打开路由器后台;当前电脑加入 Larktun 后,也可以运行:
1 | ssh -F private/ssh/ssh_config.larktun sr7410-vpn |
验证时,建议让手机关闭 Wi-Fi、改用移动网络,实际打开后台;SSH 也要真正登录一次。后台仍需要自己的管理密码,SSH 仍需要被授权的密钥。其他客户端要使用已被路由器授权的密钥,不要公开或随意复制私钥。
需要强调:这两条命令只配置路由器自身的网页和 SSH,不会自动打通整个家庭 LAN。如果还要访问 NAS 等设备,需要按项目的子网路由说明另行配置、在控制台批准并放行 ACL。用户态子网转发不能等同于完整三层 IP 转发,应按实际协议和应用进行验证。
十一、Larktun 自启与重启验证
确认私网访问正常后,可以按需开启 Larktun 自启:
1 | python scripts/larktun_tool.py enable-autostart |
工具只会在确认现有覆盖包属于本项目后,将其更新为 SSH 和 Larktun 共用的启动入口;它不会自动重启设备。
随后自行重启路由器,等网络恢复后依次执行:
1 | python scripts/router.py verify-ssh |
最后,再从移动网络实际验证后台访问和 SSH 登录。Larktun 自启依赖共享的 SSH 自启入口:关闭 SSH 自启会同时停止 Larktun 开机启动;单独关闭 Larktun 自启则不影响 SSH。
十二、常见问题和安全建议
1. 安装 SSH 时下载卡住怎么办?
先确认电脑和路由器可以互相访问,检查是否启用了无线客户端隔离,电脑是否允许 Python 接收可信局域网入站连接。多网卡环境可以通过 --bind-address 指定电脑的 LAN 地址。安装器不会修改电脑防火墙。
2. 软件包下载失败或 SHA-256 不一致怎么办?
不要关闭校验,也不要随意用网络上临时获取的哈希替换锁文件。检查网络、软件源和缓存,按照项目文档处理。项目实测时 Entware 官方 HTTPS 连接超时,因此锁文件使用官方 HTTP 地址,并强制校验预置 SHA-256。
3. 升级固件后还能保证自启吗?
不能直接假设。自启依赖实测过的原厂组件和覆盖入口;升级后应重新检查项目兼容性及运行状态,不要绕过版本校验。
4. Telnet 和远程访问需要注意什么?
Telnet 是明文协议,只在可信局域网中用于安装和维护,保持 WAN Telnet 关闭。妥善保存原始备份、明文 XML、SSH 私钥、Auth Key 和路由器管理密码;Larktun 侧也应收紧工作空间和 ACL 权限。SSH 首次固定主机密钥依赖当时可信的局域网 Telnet 会话,后续严格校验无法弥补首次连接环境已被攻击的问题。
十三、如何卸载和回退?
如果安装了 Larktun,并希望完整回退,顺序应当是:先卸载 Larktun,再卸载 SSH,最后恢复自己的原始配置。两者共用自启入口,不要先随意删除共享组件。
卸载 Larktun:
1 | python scripts/larktun_tool.py uninstall |
这会删除设备上的 Larktun 节点登录状态,但保留 SSH;还需要在 Larktun 控制台清理对应节点。
如只想先关闭 SSH 自启:
1 | python scripts/router.py disable-autostart --host 192.168.5.1 --config private/telnet/config-original.xml |
卸载本工具安装的 SSH:
1 | python scripts/router.py uninstall-ssh --host 192.168.5.1 --config private/telnet/config-original.xml |
最后,在管理后台恢复自己的原始 config.bin 并重启,以恢复原本的 Telnet 配置。恢复用户配置不会自动删除 /Plugin 中安装的软件或覆盖包,所以不要把“恢复配置”当作完整卸载的替代方案。具体回退边界和异常处理请以项目文档为准。
写在最后
这次改造的重点不是把路由器直接暴露到公网,而是在原厂固件的限制下,建立一条有明确边界的管理链路:先通过自己的配置备份开启局域网入口,再安装密钥认证的 SSH,最后通过 Larktun 在私网内访问。
项目中把配置校验、独立运行库、交互终端、主机密钥、自启和卸载等细节尽量做成了可重复的流程。但路由器设备、固件和家庭网络各有差异,实际操作前仍然要先确认适用范围、备份配置,并逐步验证。
完整教程、源码与后续更新: