OpenWrt 完全指南 2026:旧路由器改软路由的完整实战教程

2026-06-14 08:19:23

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 文件格式详解 — 理解固件文件格式

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