OpenWrt 是一款免费开源的路由器操作系统,基于 Linux 内核开发,广泛应用于软路由、硬路由以及各种嵌入式网络设备。与传统路由器固件不同,OpenWrt 提供了一个完全可写的、带软件包管理的文件系统,让你可以自由安装各种应用来扩展路由器功能,彻底摆脱厂商限制。
作为目前最受欢迎的开源路由系统之一,OpenWrt 拥有活跃的开发者社区和丰富的插件生态,支持超过 1000 个软件包。无论是想把普通路由器改造成智能软路由,还是搭建家庭 NAS、广告过滤,OpenWrt 都能满足你的需求。
准备工作
硬件要求
选择用于 OpenWrt 的路由器时,建议寻找具有大于 8MB 闪存和大于 64MB 内存的设备,以确保操作系统和 Web 管理界面(LuCI)的全部功能正常运行。
固件选择
必须为路由器的特定型号和硬件版本选择正确的固件文件。例如 TP-Link WR841N 硬件版本 8 必须使用对应版本固件,使用错误的文件可能会"砖化"设备。正确的固件文件通常以 factory.bin 结尾。
你可以在 OpenWrt 官方固件选择器 中查询你的设备支持的固件版本。
安装 OpenWrt 固件
刷写步骤
刷写 OpenWrt 固件通过路由器原厂的 Web 管理界面完成:
- 使用以太网线连接电脑和路由器(不要用 WiFi 刷固件)
- 登录原厂管理界面
- 进入「系统工具」→「固件升级」页面
- 选择下载好的 OpenWrt factory.bin 固件文件
- 点击升级,等待路由器重启
⚠️ 重要: 刷写过程中切勿断电或拔线,否则可能导致路由器变砖。
初始访问
刷写完成后,通过网线连接路由器,浏览器访问 http://192.168.1.1 即可进入 OpenWrt 的 Web 管理界面(LuCI)。首次登录默认没有密码,直接点击登录即可。
安全加固与基础设置
安装 OpenWrt 后,第一件事应该是安全加固:
设置 root 密码
- 进入「系统」→「管理权」
- 在「路由器密码」栏设置新的 root 密码
- 点击「保存并应用」
开启 WiFi
默认情况下,OpenWrt 的无线功能是关闭的,需要手动开启:
- 进入「网络」→「无线」
- 点击无线设备对应的「编辑」按钮
- 勾选「启用无线」
- 在「无线安全」标签页中设置加密方式(推荐 WPA2-PSK)和密码
- 点击「保存并应用」
更改 LAN IP 地址
如果你的网络中已有其他路由器使用 192.168.1.1,需要更改 OpenWrt 的 LAN IP 避免冲突:
- 进入「网络」→「接口」→「LAN」→「编辑」
- 修改 IPv4 地址(例如改为
192.168.9.1) - 点击「保存并应用」
- 重要: 同时修改 DHCP 设置,确保分配的 IP 范围与新 LAN IP 在同一网段
更改后需要使用新 IP 重新登录管理界面。
基本网络配置
DHCP 租约
在「状态」→「DHCP 租约」中可以查看所有已连接设备及其 IP 分配情况。
网络接口
OpenWrt 支持多种接口协议:
| 协议 | 说明 |
|---|---|
| DHCP | 自动从上级路由器获取 IP,最常用 |
| Static(静态) | 手动设置 IP 地址、子网掩码和网关 |
| PPPoE | 拨号上网,需要输入运营商提供的账号密码 |
端口转发
在「网络」→「防火墙」→「端口转发」中可以设置端口转发规则,将外部请求转发到内网服务器。
无线客户端模式(中继/桥接)
OpenWrt 可以配置为无线客户端,连接到现有 WiFi 网络后将连接共享给 LAN 上的有线设备。此功能常用于扩展现有网络覆盖范围:
- 进入「网络」→「无线」
- 点击「扫描」搜索可用的 WiFi 信号
- 选择目标网络,点击「加入网络」
- 配置模式为「客户端」
- 设置无线安全信息(密码等)
- 保存并应用
系统日志
OpenWrt 存储了详细的系统日志,可以实时查看网络运行状态,包括哪些设备获取了 IP 地址、系统活动等。
在 LuCI 中通过「状态」→「系统日志」查看,或通过 SSH 执行 logread 命令。
LuCI 插件推荐
OpenWrt 的强大之处在于丰富的插件生态。以下是一些实用的 LuCI 插件:
| 插件 | 功能 |
|---|---|
| luci-app-statistics | 路由器历史数据图表,监控 CPU、RAM、网络流量等 |
| luci-app-firewall | 可视化防火墙管理 |
| luci-app-adblock | 广告过滤,自动屏蔽广告域名 |
| luci-app-upnp | UPnP 支持,自动端口映射 |
安装插件可以通过 SSH 执行:
opkg update
opkg install luci-app-statistics
或在 LuCI 的「系统」→「软件包」中搜索安装。
高级配置
旁路由配置指南
旁路由(Single-Arm Router)是软路由常见的部署模式,不需要替换主路由,只需将 OpenWrt 作为旁路设备接入现有网络。
为什么需要旁路由?
- 不破坏现有网络:主路由继续负责 DHCP 和 NAT,OpenWrt 作为旁路提供额外功能
- 灵活切换:需要时切换网关到 OpenWrt,不需要时保持原样
- 适合家庭/小企业:一台 x86 小主机 + 主路由器即可部署
旁路由网络配置
- 进入「网络」→「接口」→「LAN」→「编辑」
- 修改以下设置:
- IPv4 地址:设置为主路由同网段的 IP,如主路由
192.168.1.1,旁路由设为192.168.1.2- 子网掩码:255.255.255.0- 网关:指向主路由 IP,如192.168.1.1- DNS:使用公共 DNS 如223.5.5.5(阿里)或119.29.29.29(腾讯) - 关闭 DHCP 服务:在「DHCP 服务器」标签页中勾选「忽略此接口」
- 点击「保存并应用」
客户端使用旁路由
有两种方式让设备通过旁路由上网:
方式一:手动指定网关(推荐)
- 在需要走旁路由的设备上,手动设置网关为旁路由 IP(如 192.168.1.2)
- 适合只有部分设备需要特殊功能的场景
方式二:主路由 DHCP 指向旁路由 - 在主路由的 DHCP 设置中,将默认网关指向旁路由 IP - 所有设备自动走旁路由,适合全屋智能/广告过滤等场景
Docker 容器部署
OpenWrt 支持运行 Docker 容器,可以在路由器上部署各种服务。
安装 Docker
# 更新软件源
opkg update
# 安装 Docker 相关包
opkg install docker docker-cli luci-app-dockerman
# 启动 Docker 服务
/etc/init.d/dockerd enable
/etc/init.d/dockerd start
安装完成后,可以在 LuCI 界面中看到「Docker」菜单,通过 Web 界面管理容器。
常用 Docker 容器部署
部署 AdGuard Home(广告过滤):
docker run -d \
--name adguardhome \
--restart unless-stopped \
-p 53:53/tcp -p 53:53/udp \
-p 80:80/tcp -p 3000:3000/tcp \
-v /etc/adguardhome/work:/opt/adguardhome/work \
-v /etc/adguardhome/conf:/opt/adguardhome/conf \
adguard/adguardhome
部署 Home Assistant(智能家居):
docker run -d \
--name homeassistant \
--restart unless-stopped \
--network host \
-v /etc/homeassistant:/config \
ghcr.io/home-assistant/home-assistant:stable
部署 Aria2(下载器):
docker run -d \
--name aria2-pro \
--restart unless-stopped \
-p 6800:6800 \
-p 6880:6880 \
-e PUID=1000 -e PGID=1000 \
-e RPC_SECRET=your-secret-token \
-v /mnt/downloads:/downloads \
p3terx/aria2-pro
注意: 在路由器上运行 Docker 需要考虑硬件性能,建议至少 2GB 内存 + 8GB 存储的设备。
多拨与负载均衡
多拨(Multi-WAN)允许 OpenWrt 同时使用多个宽带连接,提升总带宽或实现冗余。
多拨配置
- 安装多拨相关包:
opkg update
opkg install luci-app-mwan3
-
进入「网络」→「接口」,添加多个 WAN 接口: - WAN1:连接宽带 1(如 eth1) - WAN2:连接宽带 2(如 eth2)
-
进入「系统」→「负载均衡(MWAN3)」配置策略: - 均衡负载:流量按比例分配到多个 WAN - 主备模式:主 WAN 故障时自动切换到备用 WAN - 按策略分流:特定 IP/端口走指定 WAN
MWAN3 均衡配置示例
# 查看 WAN 接口状态
mwan3 status
# 查看策略
mwan3 policy
广告过滤方案
OpenWrt 上实现广告过滤有多种方案:
方案一:AdBlock(轻量级)
opkg install luci-app-adblock
AdBlock 通过修改 DNS 解析,将广告域名指向 0.0.0.0,实现去广告。配置简单,资源占用低。
方案二:AdGuard Home(推荐)
通过 Docker 部署(见上文),功能更强大: - 支持自定义过滤规则 - 提供详细的查询日志 - 支持家长控制 - 可设置上游 DNS
方案三:PassWall / OpenClash
适用于需要特殊网络需求的用户,支持多种代理协议和分流规则。
# 以 PassWall 为例
opkg install luci-app-passwall
说明: 这些工具仅供技术研究和合法用途使用,请遵守当地法律法规。
配置文件结构
OpenWrt 的配置文件使用节和选项/值结构,位于 /etc/config/ 目录下。
- 通用语法:
config <type> ["<name>"]用于定义节,option <name> "<value>"用于定义选项 - 这些文件由 UCI(Unified Configuration Interface)系统解析
网络配置文件
网络接口配置存储在 /etc/config/network 中,可设置为以下协议:
none— 不配置static— 静态 IP(需要设置ipaddr和netmask)dhcp— 自动获取pppoe— 拨号上网
交换机与 VLAN 配置
OpenWrt 支持交换机配置以设置 VLAN:
- 交换机配置存储在
/etc/config/network中 - 在 Broadcom 硬件上,节名称需要为
eth0 - 每个 VLAN 命名为
vlan<n>,其中 n 是 VLAN 号 - 端口标记:
*(默认 VLAN)、u(未标记)、t(已标记) - Broadcom 硬件上的 CPU 端口为端口 5
无线配置(命令行)
WiFi 设置在 /etc/config/wireless 中配置,每个无线驱动程序在 /lib/wifi/<driver_name>.sh 中有对应配置文件。
常见配置选项:
- 设备级: distance、mode、diversity、rxantenna、txantenna、txpower
- 接口级: network、device、mode、ssid、bssid
支持的无线模式包括:接入点(AP)、客户端(Client)、Ad-hoc、监视器(Monitor)和 WDS 点对点。
802.1x 身份验证
OpenWrt 支持 802.1x 身份验证(客户端和接入点配置),EAP 类型支持 TLS、TTLS 和 PEAP。
WAN 和 WAN6 接口
- WAN: IPv4 上游连接
- WAN6: IPv6 上游连接
- LAN: 处理下游 IPv4 和 IPv6,无需单独的 LAN6 接口
Hotplug 热插拔
可以通过 hotplug 脚本根据硬件事件动态配置 OpenWrt,例如 USB 设备插入时自动挂载。
Init 脚本
所有系统服务的启动脚本位于 /etc/init.d/ 下,使用 /etc/rc.common 作为包装器。
常用命令:
/etc/init.d/<service> enable # 开机自启
/etc/init.d/<service> start # 立即启动
/etc/init.d/<service> stop # 停止服务
/etc/init.d/<service> restart # 重启服务
其他实用信息
SSH 访问
通过 SSH 可以完成 OpenWrt 的命令行管理:
ssh root@192.168.1.1
SSH 访问需要在「系统」→「管理权」→「SSH 访问」中开启。
文本编辑器
vi 和 nano 可用于在命令行中编辑配置文件。推荐使用 nano,对新手更友好:
opkg install nano
nano /etc/config/network
Windows 管理工具
从 Windows 管理 OpenWrt 可以使用以下工具:
- PuTTY — SSH 客户端
- WinSCP — SFTP 文件传输
- SmarTTY — 现代化 SSH 客户端
- cmder — 增强版命令行
开发和自定义(进阶)
📌 本节面向开发者,如果你只是把 OpenWrt 作为路由器使用,可以跳过本节。
构建系统
OpenWrt 构建系统使开发人员能够使用交叉编译创建自定义固件映像。
获取源代码
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
主要目录结构:
| 目录 | 说明 |
|---|---|
tools/ |
构建工具 |
toolchain/ |
交叉编译工具链 |
package/ |
软件包定义 |
target/ |
目标平台配置 |
配置和构建
./scripts/feeds update -a # 更新软件源
./scripts/feeds install -a # 安装软件源
make menuconfig # 配置构建:选择平台、工具链和软件包
make -j$(nproc) # 开始编译
软件包
OpenWrt 固件中的几乎所有内容都是 .ipk 格式的软件包,可以自由添加或删除。
创建自定义软件包
通过创建 Makefile 来定义一个新的软件包:
include $(TOPDIR)/rules.mk
PKG_NAME:=my-package
PKG_VERSION:=1.0
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/my-package
SECTION:=utils
CATEGORY:=Utilities
TITLE:=My custom package
endef
define Package/my-package/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/my-script $(1)/usr/bin/
endef
$(eval $(call BuildPackage,my-package))
可配置选项包括:PKG_NAME、PKG_VERSION、PKG_RELEASE、PKG_SOURCE、PKG_SOURCE_URL、PKG_MD5SUM 等。
创建内核模块软件包
通过定义 KernelPackage 节来为内核模块创建软件包,可配置选项包括:TITLE、DESCRIPTION、SUBMENU、KCONFIG、FILES 和 AUTOLOAD。
故障排除
# 诊断软件包是否显示在 menuconfig 中
make -C package/<name> DUMP=1 V=99
# 清理特定软件包
make package/<name>/clean V=99
# 安装特定软件包
make package/<name>/install V=99
添加新平台支持
将 OpenWrt 移植到新设备的技术包括:
- 操作系统指纹识别(nmap 等)
- 端口扫描
- 分析二进制固件映像
- 检查闪存容量
- 连接串口调试
找到设备信息和开发工具包后,可以为 OpenWrt 调整内核补丁和二进制驱动,开发新的闪存映射驱动和固件构建工具。
报告 Bug
OpenWrt 使用 GitHub Issues 进行 Bug 报告和功能请求。开发者可以关闭、接受和修复问题工单。
对比:OpenWrt vs DD-WRT vs pfSense vs MikroTik RouterOS
| 维度 | OpenWrt | DD-WRT | pfSense | MikroTik RouterOS |
|---|---|---|---|---|
| 开源 | ✅ 完全开源(GPL) | ✅ 开源 | ✅ 开源(BSD) | ❌ 商业软件 |
| 价格 | 免费 | 免费 | 免费 | $45-295(按授权等级) |
| 硬件支持 | 极广泛(1000+ 设备) | 广泛(700+ 设备) | 仅 x86/APU | 仅 MikroTik 硬件 |
| 插件生态 | 1000+ 软件包 | 有限 | 丰富(FreeBSD ports) | 内置功能丰富 |
| Web 界面 | LuCI(轻量) | 自研 Web 界面 | 专业 Web 界面 | WinBox / WebFig |
| Docker 支持 | ✅ 可运行 Docker | ❌ | ⚠️ 有限 | ❌ |
| 学习曲线 | 中等 | 中等 | 较陡 | 陡峭 |
| 适合场景 | 软路由/家庭/小企业 | 家用路由 | 企业防火墙 | 企业网络/ISP |
| 社区活跃度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
选择建议: - OpenWrt — 软路由刷机首选,硬件兼容性最广,插件生态最丰富 - DD-WRT — 老牌子路由固件,适合不想折腾但需要比原厂更强功能的用户 - pfSense — 专业级防火墙/路由方案,适合企业网络 - MikroTik RouterOS — 企业网络/ISP 级别,功能强大但需要专业培训
OpenWrt 常见问题 FAQ
Q1: OpenWrt 是什么?和普通路由器固件有什么区别?
A: OpenWrt 是一个基于 Linux 内核的开源路由器操作系统。与普通路由器固件的最大区别在于: - 完全可定制:OpenWrt 提供带软件包管理的完整文件系统,可以自由安装/卸载软件 - 开源透明:代码完全公开,无后门,社区驱动开发 - 硬件兼容性广:支持超过 1000 种路由器设备 - 高级功能:支持 Docker 容器、VPN、QoS、广告过滤、软路由等
Q2: 哪些路由器可以刷 OpenWrt?
A: OpenWrt 支持非常广泛的硬件设备: - 家用路由器:TP-Link、Netgear、Linksys、ASUS、Xiaomi 等 - x86 软路由:Intel/AMD x86 平台的小主机、工控机 - 开发板:Raspberry Pi、Banana Pi 等 SBC
建议访问 OpenWrt 固件选择器 输入你的设备型号查询是否支持。
Q3: 刷 OpenWrt 会变砖吗?如何救砖?
A: 刷机有风险,但遵循正确步骤通常安全: - 降低风险:使用正确的固件版本、刷写过程不断电、先备份原厂固件 - 救砖方法: 1. TFTP 恢复:大多数路由器支持 TFTP 恢复模式 2. 串口调试:通过 TTL 串口连接修复 3. CFE/Bootloader 模式:进入 bootloader 重新刷写 4. 编程器硬刷:拆机用编程器直接写入 flash 芯片
建议: 刷机前先备份原厂固件,并了解你设备的救砖方法。
Q4: OpenWrt 支持 Docker 吗?
A: 是的,OpenWrt 支持运行 Docker 容器。需要安装 dockerd 和相关依赖:
opkg install docker docker-cli luci-app-dockerman
建议在至少 2GB 内存的设备上运行 Docker 容器,以确保稳定性和性能。
Q5: OpenWrt 和 LEDE 是什么关系?
A: LEDE(Linux Embedded Development Environment)是 OpenWrt 的一个分支。2016 年,部分开发者因开发流程分歧创建了 LEDE 项目。2018 年,LEDE 和 OpenWrt 重新合并,现在统一使用 OpenWrt 名称。你现在看到的 OpenWrt 实际上包含了 LEDE 时期的改进成果。如果你在旧资料中看到 LEDE,实际上就是 OpenWrt。

