OpenWrt 生态概览
什么是 OpenWrt
OpenWrt 是一个面向嵌入式设备的 Linux 发行版,最初为路由器设计,现已广泛应用于工业网关、IoT 边缘节点、储能 EMS 终端等场景。与厂商固件不同,OpenWrt 提供完整的 Linux 环境和包管理系统,允许用户深度定制。
官方网站:https://openwrt.org
代码仓库:https://github.com/openwrt/openwrt
当前稳定版:23.05.x(基于 Linux 5.15 LTS)核心特性
| 特性 | 说明 |
|---|---|
| 包管理 | opkg,支持在线安装 3000+ 软件包 |
| 配置系统 | UCI(统一配置接口),所有配置集中在 /etc/config/ |
| 网络框架 | netifd,统一管理网络接口 |
| 防火墙 | nftables(新版)/ iptables,通过 UCI 配置 |
| Web 管理 | LuCI,基于 Lua/uHTTPd |
| 构建系统 | OpenWrt Build System(基于 Makefile) |
生态版图
OpenWrt 生态
├── 硬件支持
│ ├── x86/x86_64(工控机、软路由)
│ ├── ARM(树莓派、NXP i.MX、Rockchip)
│ ├── MIPS(传统路由器芯片)
│ └── RISC-V(新兴平台)
│
├── 工业/IoT 扩展
│ ├── kmod-usb-serial(串口转 USB)
│ ├── kmod-can(CAN 总线)
│ ├── mosquitto(MQTT Broker)
│ ├── node-red(可视化流程编排)
│ └── python3(脚本自动化)
│
├── 网络协议栈
│ ├── 有线:eth, VLAN (802.1Q), PPPoE
│ ├── 无线:mac80211, hostapd, wpa_supplicant
│ ├── 隧道:WireGuard, OpenVPN, GRE
│ └── 路由:OSPF, BGP (via FRRouting)
│
└── 管理接口
├── UCI CLI
├── LuCI Web UI
├── ubus (IPC 总线)
└── NETCONF/YANG (企业级)典型应用场景
1. 工业网关
OpenWrt 作为工业网关操作系统,承担以下职责:
- 协议转换:Modbus RTU → MQTT,IEC 104 → HTTP/REST
- 边缘计算:本地数据预处理、报警判断、数据缓存
- 安全隔离:IT/OT 网络隔离,防火墙策略
- 远程运维:VPN 接入、远程 SSH、OTA 升级
2. 储能 EMS 终端
储能柜
└── RS485/CAN → OpenWrt 网关
├── Modbus 采集 BMS 数据
├── IEC 104 上报调度中心
├── MQTT 推送云平台
└── 本地 Web 监控(LuCI 扩展)3. 5G/4G 边缘节点
结合 ModemManager + QMI/MBIM 驱动,OpenWrt 可管理蜂窝模块,实现:
- 双 SIM 卡自动切换
- 信号质量监控
- 数据流量统计
主流发行版对比
| 发行版 | 基础 | 特点 | 适用场景 |
|---|---|---|---|
| OpenWrt 官方 | Linux | 社区驱动,包最全 | 通用网关 |
| LEDE(已合并) | OpenWrt | 已回归主线 | - |
| Turris OS | OpenWrt | 安全增强,自动更新 | 家庭/企业 |
| Gl.iNet SDK | OpenWrt | 商业支持,快速开发 | 商业产品 |
| 厂商定制版 | OpenWrt | 针对特定硬件优化 | OEM 产品 |
版本选择建议
生产环境 → 23.05.x(当前稳定版,长期维护)
开发测试 → snapshot(最新功能,不稳定)
老硬件 → 21.02.x(兼容性更好)
工业定制 → 基于稳定版 fork,锁定内核版本快速上手
刷机流程(以 x86 为例)
bash
# 1. 下载镜像
wget https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz
# 2. 解压
gunzip openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz
# 3. 写入磁盘(Linux)
dd if=openwrt-23.05.3-x86-64-generic-ext4-combined.img of=/dev/sdX bs=4M status=progress
# 4. 首次登录(默认无密码)
ssh root@192.168.1.1基础配置
bash
# 设置 root 密码
passwd
# 配置 WAN 口
uci set network.wan.proto='dhcp'
uci commit network
/etc/init.d/network restart
# 安装常用工具
opkg update
opkg install nano htop tcpdump mosquitto-nossl