OpenWrt 是什么?
OpenWrt 是一个面向嵌入式设备的 Linux 操作系统,专为路由器、网关等网络设备设计。与普通路由器固件最大的区别在于:
- 完整的包管理系统(opkg):像 Ubuntu 用
apt一样,随时安装/卸载软件 - 可写的文件系统:不再受限于厂商预装的封闭功能
- 模块化设计:需要什么装什么,不臃肿
- 开源免费:GPL-2.0 许可证,GitHub 上有 超过 2 万个 Star
简单说,刷了 OpenWrt 的路由器就是一台小型 Linux 服务器,你可以用它做 DHCP 服务器、防火墙、DNS 服务器、广告拦截、VPN 网关、智能家居中控,甚至跑 Docker 容器。
OpenWrt vs 普通路由器固件
| 特性 | 普通路由器固件 | OpenWrt |
|---|---|---|
| 文件系统 | 只读(squashfs) | 可读写 |
| 软件安装 | 厂商预装,无法扩展 | opkg 包管理,数千个软件包 |
| 自定义配置 | 有限 | 完全控制(SSH + LuCI Web 界面) |
| 更新周期 | 厂商决定(可能几年不更新) | 社区维护,持续更新 |
| 源代码 | 通常闭源 | 完全开源(GPL-2.0) |
OpenWrt vs DD-WRT vs Padavan
OpenWrt 是生态最丰富的开源路由器系统,相比之下: - DD-WRT:历史悠久,但包管理不如 OpenWrt 灵活 - Padavan(老毛子):在国内流行,但主要面向特定芯片,定制性有限 - LEDE:2018 年已与 OpenWrt 合并,不再有独立版本
硬件选择:2026 年适合刷 OpenWrt 的设备
方案一:旧路由器改造(零成本)
如果你家里有淘汰的路由器,先检查兼容性:
- 访问 OpenWrt 硬件数据库
- 输入路由器品牌和型号
- 查看支持状态:
Supported(完美支持)/Technically available(可用但需折腾)/Unsupported(不支持)
常见支持良好的路由器: - 小米 Redmi AX6S / AX3000T - 斐讯 K2P / K3 - 网件 Netgear R6220 / R7800 - 华硕 ASUS RT-AC58U / RT-ACRH17 - TP-Link Archer C7 v2/v4/v5
方案二:专用软路由设备(推荐)
如果你打算认真玩 OpenWrt,一台 x86 软路由是最佳选择:
| 设备 | 价格区间 | 特点 |
|---|---|---|
| Intel N100 迷你主机 | ¥300-600 | 低功耗(6W TDP),性能过剩 |
| 畅网 N5105 / N6005 | ¥400-800 | 4 网口,软路由经典之选 |
| 倍控 J4125 工控机 | ¥500-900 | 6 网口,稳定可靠 |
| 旧笔记本 | ¥0 | 自带 UPS(电池),省电 |
2026 年推荐:Intel N100 迷你主机性价比最高。TDP 仅 6W,四核四线程,跑 OpenWrt + Docker 游刃有余,闲鱼价 300 元左右。
方案三:开发板
- Raspberry Pi 4 / 5:OpenWrt 官方支持,适合入门学习
- NanoPi R4S / R5S:友善出品,双网口,软路由热门之选
- RK3568 / RK3588 开发板:性能强劲,但需要一定动手能力
从零刷机教程
⚠️ 警告:刷机有风险,操作不当可能导致路由器变砖。建议先搜索你的路由器型号的具体刷机教程。
Step 1:备份原厂固件
刷机前一定要备份!一旦出问题还能恢复。
通过 SSH 备份(如果路由器已开启 SSH):
# SSH 登录路由器
ssh root@192.168.1.1
# 备份整个固件(通过 TFTP 发送到本地电脑)
cat /dev/mtd0 > /tmp/original_firmware.bin
# 然后从路由器下载这个文件
通过 TTL 串口备份(通用方法):
# 需要 USB 转 TTL 模块(CH340/CP2102,约 ¥10)
# 连接后,在电脑上运行
minicom -D /dev/ttyUSB0 -b 115200
# 进入 U-Boot 后执行备份命令
Step 2:刷入 OpenWrt
方法 A:通过 Web 界面(最简单)
- 下载对应型号的 OpenWrt 固件镜像(
.bin文件) - 前往 OpenWrt Firmware Selector - 输入设备型号,选择最新版本 - 登录路由器管理页面(通常是
192.168.1.1) - 找到「系统工具 → 固件升级」
- 上传
.bin文件,等待自动重启
方法 B:通过 Breed 引导(推荐,防变砖)
Breed 是一个不死 U-Boot 引导程序,刷了 Breed 后基本告别变砖。
# 1. 先刷入 Breed(需要路由器已开启 SSH 或通过 TTL)
# breed 文件通常是 .bin 格式
# 2. 按住路由器 Reset 键上电,进入 Breed Web 界面
# 浏览器访问 192.168.1.1
# 3. 在 Breed 界面中选择 OpenWrt 固件并刷入
# Breed 支持恢复,即使刷错也能重新刷
方法 C:x86 软路由通过 U 盘安装
# 1. 下载 x86 版本的 OpenWrt 镜像(combined-ext4.img.gz)
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. 写入 U 盘(假设 U 盘是 /dev/sdb,请务必确认!)
sudo dd if=openwrt-23.05.3-x86-64-generic-ext4-combined.img of=/dev/sdb bs=4M status=progress
# 4. 从 U 盘启动软路由,OpenWrt 会自动写入内置硬盘
Step 3:首次配置
刷入成功后,OpenWrt 默认:
- LAN IP:
192.168.1.1 - Web 界面:
http://192.168.1.1(LuCI) - SSH:
ssh root@192.168.1.1(无密码)
# SSH 登录(首次无密码,直接回车)
ssh root@192.168.1.1
# 设置 root 密码
passwd
# 更新软件包列表
opkg update
# 安装中文语言包
opkg install luci-i18n-base-zh-cn
# 刷新 Web 界面,界面变为中文
Step 4:网络基础配置
# 编辑网络配置文件
vi /etc/config/network
# 典型 LAN 配置示例:
# config interface 'lan'
# option type 'bridge'
# option ifname 'eth0'
# option proto 'static'
# option ipaddr '192.168.2.1'
# option netmask '255.255.255.0'
# 重启网络服务
/etc/init.d/network restart
核心功能实战
1. DHCP 服务器配置
OpenWrt 默认开启 DHCP,你可以自定义地址池:
# 编辑 DHCP 配置
vi /etc/config/dhcp
# 关键配置项:
# config dhcp 'lan'
# option interface 'lan'
# option start '100' # 起始地址
# option limit '150' # 地址池大小
# option leasetime '12h' # 租期
# option ra 'server' # IPv6 RA 模式
# option dhcpv6 'server' # IPv6 DHCP
# 重启 DHCP 服务
/etc/init.d/dnsmasq restart
设置静态 IP 分配(给特定设备固定 IP):
# 在 /etc/config/dhcp 中添加:
# config host
# option name 'nas'
# option mac 'AA:BB:CC:DD:EE:FF'
# option ip '192.168.2.100'
2. 防火墙配置
OpenWrt 的防火墙基于 iptables/nftables,默认规则:
- LAN 区域:允许所有入站/出站
- WAN 区域:拒绝入站,允许出站
- 转发规则:LAN → WAN 允许,WAN → LAN 拒绝
开放特定端口(比如 NAS 管理界面):
# 通过 LuCI Web 界面:网络 → 防火墙 → 端口转发
# 或者命令行:
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-NAS'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest_port='8080'
uci set firewall.@rule[-1].target='ACCEPT'
uci set firewall.@rule[-1].proto='tcp'
uci commit firewall
/etc/init.d/firewall restart
3. DNS 配置
使用 DNS 加速(SmartDNS):
# 安装 SmartDNS
opkg install smartdns
# 配置 SmartDNS 使用多个 DNS 上游服务器
vi /etc/smartdns/smartdns.conf
# 添加上游 DNS:
# server 223.5.5.5 -group alidns
# server 119.29.29.29 -group dnspod
# server 8.8.8.8 -group google
# 设置监听端口
# bind :6053
# 设置 DNS 缓存
# cache-size 512
# 重启服务
/etc/init.d/smartdns enable
/etc/init.d/smartdns restart
4. 广告拦截(AdGuard Home / Adbyby)
方案 A:安装 AdGuard Home(推荐)
# 通过 opkg 安装
opkg install adguardhome
# 或者手动安装最新版:
wget https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_armv7.tar.gz
tar -xzf AdGuardHome_linux_armv7.tar.gz
./AdGuardHome -s install
# 浏览器访问 http://192.168.2.1:3000 完成初始化
方案 B:使用 Adbyby(更轻量)
opkg install adbyby
/etc/init.d/adbyby enable
/etc/init.d/adbyby start
5. VPN 服务器
搭建 WireGuard VPN(2026 年最推荐的 VPN 方案):
# 安装 WireGuard
opkg install wireguard-tools luci-app-wireguard
# 在 WAN 口生成 WireGuard 配置
wg genkey > /etc/wireguard/server_private.key
wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key
# 编辑配置
vi /etc/wireguard/wg0.conf
配置文件示例:
[Interface]
PrivateKey = <你的服务器私钥>
Address = 10.8.0.1/24
ListenPort = 51820
# 客户端 1
[Peer]
PublicKey = <客户端公钥>
AllowedIPs = 10.8.0.2/32
# 启动 WireGuard
wg-quick up wg0
# 设置为开机启动
/etc/init.d/wireguard enable
进阶玩法
Docker 容器支持
OpenWrt 可以运行 Docker,扩展性无限!
# 安装 Docker
opkg install docker docker-compose luci-app-dockerman
# 启动 Docker 服务
/etc/init.d/dockerd enable
/etc/init.d/dockerd start
# 验证安装
docker --version
docker info
实战:在 OpenWrt 上跑 Home Assistant(智能家居):
# 创建持久化存储目录
mkdir -p /srv/homeassistant
# 拉取并运行
docker run -d \
--name homeassistant \
--restart=unless-stopped \
--network=host \
-v /srv/homeassistant:/config \
homeassistant/home-assistant:stable
# 浏览器访问 http://192.168.2.1:8123
实战:部署 AdGuard Home(通过 Docker):
docker run -d \
--name adguardhome \
--restart=unless-stopped \
--network=host \
-v /srv/adguard/work:/opt/adguardhome/work \
-v /srv/adguard/conf:/opt/adguardhome/conf \
adguard/adguardhome:latest
内网穿透
使用 frp 实现内网穿透:
# 安装 frp 客户端
opkg install frp
# 配置 frpc
vi /etc/frpc/frpc.toml
serverAddr = "你的 frp 服务器 IP"
serverPort = 7000
[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
# 启动 frp
/etc/init.d/frpc enable
/etc/init.d/frpc start
流量监控
# 安装 nlbwmon(轻量级流量统计)
opkg install nlbwmon luci-app-nlbwmon
# 或者安装更强大的 BanDaWidth
opkg install bandwidth
# 安装实时流量监控(iftop 的 OpenWrt 版本)
opkg install iftop
# 实时查看哪个 IP 占用最多带宽
iftop -i br-lan
IPv6 支持
OpenWrt 对 IPv6 的支持非常成熟:
# 启用 IPv6(通常在 LuCI 中操作更直观)
# 网络 → 接口 → LAN → 编辑 → DHCP 服务器 → IPv6 设置
# 命令行方式:
uci set network.lan6='interface'
uci set network.lan6.device='@device'
uci set network.lan6.proto='dhcpv6'
uci commit network
/etc/init.d/network restart
日常维护
固件更新
# 方式 1:通过 LuCI Web 界面
# 系统 → 备份/升级 → 下载新固件 → 刷入
# 方式 2:命令行更新
sysupgrade -v /tmp/openwrt-xxx-squashfs-sysupgrade.bin
# 保留配置更新(推荐):
sysupgrade -c /tmp/openwrt-xxx-squashfs-sysupgrade.bin
# 不保留配置(全新安装):
sysupgrade -n /tmp/openwrt-xxx-squashfs-sysupgrade.bin
备份与恢复配置
# 备份当前配置
sysupgrade -b /tmp/config-backup.tar.gz
# 从备份恢复
sysupgrade -r /tmp/config-backup.tar.gz
# 查看备份内容
tar tzf /tmp/config-backup.tar.gz
常用 opkg 命令
# 更新软件源
opkg update
# 搜索软件包
opkg find luci-app-*
# 安装软件包
opkg install <包名>
# 列出已安装的包
opkg list-installed
# 卸载软件包
opkg remove <包名>
# 清理缓存
opkg clean
常见问题排查
1. 刷完 OpenWrt 无法上网
# 检查 WAN 口是否获取到 IP
ifconfig eth1
# 检查默认网关
route -n
# 测试 DNS
nslookup baidu.com
# 手动设置 DNS
vi /etc/resolv.conf
# 添加:nameserver 223.5.5.5
# 重启网络
/etc/init.d/network restart
2. LuCI Web 界面无法访问
# 检查 uhttpd 服务状态
/etc/init.d/uhttpd status
# 重启 Web 服务
/etc/init.d/uhttpd restart
# 检查防火墙规则
iptables -L -n
3. WiFi 无法启动
# 检查 WiFi 配置
wifi status
# 重新生成默认配置
wifi config
# 编辑 WiFi 配置
vi /etc/config/wireless
# 启用 WiFi
uci set wireless.@wifi-device[0].disabled=0
uci commit wireless
wifi reload
4. 设备变砖怎么办
- Breed 用户:按住 Reset 键上电,进入 Breed Web 恢复界面重新刷入
- TTL 串口用户:通过串口进入 U-Boot,重新刷入固件
- TFTP 恢复:部分路由器支持 TFTP 恢复模式,具体方法搜索你的型号
总结
OpenWrt 是开发者折腾网络的最佳开源平台。从刷旧路由器到搭建 x86 软路由,从基础的 DHCP/防火墙配置到 Docker + 智能家居,OpenWrt 让每一台路由器都变成一台强大的 Linux 服务器。
本文涉及的关键资源: - OpenWrt 官网 - 固件选择器 - 硬件数据库 - OpenWrt 论坛 - GitHub 仓库
下一步推荐阅读: - Ventoy:制作多系统启动 U 盘的神器 — 刷机前的系统盘制作工具 - Linux 文件格式详解 — 理解固件文件格式
如果你觉得这篇文章有帮助,欢迎分享给更多开发者!