Skip to content
tsix2019Public

About

OpenWrt router manager for iOS & Android with a Liquid Glass UI · 中文 / English

Resources

Stars

19 stars

Watchers

1 watching

Forks

Latest commit

 

History

394 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RouteLink

RouteLink

中文 | English

CI iOS Android OpenWrt Release MIT

RouteLink 是一款管理 OpenWrt 路由器的手机 App,支持 iOS 和 Android,界面有中文和英文。产品介绍网站:https://tsix2019.github.io/RouteLink/

  • iOS 26 风格:iOS 上用系统原生的液态玻璃(Tab 栏、导航栏、底部面板);Android 上也按 iOS 26 的样式绘制:悬浮玻璃 Tab 栏、大标题导航栏、圆角分组列表。
  • 自动发现:扫描手机所在的局域网,找出 OpenWrt 设备,旁路由也能找到;也可以扫描指定网段或手动输入地址。
  • 多路由器:添加多台路由器,在页面左上角一键切换。
  • 按设备统计流量:配合路由器插件,看每台设备的实时速率,以及任意时间段、按天、按月的用量;插件可以在 App 里一键安装。
  • 改配置更安全:所有改动都走 OpenWrt 自带的"应用 + 确认"机制,App 联系不上路由器时,路由器会在 90 秒后自动撤销改动;会断网的操作都有分级的风险提示。
  • SSH 终端:在 App 里直接用路由器的命令行;第一次连接时确认主机指纹,之后指纹变了会拦下来;可以一键把 App 的密钥装到路由器上。
  • AI 助手:用你自己的 API Key(Claude、OpenAI、DeepSeek、通义千问,或本地的 Ollama)问路由器的情况;需要改设置时先请你确认。
  • 桌面小组件和掉线通知:桌面上看当前路由器的状态、速率和在线设备数(Android 另有网速、在线设备、系统资源、外网、快捷操作 5 种,点 ↻ 立即刷新);路由器连不上、恢复、有新设备接入时发通知。
  • 演示模式:没有路由器也能先试用,内置一台模拟的 OpenWrt 路由器。
  • 隐私:不收集任何数据,App 只和你添加的路由器通信,只在你检查更新、打开自动检查更新或安装插件时访问 GitHub;AI 助手只在你自己启用后,才联系你选的服务商。

App 的五个里程碑(M1~M5)和路由器插件的第一期(P1)已完成,后续功能见下面的功能清单。

截图

所有截图都来自演示模式。iOS 截图由 CI 在 iOS 26 模拟器上自动截取,Android 截图在 Android 模拟器上截取。

浅色

iOS Android
概览
设备详情
无线

深色

iOS Android
设备
网络
更多

流量统计(需要路由器插件)

iOS Android
流量总览
设备流量
WAN 口历史

网络与系统工具

iOS Android
防火墙
实时连接
软件包

更多路由器功能

iOS Android
家长控制
Wi-Fi 定时开关
WireGuard
广告过滤
固件升级

终端、AI 助手和小组件

iOS Android
SSH 终端
AI 助手
通知与小组件

其余截图在 docs/screenshots/zh。

功能

✅ 已完成 🚧 计划中(括号里是阶段:M2~M4 是 App 本身的里程碑,P2~P4 是路由器插件和配套功能的分期)

概览

  • ✅ 系统信息:型号、固件、内核、主机名、运行时间
  • ✅ 资源:负载、内存、存储、温度(路由器支持时)
  • ✅ 外网状态:协议、IP、网关、DNS、在线时长
  • ✅ 实时流量曲线、在线设备数
  • ✅ 重启路由器(带进度和恢复检测)
  • ✅ 今日流量卡片:今天的上下行和用得最多的设备(需要插件)
  • ✅ Wi-Fi 二维码分享(概览和每个 Wi-Fi 的页面)
  • ✅ 问 AI:一键打开 AI 助手

设备

  • ✅ 设备列表:合并 DHCP 租约、邻居表和无线终端;在线/离线、有线/无线筛选;搜索;信号强度;厂商识别
  • ✅ 改名(写到路由器上;符合主机名规则的名字在 LuCI 和局域网 DNS 里也能看到)
  • ✅ 绑定静态 IP、拉黑(禁止上网)、踢下线
  • ✅ 网络唤醒(路由器装了 etherwake 时由路由器发送;否则 Android 手机直接发送)
  • ✅ 单台设备的流量:曲线、总量、峰值、上下线记录(需要插件)
  • ✅ 家长控制:按时段禁止某台设备上网(跨午夜的时段也可以),时段开始时连它正在进行的连接一起断开
  • ✅ 查蹭网:扫描整个网络组,标出没信任过的设备,可以一键拉黑或加入信任;信任列表存在插件里(没装插件时存在手机上)
  • ✅ 网络组里的设备显示连在哪台 AP、哪个频段;踢下线会发到它所在的 AP

无线

  • ✅ 射频设置:开关、信道、频宽、发射功率、国家码
  • ✅ Wi-Fi 设置:名称、密码、加密方式、隐藏、启用。手机正连着这个 Wi-Fi 时,会提示并引导重新连接
  • ✅ 扫描周边 Wi-Fi
  • ✅ 访客网络:一键创建(只能上网、访客之间隔离)、开关、二维码分享、删除;只在负责上网的路由器上提供
  • ✅ MAC 过滤:只允许或禁止列表里的设备,不会把正在用的手机挡在外面
  • ✅ Wi-Fi 定时开关:到点关闭、到点打开,可以只管某个射频;不改无线配置
  • ✅ 网络组:把 AP 挂到主路由下面,当成一个网络管理;切换面板和无线 Tab 按路由器分组;同名 Wi-Fi 的名称、加密方式和密码一次改完
  • ✅ 信号监测:每台无线设备的信号、信噪比、协商速率和重传率,实时曲线、历史曲线(需要插件)和漫游记录,给出改善建议
  • ✅ 信道扫描与优化:周边 Wi-Fi 的信道占用图和信道表,推荐干扰最小的信道(组里的多台 AP 依次错开),一键切换
  • ✅ Wi-Fi 安全检查:加密方式评级、密码强度、WPS、管理帧保护、客户端隔离等检查,一键修复并同步到同名 Wi-Fi

网络

  • ✅ 接口列表和详情、重连接口
  • ✅ 流量统计(需要插件):任意时间段(可以只看每天的某几个小时)的总量和曲线、设备排行(互联网或局域网)、实时速率、导出 CSV
  • ✅ WAN 口历史(需要插件):按日、按月的用量,按每月重置日计算本期已用
  • ✅ WAN 设置(DHCP、静态、PPPoE、DNS、MTU)和 LAN 设置(地址、DHCP 地址池;改地址时 App 在新地址确认,连不上会自动改回)
  • ✅ 路由表和静态路由、实时连接(路由器反查域名)、防火墙(端口转发、通信规则、区域)、WireGuard 状态
  • ✅ 一键诊断:从手机 Wi-Fi、AP 上联、WAN、上游、DNS 到外网逐段检查,再看近期稳定性和 Wi-Fi 安全,每段给出结论和建议,可以分享
  • ✅ 诊断工具:ping、traceroute、nslookup,可以选在组里哪台路由器上执行、IPv4 或 IPv6,显示摘要和原始输出
  • ✅ 断网和延迟记录(需要插件):路由器持续探测上一跳和外网目标,延迟和丢包曲线、可用率、断网列表和原因(重新拨号、WAN 断开、上游不通),导出 CSV
  • ✅ 测速:手机测速、路由器测速(需要插件),两者对比找出瓶颈在 Wi-Fi 还是宽带;保存历史,可以填签约带宽对照
  • ✅ VLAN:"端口 × VLAN"矩阵,支持新式 DSA 网桥和旧式 swconfig 交换机;高风险操作,改错了路由器会自动回滚
  • ✅ VPN:WireGuard 新建隧道和对端、导出配置文件和二维码;OpenVPN 导入 .ovpn、启停
  • ✅ DDNS、SQM 限速、广告过滤(adblock-fast 或 adblock)

更多

  • ✅ 服务管理:启动、停止、重启、开机自启
  • ✅ 系统日志、内核日志(筛选、分享)
  • ✅ 网络唤醒常用设备列表
  • ✅ 管理路由器(排序、编辑、删除、证书)、语言、外观、刷新间隔、降低透明度、演示模式
  • ✅ 路由器插件:一键安装、检查更新、重启、清空数据、卸载
  • ✅ 检查 App 更新:Android 在 App 里下载、校验并安装新版本,iOS 打开发布页;可以打开每天自动检查(默认关闭)
  • ✅ 进程(结束、重新加载)、软件包(搜索、安装、卸载)、计划任务、LED、系统(时区、同步手机时间、修改管理密码)
  • ✅ 备份与恢复、固件升级(官方 OpenWrt 和 ImmortalWrt 可以在线升级,也可以用本地文件)、恢复出厂。这几项都是高风险操作:先提示备份,勾选并输入路由器名称才能继续,执行时全屏提示不要断电
  • ✅ SSH 终端:密码或密钥登录、主机指纹确认和固定、快捷键栏(Esc、Tab、Ctrl、方向键)、调整字号、手指滑动翻看输出、横屏;一键把 App 的公钥装到路由器
  • ✅ AI 助手:Claude、OpenAI、DeepSeek、通义千问、Ollama 或任意 OpenAI 兼容的服务,用你自己的 API Key;查状态、设备、日志,改设置(踢掉或拉黑设备、改 Wi-Fi、加端口转发、重启服务或路由器)前在对话里请你确认;可以选择发送哪些数据、是否打码;每台路由器保存多段对话,可以搜索、重命名、删除
  • ✅ 桌面小组件(iOS、Android):当前路由器的在线状态、速率、在线设备数,点按打开 App
    • Android 共 6 种:路由器状态、网速、在线设备、系统资源、外网、快捷操作。点小组件上的 ↻ 在后台读一次路由器(需要保存了密码),系统大约每半小时也会自动更新一次。在「更多 → 桌面小组件」里预览和添加
    • 从 App 里添加时没反应:小米、vivo、OPPO、华为、荣耀等手机默认不允许 App 往桌面添加东西,要在 RouteLink 的应用权限里打开「桌面快捷方式」,App 会提示并带你去设置页;也可以长按桌面空白处,从「小组件」里手动添加
  • ✅ 后台通知:路由器连不上、恢复、有新设备接入(按路由器开关,需要保存密码)
  • ✅ 限速(需要插件):按设备限制下载和上传,可以只在某几天的某个时段生效;开着软件加速也有效
  • ✅ 流量配额(需要插件):按天、周、月给设备设上限(每月可以指定重置日),用到 80% 提醒,用完断网或限速,可以临时放行
  • ✅ 访问去向和 DNS 记录(需要插件,默认关闭):设备的流量去了哪些地址和域名,DNS 查询记录可以搜索;开启前有隐私说明
  • ✅ 路由器推送(需要插件):新设备接入、关注设备上下线、配额提醒、断网和恢复,由路由器直接推送到 Webhook、Bark、Server 酱、PushPlus、Telegram、企业微信、钉钉、飞书;手机不用开着 App
  • ✅ Android 实时监控:在通知栏实时显示路由器的速率和在线设备,路由器连不上时提醒;Android 16 起显示为状态栏胶囊,可以选监控时长

安装

  • Android:从 Releases 下载 RouteLink-<版本>.apk 安装。需要 Android 8.0 或更新版本、ARM 处理器(市面上的手机和平板都是)。
  • iOS:需要 iOS 17 或更新版本(液态玻璃效果需要 iOS 26)。没有上架 App Store。Releases 里提供未签名的 RouteLink-unsigned.ipa,可以用 AltStore、SideStore、Sideloadly 用自己的 Apple ID 签名安装;支持 TrollStore 的 iOS 版本也可以用 TrollStore 安装。
    • IPA 里带一个桌面小组件扩展,签名时要算两个 App ID(免费 Apple ID 每 7 天最多注册 10 个)。App 和小组件通过 App Group group.io.github.tsix2019.routelink 共享数据,签名时要换成你账号下的 App Group(AltStore、SideStore 会自动处理)。如果小组件一直没有数据,多半是签名时丢了 App Group,App 本身不受影响。

路由器要求

  • OpenWrt 21.02 或更新版本,装有 LuCI 网页管理界面。CI 在 OpenWrt 23.05、24.10、25.12 上实测;ImmortalWrt 等衍生版尽量兼容。

  • 默认需要的软件包都随 LuCI 一起安装:rpcd、uhttpd-mod-ubus、rpcd-mod-luci、rpcd-mod-iwinfo、rpcd-mod-file。

  • 可选软件包:

    功能 软件包
    由路由器发送网络唤醒包 luci-app-wol(带 etherwake)。OpenWrt 25.12.5 上 LuCI 的唤醒接口有问题,Android 会自动改由手机发送
    HTTPS 访问 较新的固件默认已带;旧版本安装 luci-ssl
    WireGuard(状态、新建隧道和对端) luci-proto-wireguard
    OpenVPN openvpn-openssl、luci-app-openvpn
    DDNS ddns-scripts、luci-app-ddns;部分服务商要另装脚本,比如 ddns-scripts-cloudflare
    SQM 限速 sqm-scripts、luci-app-sqm
    广告过滤 adblock-fast 和 luci-app-adblock-fast,或者 adblock 和 luci-app-adblock
  • HTTPS 自签名证书:第一次连接时,App 会显示证书指纹请你确认,确认后只信任这一张证书。之后证书如果变了,App 会拦下连接并提示(可能是重置了路由器,也可能有人冒充)。

  • HTTP:可以用,但密码会以明文在局域网里传输,App 会标注"未加密"。建议在路由器上开启 HTTPS。

  • 登录账号默认是 root,也可以用其他 rpcd 账号;没有权限或缺少软件包时,相应功能会给出提示。

路由器插件

RouteLink 插件装在路由器上,持续记录 App 没打开时也需要的数据,并替 App 执行要一直在线的规则。App 和 LuCI 页面(服务 → RouteLink)都能查看和设置:

  • 每台设备的上传和下载

  • 无线设备的信号、协商速率和信道繁忙度(主路由和 AP 上都可以装;只做 AP 的路由器只运行无线这一项)

  • 延迟、丢包和断网记录,路由器测速

  • 限速、流量配额、访问去向和 DNS 记录、事件推送

  • 怎么统计:按设备 MAC 汇总连接跟踪的计数,IPv4、IPv6 都算;开着软件加速(flow offloading)也准确,在 Docker 实验环境里和终端网卡的字节数逐字节一致。

  • 保存多久:流量按分钟保存 48 小时,按小时保存 90 天,按天保存 2 年;信号按分钟 7 天、按小时 30 天;延迟按分钟 7 天、按小时 90 天,断网记录 1 年。数据在路由器的 /etc/routelink,存在闪存上时默认每小时写一次(其他存储每 10 分钟),占用上限 32 MB,升级固件时会保留。

  • 占用:在 x86 上(Docker 实测)52 台设备、5000 个连接时,平时占单核 0.04%,内存 1.7 MB。

  • 支持:OpenWrt 23.05、24.10、25.12,以及基于 25.12 但仍用 opkg 的固件(如 Kwrt);架构 x86_64、aarch64(cortex-a53、cortex-a72、generic)、arm(cortex-a7、cortex-a9、cortex-a15)、mipsel_24kc、mips_24kc。

安装

  • App 一键安装:更多 → 路由器插件 → 安装插件。需要 root 账号,并且路由器能连上 OpenWrt 官方软件源(补装依赖)。国内访问 GitHub 慢时,可以在同一页填写下载镜像。

  • 手动安装:从 Releases 下载对应版本和架构的安装包(manifest.json 里有清单),传到路由器上安装。架构可以用 . /etc/openwrt_release; echo $DISTRIB_ARCH 查看。

    # OpenWrt 23.05 / 24.10,以及仍用 opkg 的 25.12 固件(如 Kwrt,用 25.12 的 .ipk 包)
    opkg update
    opkg install routelinkd_*.ipk luci-app-routelink_*.ipk luci-i18n-routelink-zh-cn_*.ipk
    
    # OpenWrt 25.12:先信任 RouteLink 的签名公钥
    wget -O /etc/apk/keys/routelink.pem https://tsix2019.github.io/RouteLink/agent/keys/routelink-apk.pem
    apk update
    apk add routelinkd-*.apk luci-app-routelink-*.apk luci-i18n-routelink-zh-cn-*.apk
  • 添加软件源(以后可以在 LuCI 的软件包页面升级)。把 24.10、x86_64 换成你的版本和架构:

    # OpenWrt 23.05 / 24.10,以及仍用 opkg 的 25.12 固件(地址里写 25.12)
    wget -O /etc/opkg/keys/a276fe73982c5f59 https://tsix2019.github.io/RouteLink/agent/keys/a276fe73982c5f59
    echo 'src/gz routelink https://tsix2019.github.io/RouteLink/agent/24.10/x86_64' >> /etc/opkg/customfeeds.conf
    opkg update && opkg install routelinkd luci-app-routelink luci-i18n-routelink-zh-cn
    
    # OpenWrt 25.12
    wget -O /etc/apk/keys/routelink.pem https://tsix2019.github.io/RouteLink/agent/keys/routelink-apk.pem
    echo 'https://tsix2019.github.io/RouteLink/agent/25.12/x86_64/packages.adb' >> /etc/apk/repositories.d/customfeeds.list
    apk update && apk add routelinkd luci-app-routelink luci-i18n-routelink-zh-cn

注意

  • nlbwmon:它会把插件读取的连接计数清零,两者同时运行时统计会偏少。App 和 LuCI 页面都会提示,并提供"停用 nlbwmon"按钮。
  • 硬件加速:开了硬件加速(或 Turbo ACC/SFE)以后,走加速通道的流量统计不到,插件会提示"统计可能偏少"。软件加速没有影响。
  • 时间:路由器时间同步之前,数据只保存在内存里;按天、按月的统计以路由器的时区为准。
  • 限速和配额:用 tc 在 LAN 口按设备整形,用 nftables 断网(插件自己的表,不改防火墙配置),断网时已有的连接一起切断。开着软件加速也有效,CI 在 23.05、24.10、25.12 上实测误差在 10% 以内;硬件加速的流量不受限。
  • DNS 记录:默认关闭。开启后插件只读取路由器发给局域网设备的 DNS 应答,记录保存在路由器上(默认 7 天)。
  • 推送:由路由器直接发给你设置的推送服务,消息里有设备名和事件;钉钉、飞书可以加签。
  • 隐私:数据只保存在你的路由器上;App 只在你点检查更新或安装插件时访问 GitHub。

LuCI 页面(服务 → RouteLink)分为概览、流量、延迟、限速与配额、访问记录、推送、设置 7 页。可以在产品网站上直接点开看看(网页绘制,演示数据)。

安全与隐私

  • 路由器密码只存在系统钥匙串(iOS Keychain / Android Keystore),不写日志。也可以选择不保存密码,每次打开 App 时输入。
  • 自动发现的探测请求不带任何账号信息。
  • App 生成的 SSH 私钥存在钥匙串里,不会离开手机;装到路由器上的只是公钥。
  • AI 助手默认不启用。只有你填了自己的 API Key、看过说明并同意后,才会把你的问题和回答需要的路由器数据(状态、设备列表、无线和防火墙设置、系统日志)发给你选的服务商。MAC 地址和公网 IP 默认打码,每类数据都可以单独关闭,密码和密钥永远不会发送。对话只存在手机上。
  • 不收集任何统计数据,没有广告,App 不联系任何自有服务器。测速会连接测速服务器(默认 Cloudflare),一键诊断会访问常见的联网检测地址;检查更新、打开自动检查更新或安装插件时会访问 GitHub。
  • 仓库里的测试数据只来自演示模式和一次性的虚拟路由器(Docker / QEMU),不包含任何真实路由器的数据。

从源码构建

需要 Node.js 22。

npm ci
npx expo run:android   # 需要 Android SDK 和 JDK 17
npx expo run:ios       # 需要 macOS 和 Xcode 26

测试:

npm run typecheck && npm run lint && npm test
scripts/dev-router.sh up   # 用 Docker 启动一台测试用的 OpenWrt
ROUTER_URL=http://127.0.0.1:18080 ROUTER_PASSWORD=routelink-test npm run test:int

路由器插件(需要 Docker):

scripts/agent-test.sh                    # 守护进程的单元测试(ASan、UBSan)
scripts/agent-build.sh 24.10.8 x86_64    # 用 OpenWrt SDK 编译,输出到 openwrt/out/
scripts/agent-router.sh up && scripts/agent-dev-install.sh && scripts/traffic-lab.sh up
npx jest -c jest.agent.config.js         # 准确性测试

参与开发

代码按层组织,下层不依赖上层:

modules/routelink-native   原生模块:HTTP(证书固定、无 Cookie 罐、不跟随跳转)、网络信息、网络唤醒
src/api/http               HTTP 客户端接口
src/api/ubus               JSON-RPC、登录(ubus / LuCI 回退)、会话续期、批量调用
src/api/connection         RouterConnection:真实路由器和演示路由器
src/api/services           领域服务:系统、网络、设备、无线、服务、日志……(版本差异只在这一层处理)
src/hooks、src/state       React Query 查询、本地状态(路由器、设置)
src/app、src/features      页面和功能组件(expo-router)
src/ui                     iOS 26 风格的组件:玻璃、列表、面板、风险确认、图表
openwrt/                   路由器插件:routelinkd(C 守护进程)、luci-app-routelink(LuCI 页面)、软件源公钥

致谢

功能范围参考了这些开源 OpenWrt App(只参考功能,没有使用它们的代码):

也感谢 OpenWrt、LuCI 和 Expo。

协议

MIT

About

OpenWrt router manager for iOS & Android with a Liquid Glass UI · 中文 / English

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages