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 的设备

方案一:旧路由器改造(零成本)

如果你家里有淘汰的路由器,先检查兼容性:

  1. 访问 OpenWrt 硬件数据库
  2. 输入路由器品牌和型号
  3. 查看支持状态: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 界面(最简单)

  1. 下载对应型号的 OpenWrt 固件镜像(.bin 文件) - 前往 OpenWrt Firmware Selector - 输入设备型号,选择最新版本
  2. 登录路由器管理页面(通常是 192.168.1.1
  3. 找到「系统工具 → 固件升级」
  4. 上传 .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 IP192.168.1.1
  • Web 界面http://192.168.1.1(LuCI)
  • SSHssh 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. 设备变砖怎么办

  1. Breed 用户:按住 Reset 键上电,进入 Breed Web 恢复界面重新刷入
  2. TTL 串口用户:通过串口进入 U-Boot,重新刷入固件
  3. TFTP 恢复:部分路由器支持 TFTP 恢复模式,具体方法搜索你的型号

总结

OpenWrt 是开发者折腾网络的最佳开源平台。从刷旧路由器到搭建 x86 软路由,从基础的 DHCP/防火墙配置到 Docker + 智能家居,OpenWrt 让每一台路由器都变成一台强大的 Linux 服务器。

本文涉及的关键资源: - OpenWrt 官网 - 固件选择器 - 硬件数据库 - OpenWrt 论坛 - GitHub 仓库

下一步推荐阅读: - Ventoy:制作多系统启动 U 盘的神器 — 刷机前的系统盘制作工具 - Linux 文件格式详解 — 理解固件文件格式

如果你觉得这篇文章有帮助,欢迎分享给更多开发者!