OpenWrt 软路由安装

从 SSH 登录、确认固件 TUN 到安装接入,逐步验证路由器在线,再按需要访问 NAS 和局域网。

先判断这台路由器是否适合直接安装

本页面向 OpenWrt 及兼容固件的 root SSH 操作。安装前确认三件事:固件本身提供兼容 TUN、路由器能访问互联网和软件源、系统与临时存储有可用空间。不是每个定制固件都带 TUN,网云连压缩包也不包含适配所有内核的通用驱动。

已有 TUN 就继续;缺少 TUN 时,先向固件维护者索取与这版固件同批构建的兼容模块,或由维护者提供已预装 TUN 的固件。有些定制系统确实需要在制作固件时把它编入,不能仅靠下载新版网云连补齐。

没有匹配模块时,可以把网云连安装在同一现场另一台已支持 TUN、且能访问 NAS 的 Linux/OpenWrt 设备上作为网关,不必默认改刷正在使用的路由器。是否更换固件由你结合设备型号、硬件版本、配置备份和官方恢复方式决定,本页不提供盲刷步骤。

在电脑上 SSH 登录路由器

先让电脑连到这台路由器的 LAN 或可管理网络,打开你平时使用的路由器后台,记下真实管理地址。192.168.1.1 只是常见示例;若你后台是其他地址,后面的 SSH 也使用那个实际地址。

Windows 打开“终端”或 PowerShell,Mac 打开“终端”,使用 SSH 连接 root@路由器实际地址。例如管理地址确实为 192.168.1.1 时,可执行下面命令。首次连接时核对这是你自己的设备,再按可信主机提示确认。

ssh root@192.168.1.1

密码提示输入路由器自己的 root 管理密码,不是图奕账号密码,也不一定是 Wi-Fi 密码。输入时不显示字符通常是正常现象,输完按回车。看到类似 root@路由器名称 的提示后,才在这个窗口执行后续命令。

如果 SSH 被拒绝或后台也无法进入,先处理路由器自身的管理连接。不要在电脑本机终端直接运行 opkg、apk 或 /etc/init.d 命令;它们应在成功登录后的路由器会话中执行。

推荐:在 控制台 创建或选择网络,点击“生成一键接入命令”,把完整命令粘贴到目标设备终端。安装后自动加入指定网络,无需再登录账号或输入令牌。每台设备分别生成,1 小时内有效,使用后失效;不要公开转发命令。已有工具升级使用通用安装命令即可,无需再次生成令牌。

先确认系统

使用 root SSH 登录软路由,先备份自己的配置,再执行 uname -m。推荐用官网脚本自动识别架构;手动下载时,x86_64 选 x86_64,aarch64/arm64 选 ARM64,armv6l 选 ARMv6,armv7l 选 ARMv7,riscv64 选 RISC-V 64。当前还提供 MIPS 大端和 MIPS 小端(mipsle)包;MIPS 的 uname 输出未必能区分字节序,应结合固件架构说明或让官方脚本识别,不能只凭路由器品牌猜。架构不在下载列表时先停止,不强行运行其他 CPU 的程序。CPU 包匹配与固件提供兼容 TUN 是两项不同条件。

OpenWrt 使用 procd 管理服务,无需安装 systemd。推荐选择 OpenWrt 安装包;从 0.4.13 起,相同 CPU 架构的 Linux 安装包也会在 OpenWrt 上自动使用 procd。若旧安装器提示需要 systemd,请改用下方通用安装命令,或重新下载对应架构的 OpenWrt 包。

先检查 TUN,不要直接安装内核模块

kmod-tun 是路由器的内核模块,并非每台路由器都需要额外安装。部分固件已内置 TUN 或已加载该模块。先在路由器的 root SSH 终端执行下面的只读检查:

uname -r
cat /etc/openwrt_release
ls -l /dev/net/tun

如果最后一行列出了以 c 开头的字符设备,先跳过 kmod-tun 的安装。继续准备下载工具即可。设备文件存在不代表已经接入网云连;后面仍需安装、接入并验证连接。

如果提示 No such file or directory,先停止接入安装,核对固件自身的 TUN 支持。已安装但没有加载、固件没有包含模块、软件源不匹配、虚拟机未提供设备,都可能导致它缺失。请保留固件版本和原始报错,由当前固件维护者确认是否有与这版固件同批构建的兼容模块。不要仅凭内核版本数字相同就安装另一个固件的模块。

遇到 Cannot satisfy dependencies、kernel is not compatible 或 incompatible with the architectures configured 时,请先停下,不添加强制安装参数,不替换内核,也不自行改成另一版固件的软件源。这类报错不等于只能刷机。只有确认当前固件确实不能提供兼容 TUN 后,才由你结合设备型号、配置备份和厂商恢复说明决定是否更换固件。OpenWrt 官方关于内核模块不匹配的说明。

准备下载工具与路由工具

下面的命令不包含内核模块。先执行 command -v opkg 和 command -v apk,哪个返回命令路径就使用哪组;不要两组都执行。使用固件自带的软件源,任何一步报错先保留完整提示。

使用 opkg 的固件:

opkg update
opkg install curl ca-bundle ip-full

使用 apk 的固件:

apk update
apk add curl ca-bundle ip-full

官网脚本和通用 tar.gz 安装器会检查 TUN,不会自行安装内核模块。IPK 的依赖由 opkg 处理;定制固件已经支持 TUN、但没有登记 kmod-tun 软件包时,优先使用通用 tar.gz 或官网脚本,不要为满足 IPK 依赖强行更换系统模块。

推荐:一条专属命令接入网络

  1. 在电脑浏览器登录控制台,创建或选择目标网络,核对名称和 ID。先完成本页路由器 SSH、TUN 与普通工具准备。
  2. 在“添加我的设备”选择“Mac / Linux / 路由器”,为这台路由器生成一条一键接入命令。它与成员邀请不同,不能用 10 位邀请码代替。
  3. 复制完整命令,切到已以 root 登录路由器的 SSH 窗口粘贴并回车。不能粘到电脑本机终端或浏览器地址栏。
  4. 等待下载、校验、安装、启动和接入。任一步明确报错时先保留完整原文,不继续粘贴后续命令,不强制安装模块掩盖内核不兼容。
  5. 看到“已加入网络”、网络 ID、设备 ID 和地址后,回控制台同一网络刷新,找到路由器并改成容易识别的名称。
  6. 确认路由器在线,再从另一台同网设备验证实际服务。访问 NAS 或整个 LAN 时继续配置子网路由、审批和业务测试。

专属命令每台设备分别生成,1 小时内有效。以下通用命令只安装或升级工具,首次安装后仍需接入网络。

仅安装或升级工具

完成上面的依赖准备后,以 root 在路由器执行:

curl -fsSL https://wangyunlian.com/install.sh | sh

安装后运行 wangyunlian up --token-stdin,输入控制台的单次设备令牌。

使用通用 tar.gz 包

从 下载页 取对应架构通用包,核对 SHA-256 后上传到路由器,例如 /tmp。用 df -h 确认临时空间足够,按实际文件名解压:

mkdir -p /tmp/wangyunlian-install
tar -xzf /tmp/你下载的安装包.tar.gz -C /tmp/wangyunlian-install
cd /tmp/wangyunlian-install
sh ./install.sh --join

上面“你下载的安装包.tar.gz”是占位文字,必须换成自己上传到路由器的真实文件名;不要凭示例手改架构后缀。在控制台选择网络 →“生成一键接入命令”,生成这台路由器专用的单次令牌,按提示粘贴回车。安装程序自动启用服务,已有配置与设备身份保留。

已经使用 IPK 安装时

IPK 适用于 opkg 系固件;apk 系固件使用通用 tar.gz 包。安装 IPK 后启用服务并接入:

/etc/init.d/wangyunlian setup
wangyunlian up --token-stdin
完成标志:路由器取得网云连地址并在控制台在线。要访问其后面的 NAS,还要继续配置子网路由。

验证连接

wangyunlian status
wangyunlian peers
logread -e wangyunlian

这一步先验证路由器自身取得网云连地址,能访问同网设备。要访问路由器后面的 NAS、摄像头或其他设备,还需要发布具体局域网网段并由所有者审批,详见 子网网关教程。

路由器上的 DNS

OpenWrt 0.4.10 起默认保留 dnsmasq 等现有 DNS 服务,不接管本机 DNS,也不要求让出本地 53 端口。路由器可通过网云连 IP 访问同网设备和已批准的子网;其他设备仍按网络设置使用设备域名。

如需在路由器本机使用网云连设备域名或企业分流 DNS,先确认本地 DNS 监听没有冲突,再执行以下命令并重连:

uci set onevpn.agent.accept_dns='1'
uci commit onevpn
/etc/init.d/wangyunlian restart
wangyunlian connect

恢复默认行为时把 accept_dns 改为 '0' 后重启服务。升级会保留已有配置;旧配置没有该选项时也采用默认关闭接管的行为。更多说明见 内网 DNS 教程。

升级与停止

下载新包、核验并在新包目录再次运行 sh ./install.sh 升级。停止并取消开机启动:

/etc/init.d/wangyunlian stop
/etc/init.d/wangyunlian disable

不再使用时还应在控制台移除设备。保留配置方便恢复,不需要为了排障清空路由器。

卸载命令行和网关服务

停止和禁用服务不会移除程序。IPK 安装使用 opkg 卸载;通用脚本或 tar.gz 安装需移除程序文件。查看 OpenWrt 完整卸载步骤,保留路由器配置和共享系统依赖。

为什么 TUN 不能当普通通用插件安装

curl、证书和路由工具主要运行在用户空间;TUN 属于内核能力。内核模块需要匹配固件使用的内核构建及 ABI,即使 uname -r 数字看起来一样,也不能据此认定另一份模块一定兼容。

固件可能把 TUN 直接编入内核,也可能自带可加载模块;这两种情况都不一定需要再装名为 kmod-tun 的包。先看本页 TUN 检查结果,而不是只看包列表有没有这个名字。

设备文件存在但连接时仍明确报 TUN 打开或权限错误时,保留原始日志继续核对。设备节点只是第一项检查,不是完整验收;虚拟机、容器或受限环境还可能需要宿主提供设备和网络权限。

接入前后的两个终端提示,怎样区别

控制台生成的完整一键命令,整行粘贴到路由器 SSH 终端,它已经包含单次令牌。只有手动包执行 --join 或已安装后执行 up --token-stdin 时,终端才要求单独输入设备令牌。

看到 Device token 提示时,只粘贴令牌本身,不要再粘整行 curl 命令。下载页登录后的“只复制设备令牌”可用于这种手动方式。令牌一小时内有效、只能使用一次;过期或已消费时先核对是否已登记。

不带令牌的通用命令只安装或升级工具,可能显示 Installed 或下一步登录提示,这不等于已经加入网络。首次安装后仍需接入;已有身份的正常升级无需新令牌。

手动下载:先传到路由器,再解压

下载 OpenWrt 对应 CPU 的通用 tar.gz,核对文件名和 SHA-256,再用可信文件传输工具上传到路由器 /tmp。SCP/SFTP 按固件实际支持的协议设置;连接的是路由器地址,目标是路由器的 /tmp,而非电脑本机目录。

“你下载的安装包.tar.gz”需要换成上传后的真实文件名。先用文件工具或 ls 查看,再运行 sha256sum。校验不一致时停止并重新核对来源。解压到空目录,保留包内全部文件,再从该目录执行 sh ./install.sh --join。

定制固件已内置 TUN、但包管理器没有登记 kmod-tun 时优先使用通用包。IPK 由 opkg 检查和处理依赖,不要为了满足 IPK 提示强制安装另一份内核模块。

完成后,分三层检查

第一层用 wangyunlian --version 检查版本,用 wangyunlian status 读取后台状态,必要时看 logread -e wangyunlian。第二层在控制台同一网络核对路由器设备 ID、地址和在线状态。

第三层从另一台同网设备访问实际服务。访问路由器后面的 NAS、打印机或摄像头,还需发布并批准真实网段,再使用目标设备原来的 LAN 地址。路由器在线不等于整个 LAN 自动开放。

官方安装器会启用开机服务,安装成功后可退出 SSH。无需为完成安装立即重启整台家庭路由器;需要验证重启后恢复时,先安排不影响现有上网的维护时间。

遇到这些情况,怎样继续?

提示 systemd is required,该怎么办?

这是旧 Linux/systemd 安装入口的提示。使用官方入口自动选 OpenWrt,或下载对应架构的 OpenWrt 包,在空目录解压后运行。OpenWrt 使用 procd,不需要安装 systemd。

软件源说内核不匹配,是不是只能刷机?

不能仅凭这句话下结论。先确认现有 TUN 支持,再向固件维护者核对兼容模块或同批构建资源。确实没有兼容支持时才评估更换固件,也可用另一台合适设备做网关;不要添加强制参数或自行换内核。

安装会影响家里原有 DNS 吗?

新版 OpenWrt 默认不接管本机 DNS。此前主动设置 accept_dns=1 的配置会保留,按本页 DNS 章节核对。出现 53 端口冲突时,不要先卸载路由器的 DNS 服务。

缺少 kmod-tun,能否把它放进网云连安装包?

单一模块不能兼容全部固件,需要对应固件构建提供匹配能力。网云连用户态二进制按 CPU 分发,和内核模块的兼容条件不同。

反馈问题提供什么?

提供型号、固件来源与版本、uname -r、uname -m、/dev/net/tun 检查结果、执行命令和完整报错,并说明后台与 SSH 是否仍能进入。不要提供 root 密码、私钥或有效令牌。