OpenWRT 25.12 命令行完整配置指南

📡 OpenWRT 从刷机到上网的全流程命令大全

Posted by Tigress Feathermoon💄 on April 25, 2025
   

📡 OpenWRT 软件管理命令大全

前言

刚刚刷好OpenWRT系统?别急,跟着这个指南一步步来。我会带你从最基础的网络设置,到WiFi配置,再到各种高级功能,整个过程中我都会告诉你哪些配置需要重启服务才能生效。让我们开始吧!


第一步:系统和网络基础配置

刚刷好系统,首先要配置一些最基本的东西:网络 IP、主机名、时区。这些都是系统运行的基础,必须先设置好。

设置 LAN 口 IP 地址

刚刷好系统的路由器,首先要设置一下LAN口的IP,这样才能方便管理。OpenWRT 25.12 使用 CIDR 表示法(/24 表示子网掩码 255.255.255.0)。如果你想改成 192.168.1.3(子网掩码 255.255.255.0),就用下面的命令:

uci set network.lan.ipaddr='192.168.1.3/24'
uci commit network
/etc/init.d/network restart

或者分开设置(兼容性更好):

uci set network.lan.ipaddr='192.168.1.3'
uci set network.lan.netmask='255.255.255.0'
uci commit network
/etc/init.d/network restart

💡 提示: 执行 network restart 后,你的SSH连接会短暂断开,记得用新IP地址重新连接。等个10秒左右就能重新登陆了。

设置系统信息(时区、主机名等)

网络配置好了,顺便把系统的基本信息也设置一下。包括主机名和时区,这样日志和系统时间才能正确显示。

设置主机名、时区和时区名称:

# 设置路由器的主机名(显示在网络中和管理界面)
uci set system.@system[0].hostname='OpenWrt'

# 设置时区为 CST-8(中国标准时间)
uci set system.@system[0].timezone='CST-8'

# 设置时区数据库(Asia/Taipei 是中国时区的标准值)
uci set system.@system[0].zonename='Asia/Taipei'

保存配置:

uci commit system

让设置立即生效(重启系统服务):

/etc/init.d/system reload

💡 时区说明:

  • CST-8 是时区偏移量(中国在 UTC+8)
  • Asia/Taipei 是标准的时区数据库名称
  • 这样设置后,系统时间和日志都会正确显示中国时间

其他常见时区设置参考:

地区 timezone zonename
中国 CST-8 Asia/ShanghaiAsia/Taipei
香港 HKT-8 Asia/Hong_Kong
台湾 CST-8 Asia/Taipei
新加坡 SGT-8 Asia/Singapore
日本 JST-9 Asia/Tokyo
泰国 ICT-7 Asia/Bangkok
美国(东部) EST5EDT America/New_York
欧洲(西部) WET0WEST Europe/London

提示: 使用 zonename 的标准值更准确(会自动处理夏令时等),推荐优先使用。

设置 Root 密码(重要!用于 SSH 登陆)

现在设置管理员密码,这样才能保护你的路由器安全。没有设置密码的话,任何人都能 SSH 连接上来。

方式一:直接设置密码(最简单)

passwd

执行后会提示输入新密码,输入两次确认即可。

方式二:用命令设置密码(适合脚本自动化)

# 方式 2a:使用 OpenWrt 内置的加密函数
echo -e 'YourPassword123\nYourPassword123' | passwd

# 方式 2b:直接设置哈希密码(需要先生成哈希值)
# 先生成密码哈希
HASH=$(openssl passwd -crypt 'YourPassword123')
# 然后设置
uci set system.@system[0].root_password="$HASH"
uci commit system

⚠️ 重要提示:

  • 密码最好设置为 12 位以上,包含大小写字母、数字和符号
  • 不要使用简单密码,否则容易被暴力破解
  • 设置好后记住密码,忘记了找回会很麻烦

设置系统日志大小

OpenWRT 的日志默认写到内存里,而不是闪存。这样可以避免频繁写入闪存导致硬件磨损。如果你的路由器内存有限,可以限制日志的大小。这里设置日志最多占用 8KB 内存空间:

# 设置日志大小为 8KB(8 × 1024 字节,写到内存中)
uci set system.@system[0].log_size='8'

# 如果想要更大的日志(比如 16KB)
# uci set system.@system[0].log_size='16'

# 如果想要很小的日志以节省内存(比如 4KB)
# uci set system.@system[0].log_size='4'

# 提交配置
uci commit system

# 重启日志服务使配置生效
/etc/init.d/log restart

# 查看日志内容验证
logread | head

💡 日志大小建议(单位:KB,写到内存):

  • 8 - 默认推荐,占用 8KB 内存,适合大多数路由器
  • 16 - 占用 16KB 内存,想保留更多日志的选择
  • 4 - 占用 4KB 内存,内存极其有限的路由器
  • 32 - 占用 32KB 内存,需要详细日志记录的选择

重要提示: 日志写到内存中,重启路由器后日志会丢失。这是为了保护闪存不被频繁写入。

查看当前日志大小设置:

# 查看日志大小设置
uci get system.@system[0].log_size

# 查看当前日志内容
logread

# 只看日志的最后 10 行
logread | tail -10

# 看日志的最前 10 行
logread | head -10

# 查看日志文件位置(内存中)
ls -lh /var/log/

设置 NTP 时间服务器

互联网上有很多 NTP 服务器可以为路由器提供准确的时间。设置多个服务器可以提高可靠性(主服务器故障时自动切换到备用)。

设置 NTP 服务器列表(正确方式):

# 方式一:删除旧配置后逐个添加(推荐,完全替换)
# 1. 先删除原有的 NTP 服务器列表
uci delete system.ntp.server

# 2. 逐个添加新的 NTP 服务器(使用 add_list)
uci add_list system.ntp.server='0.openwrt.pool.ntp.org'
uci add_list system.ntp.server='ntp.aliyun.com'
uci add_list system.ntp.server='time.google.com'
uci add_list system.ntp.server='time.cloudflare.com'

# 3. 提交配置
uci commit system

# 4. 重启时间服务
/etc/init.d/sysntpd restart

⚠️ 重要提示: uci set 命令不支持在一行中设置多个列表值,必须使用 uci add_list 命令逐个添加。

为什么要用 add_list

  • uci set 只能设置单个值(标量)
  • uci add_list 用于列表类型的配置项(可以有多个值)
  • NTP 服务器列表就是这样的列表类型
  • 如果直接用 set 传入多个值会报错:”Usage: uci…”

三种 UCI 命令的使用场景:

  • uci set - 设置单个值(如主机名、日志大小等)
  • uci add_list - 添加到列表(如 NTP 服务器列表、防火墙规则等)
  • uci delete - 删除配置(删除单个值或整个列表)

💡 NTP 服务器说明:

  • 0.openwrt.pool.ntp.org - OpenWRT 官方推荐,国际通用
  • ntp.aliyun.com - 阿里云 NTP,国内速度快
  • time.google.com - Google 时间服务,可靠性高
  • time.cloudflare.com - Cloudflare 时间服务,也很稳定

其他常用的 NTP 服务器:

服务商 服务器地址 区域
OpenWRT 0.openwrt.pool.ntp.org3.openwrt.pool.ntp.org 国际
中国(阿里云) ntp.aliyun.com 国内
中国(腾讯云) time1.cloud.tencent.com 国内
中国(华为云) ntsc1.aliyun.com 国内
Google time.google.com 国际
Cloudflare time.cloudflare.com 国际
NTP Pool(全球) pool.ntp.org 国际
Apple time.apple.com 国际
Microsoft time.windows.com 国际

只设置单个 NTP 服务器:

如果你只想使用一个服务器(比如国内的阿里云):

# 1. 先删除原有的 NTP 服务器列表
uci delete system.ntp.server

# 2. 添加单个 NTP 服务器
uci add_list system.ntp.server='ntp.aliyun.com'

# 3. 提交配置
uci commit system

# 4. 重启时间服务
/etc/init.d/sysntpd restart

简化写法(如果只有一个服务器,也可以用 set):

# 这种方式对单个值可行
uci set system.ntp.server='ntp.aliyun.com'
uci commit system
/etc/init.d/sysntpd restart

查看当前 NTP 配置和系统时间:

# 查看 NTP 服务器设置
uci get system.ntp.server

# 查看 NTP 服务状态
/etc/init.d/sysntpd status

# 查看系统当前时间(格式:年月日 时:分:秒)
date

# 查看更详细的时间信息
date '+%Y-%m-%d %H:%M:%S %Z'

# 查看时间戳(秒数)
date +%s

手动设置系统时间

如果 NTP 无法同步或你需要临时修改时间,可以手动设置:

# 方式一:直接设置时间(格式:YYYY-MM-DD HH:MM:SS)
date -s "2026-07-23 14:30:00"

# 方式二:设置时间戳(秒数)
date -s @1689079800

# 方式三:只改变小时和分钟(保持日期不变)
# 设置为 14:30:00
date -s "14:30:00"

⚠️ 手动设置时间提示:

  • 手动设置的时间不会被保存到硬件时钟(RTC),重启后会重置
  • 设置时间后,让 NTP 自动同步到准确的时间
  • 建议用 NTP 自动同步而不是手动设置

⚠️ NTP 同步提示:

  • NTP 同步通常需要 30-60 秒
  • 如果时间差异很大(超过一小时),NTP 可能无法同步
  • 解决方案: 先用 date -s 手动设置一个接近的时间,再让 NTP 精确同步
  • 如果还是无法同步,检查网络连接:ping time.google.com

备份和恢复配置(重要!建议先做)

都说”常在河边走,哪有不湿鞋”。所以在开始配置之前,先学会备份。万一后面配置出了问题,备份可以救你一命!

在路由器上直接备份

最简单的方法,直接在路由器上打包备份:

sysupgrade -b /tmp/backup-OpenWrt-$(date +%Y-%m-%d).tar.gz

这个命令会在 /tmp 目录下生成一个日期命名的备份文件(比如 backup-OpenWrt-2026-07-23.tar.gz)。

下载备份文件到电脑

方法一:用 scp 下载

scp -O [email protected]:/tmp/backup-OpenWrt-*.tar.gz ~/Downloads/

方法二:管道直接下载(推荐)

这个方法最直接,直接备份并下载,一条命令搞定:

ssh [email protected] "sysupgrade -b -" > ~/Downloads/backup-OpenWrt-$(date +%Y-%m-%d).tar.gz

💡 提示: 把这个文件妥善保存。建议放在云盘里备份,真的救过急!

恢复配置

如果出问题了,或者想把配置复制到另一台路由器,用恢复命令:

第一步:上传备份文件到路由器

scp -O ~/Downloads/backup-OpenWrt-2026-07-23.tar.gz [email protected]:/tmp/

第二步:恢复配置

sysupgrade -r /tmp/backup-OpenWrt-2026-07-23.tar.gz

恢复完成后,路由器会自动重启。等个30秒就能用新IP重新连接了。

⚠️ 警告: 恢复配置会覆盖现在的设置,如果不确定,先做好当前配置的备份!


第二步:检查和配置无线硬件

查看无线接口信息

现在我们来看看这个路由的无线硬件。OpenWRT会把各个频段(2.4G、5G等)识别为不同的射频芯片,我们需要先确认一下硬件配置。

uci show wireless

这个命令会显示所有的无线配置信息。你会看到类似这样的输出结构:

wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.hwmode='11g'
wireless.radio0.disabled='1'
...
wireless.default_radio0=wifi-iface
wireless.default_radio0.device='radio0'
wireless.default_radio0.network='lan'
wireless.default_radio0.disabled='0'
...

关键要点: 如果输出中有 radio0radio1,说明有两个射频,既有2.4G又有5G。

安装 WiFi 驱动(如果需要)

有些系统可能驱动不完整,特别是刚刷好的时候。在 OpenWRT 25.12 中,推荐安装最新的驱动。首先更新软件源,然后安装WiFi驱动:

apk update
apk add wpad-basic-mbedtls

ℹ️ WiFi 驱动选择指南:

OpenWRT 25.12 的默认推荐是 wpad-basic-mbedtls,它在低配置和中配置路由器上表现最好,占用资源少。

如果你的路由器硬件配置比较好(比如有足够的内存和 CPU),可以用功能更多的版本:

  • wpad-openssl - 加密库使用 OpenSSL,支持更多高级功能
  • wpad-wolfssl - 加密库使用 WolfSSL,性能和功能介于两者之间

怎么选? 保险起见,先用默认的 wpad-basic-mbedtls。如果你的硬件足够好且需要高级功能,再换成 wpad-openssl


第三步:配置WiFi网络

好了,硬件确认没问题。现在该配置WiFi了。我们分别设置2.4G和5G两个频段。为了效率,先把所有配置都设置好,最后一次性重启WiFi服务。

配置 2.4G WiFi

# 启用 2.4G WiFi 接口
uci set wireless.default_radio0.disabled='0'

# 设置 SSID(WiFi名称)
uci set wireless.default_radio0.ssid='YourSSID-2G'

# 设置加密方式
# psk2 是 WPA2-PSK,比较稳定,大多数设备都支持
uci set wireless.default_radio0.encryption='psk2'

# 设置 WiFi 密码(至少 8 个字符)
uci set wireless.default_radio0.key='YourPassword123'

# 设WiFi信道(2.4G通常用1-13,信道11是中国常用)
uci set wireless.radio0.channel='11'

# 设置频宽为 40MHz(2.4G 最多就这样了)
uci set wireless.radio0.htmode='HT40'

💡 2.4G 信道选择: 中国常用信道是 1、6、11(互不干扰)。干扰多的话可以试试 13。

配置 5G WiFi

接下来配置5G。5G的优势是速度快、干扰少,适合视频或大文件传输。

# 启用 5G WiFi 接口
uci set wireless.default_radio1.disabled='0'

# 设置 SSID(WiFi名称)
uci set wireless.default_radio1.ssid='YourSSID-5G'

# 设置加密方式
# 5G 可以用更安全的 WPA3-SAE(sae)
uci set wireless.default_radio1.encryption='sae'

# 设置 WiFi 密码(至少 8 个字符)
uci set wireless.default_radio1.key='YourPassword123'

# 设置5G信道
# 中国允许的5G信道:36, 40, 44, 48, 149, 153, 157, 161, 165
# 建议用 36、44、149、157、165(这些信道干扰最少)
uci set wireless.radio1.channel='36'

# 设置频宽(VHT80 是 80MHz,能跑满 WiFi 5 速度;VHT160 是 160MHz,更快但可能不稳定)
uci set wireless.radio1.htmode='VHT80'

💡 5G 信道和频宽选择:

  • 信道 36-48 和 149-165 互不干扰,建议选其中之一
  • VHT80(80MHz)最稳定,也能发挥 WiFi 5 的性能
  • VHT160(160MHz)最快,但需要硬件支持且干扰敏感

WiFi 6(802.11ax)频宽设置

如果你的路由器支持 WiFi 6,可以用下面的命令配置更高的频宽。WiFi 6 使用 HE 模式:

# WiFi 6 - 80MHz 频宽(推荐)
uci set wireless.radio1.htmode='HE80'

# WiFi 6 - 160MHz 频宽(更快但需要硬件支持)
uci set wireless.radio1.htmode='HE160'

# 应用配置
uci commit wireless
wifi reload

💡 WiFi 6 频宽说明:

  • HE80 - 80MHz,最稳定,大多数 WiFi 6 设备都支持
  • HE160 - 160MHz,理论速度更快,但需要高端硬件和好的环境

WiFi 7(802.11be)频宽设置

如果你有最新的支持 WiFi 7 的路由器,可以用下面的命令配置。WiFi 7 使用 EHT 模式:

# WiFi 7 - 80MHz 频宽
uci set wireless.radio1.htmode='EHT80'

# WiFi 7 - 160MHz 频宽(推荐)
uci set wireless.radio1.htmode='EHT160'

# WiFi 7 - 320MHz 频宽(最快!但需要最新硬件和好的环境)
uci set wireless.radio1.htmode='EHT320'

# 应用配置
uci commit wireless
wifi reload

💡 WiFi 7 频宽说明:

  • EHT80 - 80MHz,最稳定
  • EHT160 - 160MHz,性能和稳定性的平衡点
  • EHT320 - 320MHz,最快,理论速度可达 46Gbps,但需要极好的环境和最新的设备支持

WiFi 标准频宽对比表:

WiFi 标准 模式代码 80MHz 160MHz 320MHz
WiFi 5 (802.11ac) VHT ✅ VHT80 ✅ VHT160 ❌ 不支持
WiFi 6 (802.11ax) HE ✅ HE80 ✅ HE160 ❌ 不支持
WiFi 7 (802.11be) EHT ✅ EHT80 ✅ EHT160 ✅ EHT320

一次性应用所有WiFi配置

所有WiFi配置都设置好了,现在统一提交并重启:

# 提交所有无线配置
uci commit wireless

# 一次性重启WiFi服务
wifi reload

✨ 配置技巧: 这样做的好处是所有配置都集中在一起,只需要重启一次WiFi,速度快!


WiFi 密码管理

修改 WiFi 密码

如果想更改某个 WiFi 的密码,用这些命令:

修改 2.4G WiFi 密码:

uci set wireless.default_radio0.key='NewPassword123'
uci commit wireless
wifi reload

修改 5G WiFi 密码:

uci set wireless.default_radio1.key='NewPassword123'
uci commit wireless
wifi reload

⚠️ 注意: 密码必须至少 8 个字符,不要设置太短的密码。

查看当前 WiFi 密码

如果忘记了 WiFi 密码,可以用这些命令查询:

查看 2.4G WiFi 密码:

uci get wireless.default_radio0.key

查看 5G WiFi 密码:

uci get wireless.default_radio1.key

查看所有 WiFi 配置(包括密码):

uci show wireless | grep key

这样就能看到所有 WiFi 接口的密码了。

查看 WiFi SSID(WiFi 名称)

如果想查看当前的 WiFi 名称:

查看 2.4G WiFi 名称:

uci get wireless.default_radio0.ssid

查看 5G WiFi 名称:

uci get wireless.default_radio1.ssid

查看所有 WiFi 配置(包括SSID):

uci show wireless | grep ssid

第四步:高级网络配置(可选)

配置 IPv6 中继模式

如果你的上游网络(上面的运营商)已经分配了IPv6地址,可以让OpenWRT把IPv6中继到LAN口。这样局域网内的设备就能直接获得公网IPv6地址了。如果不需要IPv6,这步可以跳过。

设置IPv6中继的所有配置:

# 设置 LAN 口的 IPv6 中继模式
uci set dhcp.lan.dhcpv6='relay'
uci set dhcp.lan.ra='relay'
uci set dhcp.lan.ndp='relay'

# 创建或修改 WAN6 接口的中继配置(以 wan6 为主接口)
uci set dhcp.wan6=dhcp
uci set dhcp.wan6.interface='wan6'
uci set dhcp.wan6.dhcpv6='relay'
uci set dhcp.wan6.ra='relay'
uci set dhcp.wan6.ndp='relay'
uci set dhcp.wan6.master='1'

# 提交所有 DHCP 配置
uci commit dhcp

# 重启 DHCP/IPv6 服务
/etc/init.d/odhcpd restart

统一应用所有网络配置

现在把所有配置统一应用。这一步会重启网络和DHCP服务,SSH可能会短暂断线:

# 重启网络服务(会断开SSH连接)
/etc/init.d/network restart

# 等待30秒左右再用新IP重新连接...

⏱️ 时间线:

  1. 执行 network restart 后,SSH 连接会断开
  2. 等待 20-30 秒
  3. 用新 IP 地址(比如 192.168.1.3)重新 SSH 连接
  4. WiFi 应该已经可用了

第五步:性能优化

启用软件和硬件流量分载

想让路由跑得更快?启用流量分载可以大幅提升吞吐量。特别是在有线网络速度很高的情况下,这个功能特别有用。

配置流量分载的所有设置:

# 1. 启用软件流量分载(这是必要前提)
uci set firewall.@defaults[0].flow_offloading='1'

# 2. 启用硬件流量分载(如果CPU支持会更快)
uci set firewall.@defaults[0].flow_offloading_hw='1'

# 3. 提交防火墙配置
uci commit firewall

# 4. 一次性重启防火墙服务
/etc/init.d/firewall restart

验证配置是否生效:

# 查看防火墙配置
uci show firewall.@defaults[0]

如果输出中包含下面两行,说明配置成功:

firewall.@defaults[0].flow_offloading='1'
firewall.@defaults[0].flow_offloading_hw='1'

检查内核层流表(OpenWRT 25.12 使用 nftables):

nft list flowtables

有输出内容(通常包含 flowtable ft)就说明分载机制已经在内核层生效了。性能妥妥的提升!

💡 什么是流量分载? 简单说就是把数据转发的工作从 CPU 卸载到网卡或其他硬件,这样 CPU 可以处理其他任务,网络速度自然更快。特别是对于千兆宽带很有帮助。


第六步:系统升级

系统升级(从一个版本升到另一个版本)和简单的软件包更新是两回事。OpenWRT 推荐使用官方的 ASU 服务来升级系统。

方式一:LuCI Attended Sysupgrade(推荐 - 最简单)

如果你安装了 LuCI(网页管理界面),这是最简单的升级方式。

  1. 打开 LuCI 网页界面
    http://192.168.1.3/
    
  2. 找到升级菜单
    • 系统 → 备份/升级
    • 或者 System → Backup/Flash Firmware
  3. 点击”检查升级”按钮
    • LuCI 会自动连接 ASU 服务器
    • 检查是否有新版本可用
    • 如果有,直接下载并升级
  4. 等待升级完成
    • 通常需要 3-5 分钟
    • 不要断电!
    • 升级完成后会自动重启

💡 优点: 最安全、最方便。所有依赖关系由 ASU 服务器处理,不会导致变砖。

方式二:owut 工具(命令行)

如果你更喜欢命令行,可以用 owut 工具:

# 首先安装 owut
apk add owut

# 检查升级
owut check

# 如果有新版本,执行升级
owut upgrade

💡 owut 会自动处理所有依赖问题,和 LuCI 一样安全。

方式三:OpenWrt Firmware Selector(在线生成)

如果想要完全自定义的固件(包含特定的软件包),可以用官方的 Firmware Selector:

  1. 访问官方工具
    https://firmware-selector.openwrt.org/
    
  2. 选择你的设备
    • 搜索你的路由器型号
    • 比如 “TP-Link Archer AX21”
  3. 选择 OpenWRT 版本
    • 建议选最新的稳定版(比如 25.12)
  4. 可选:添加预装软件包
    • 搜索并勾选你需要的软件包
    • 比如 luci, adblock, ddns 等
    • Firmware Selector 会自动解决依赖
  5. 生成固件
    • 点击”REQUEST BUILD”
    • 等待生成完成(通常几分钟)
    • 下载固件文件
  6. 上传并升级
    scp -O /path/to/firmware-sysupgrade.bin [email protected]:/tmp/
    ssh [email protected] "sysupgrade -v /tmp/firmware-sysupgrade.bin"
    

💡 Firmware Selector 最灵活,特别适合要做定制化的用户。

升级前的准备清单

无论用哪种方式升级,都要做好准备:

# 1. 备份当前配置(最重要!)
ssh [email protected] "sysupgrade -b -" > ~/Downloads/backup-OpenWrt-$(date +%Y-%m-%d).tar.gz

# 2. 检查可用空间(要有足够空间放临时文件)
ssh [email protected] "df -h"

# 3. 确保网络连接稳定
# 建议用有线连接,不要用 WiFi 升级

升级成功标志

升级完成后:

# 1. 路由器会自动重启(等待 3-5 分钟)
# 2. 用新 IP 重新连接
ssh [email protected]

# 3. 检查 OpenWRT 版本
cat /etc/os-release | grep VERSION

# 4. 如果能看到新的版本号,就说明升级成功了

如果升级失败怎么办?

如果升级出了问题(很少发生,特别是用 LuCI 或 owut 时):

  1. 设备还能启动: 用备份文件恢复配置
    scp -O ~/Downloads/backup-OpenWrt-*.tar.gz [email protected]:/tmp/
    ssh [email protected] "sysupgrade -r /tmp/backup-OpenWrt-*.tar.gz"
    
  2. 设备无法启动: 只能通过救砖工具(Uboot、TFTP等)恢复
    • 这种情况极其罕见(特别是用官方推荐方式时)
    • 每种设备的救砖方法都不同,建议查阅官方文档或社区论坛

✨ 最好的预防方式就是用 LuCI 或 owut,完全避免手动操作的风险。


附录:软件包管理完整指南

都配置好了?现在你可能想安装一些额外功能。下面是完整的软件包管理命令。

ℹ️ OpenWRT 25.12 改用 apk 包管理器

从 OpenWRT 25.12 开始,官方改用 apk 包管理器(来自 Alpine Linux),取代了之前的 opkg。新的 apk 有以下优势:

  • ✅ 更轻量级,系统占用空间更小
  • ✅ 依赖解析更准确,包冲突更少
  • ✅ 速度更快,安装升级更流畅
  • ✅ 兼容 Alpine Linux 庞大的软件生态

如果你是从旧版本升级过来的,记得用 apk 替代以前的 opkg 命令。

⚠️ 严格警告:禁止使用 apk upgrade

为什么官方禁止使用 apk upgrade

根据 OpenWRT 官方声明,当前版本的 apk 软件包存在以下问题:

❌ 多个软件包存在缺失的冲突声明
❌ 不完整的依赖关系
❌ 配置错误(hostapd-*, wpad-*, ucode-mod-* 等)
❌ 直接使用 apk upgrade 会导致设备变砖!

受影响的软件包包括:

  • hostapd-* - WiFi 接入点软件
  • wpad-* - WiFi 驱动套件
  • ucode-mod-* - 微码模块
  • 各种核心库文件

错误示例:

# ❌ 不要这样做!会变砖!
apk upgrade

# ❌ 这样也不行
apk upgrade luci

# ❌ 即使指定版本也不安全
apk upgrade wpad-basic-mbedtls

正确做法:系统升级(见第六步)

想要升级软件包或 OpenWRT 版本,使用官方推荐的方式:

升级方式 安全性 便利性 推荐指数
LuCI Attended Sysupgrade ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
owut 工具 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐
Firmware Selector ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
手动 apk upgrade ❌❌❌ ❌❌❌

记住: 只用 apk add 安装新软件包,从不使用 apk upgrade

快速命令对比(从 opkg 到 apk):

功能 opkg(旧) apk(新)
更新源列表 opkg update apk update
搜索软件 opkg list \| grep name apk search name
安装软件 opkg install pkg apk add pkg
卸载软件 opkg remove pkg apk del pkg
❌ 升级软件 opkg upgrade apk upgrade
查看已装 opkg list-installed apk info
查看详情 opkg info pkg apk info -a pkg
清理缓存 opkg clean apk cache clean
系统升级 opkg upgrade 使用 LuCI / owut / Firmware Selector

🔍 查找软件包

列出所有可用软件包:

apk search

按名称搜索软件(比如搜索 luci):

apk search luci

查看已安装的软件:

apk info

查看某个已安装软件的详细信息:

apk info <package>

查找软件的依赖关系(比如 wireguard):

apk info --depends wireguard

🔄 更新软件源(仅此而已!)

更新软件源列表(仅用于查询新软件):

apk update

⚠️ 严重警告:禁止使用 apk upgrade

为什么不能用 apk upgrade

OpenWRT 官方已明确声明:禁止使用 apk upgrade,因为:

  • 多个软件包存在缺失的冲突声明
  • 不完整的依赖关系
  • 其他配置错误(如 hostapd-*, wpad-*, ucode-mod-* 等)
  • 直接使用 apk upgrade 会导致设备变砖

正确的升级方式见下面的”系统升级”章节。

清除缓存释放空间(安全的):

apk cache clean

或者只删除本地缓存的包:

rm -rf /var/cache/apk/*

📌 安装和卸载软件

安装新软件(比如 tcpdump):

apk add tcpdump

卸载软件(比如某个不需要的包):

apk del <package>

卸载软件及其依赖(如果没有其他软件需要):

apk del --recursive <package>

⚙️ 高级操作

查看软件的详细信息(版本、大小、依赖等):

apk info -a <package>

列出某个软件包含的所有文件:

apk info -L <package>

查看软件的维护者和许可证:

apk info -d <package>

重新安装软件(修复损坏的依赖):

apk fix <package>

强制重新安装(清除并重新安装):

apk del <package> && apk add <package>

💡 实用技巧

批量安装多个软件:

apk add package1 package2 package3

查看可用存储空间:

df -h

查看某个软件的安装大小:

apk info -s <package>

模拟安装(不真正安装,只显示会发生什么):

apk add --simulate <package>

📶 WiFi 常用命令速查

检查 WiFi 状态(是否正常运行):

iw dev

查看已连接的 WiFi 客户端(各设备的信号强度):

iw dev wlan0 station dump

重启所有 WiFi:

wifi reload

重启某个特定的射频(比如只重启 2.4G):

wifi reload radio0

完全关闭所有 WiFi(临时):

wifi down

重新打开 WiFi:

wifi up

查看 WiFi 功率和信道(检查发射功率设置):

iw phy phy0 info

🔐 维护和备份

操作前备份配置

做任何重要操作前,最好备份一下当前配置。遇到问题时可以快速恢复:

tar -czvf /tmp/backup.tar.gz /etc/config/

然后把备份文件下载到你的电脑上保存。


🔐 忘记 Root 密码的找回方法

如果不幸忘记了 root 密码,别急,有办法找回。下面介绍几种常见的恢复方法。

方法一:Failsafe Mode(推荐 - 最简单)

Failsafe Mode 是 OpenWRT 的安全模式,在这个模式下可以不需要密码重置配置。

步骤:

  1. 进入 Failsafe Mode
    • 开启路由器
    • 在启动过程中(通常前 3-5 秒),按住重置按钮(Reset)
    • 看到 LED 灯闪烁或变色(通常是绿色/红色交替闪烁),说明进入了 Failsafe Mode
    • 释放按钮
  2. 连接到路由器
    # 路由器会启用 TFTP 和 telnet 服务
    # Failsafe Mode 下 root 没有密码,可以直接登陆
    telnet 192.168.1.1
    
  3. 重置密码
    # 在 Failsafe Mode 中执行重置
    passwd root
    
  4. 重启路由器
    reboot
    
  5. 用新密码登陆

💡 提示: 不同的路由器进入 Failsafe 的方法可能不同。有些是长按 Reset,有些是在启动时快速按多次。查阅你的设备文档。

方法二:Web 界面重置(如果还能访问 LuCI)

如果你还记得 WiFi 密码但忘记了 SSH 密码,可以试试通过 Web 界面:

  1. 打开 LuCI 网页界面
    http://192.168.1.1/
    
  2. 系统 → 管理员密码
    • 点击”设置管理员密码”
    • 输入新密码
    • 保存
  3. 用新密码 SSH 登陆

方法三:Serial Console(需要技术)

如果硬件支持,可以通过 Serial 串口连接重置密码。这需要:

  • USB 转串口适配器
  • 杜邦线
  • 对硬件有基本了解

步骤(仅供参考):

  1. 打开路由器外壳,找到 Serial 接口(通常是 4 个孔)
  2. 用 USB 串口线连接到电脑
  3. 用串口终端工具(putty、minicom 等)连接
    # Linux/Mac
    minicom -D /dev/ttyUSB0 -b 115200
       
    # Windows 用 PuTTY
    
  4. 重启路由器,进入 U-Boot 菜单
  5. 在 U-Boot 中可以执行命令重置系统

⚠️ 警告: Serial console 方式技术难度大,容易损坏硬件,不建议新手尝试。

方法四:刷机恢复

最终手段:重新刷固件。这会清除所有设置但能恢复访问权限。

  1. 从官方网站下载固件
    https://firmware.download.openwrt.org/
    
  2. 进入 Failsafe Mode(参考方法一)

  3. 用 TFTP 上传固件
    # Linux/Mac
    tftp 192.168.1.1
    > binary
    > put firmware-sysupgrade.bin
    > quit
    
  4. 等待路由器重启
    • 刷机通常需要 3-5 分钟
    • 完成后用默认密码登陆(通常是无密码或 “admin”)

⚠️ 注意: 刷机会清除所有自定义配置,包括 WiFi 设置等。之后需要重新配置。

预防措施

防止再忘记密码:

  1. 设置强密码并记录
    # 建议用密码管理器(LastPass、1Password 等)保存
    passwd root
    
  2. 定期备份配置
    ssh [email protected] "sysupgrade -b -" > backup-$(date +%Y-%m-%d).tar.gz
    
  3. 在纸上记录密码并保存在安全地方
    • 不要贴在路由器上
    • 不要存在不安全的地方
  4. 启用 SSH 密钥认证(可选)
    # 这样就不用记密码,用密钥登陆
    ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    

解决常见问题

空间不足:

  • 先用 apk cache clean 清理包缓存
  • 检查可用空间:df -h
  • 如果还是不够,可能需要扩展 Overlay 分区
  • 删除不需要的软件:apk del <package>

软件包不兼容:

  • 确保软件包版本和你的 OpenWRT 版本匹配(都应该是25.12)
  • 检查官方仓库中该软件是否支持你的 OpenWRT 版本
  • 可以用 apk search 查看可用版本

WiFi 连接不稳定或信号弱:

  • 检查是否有干扰(2.4G 更容易被干扰)
  • 尝试修改信道号(2.4G 用 1、6、11;5G 用 36、149 等)
  • 检查发射功率:iw phy phy0 info | grep Power
  • 重启 WiFi 服务:wifi reload
  • 查看 WiFi 日志:logread | grep wireless

WiFi 无法启用或配置不生效:

  • 检查配置是否提交:uci commit wireless
  • 重启 WiFi:wifi reload
  • 查看无线配置:uci show wireless
  • 查看是否有驱动问题:dmesg | tail -20

忘记 WiFi 密码:

  • 查看 2.4G 密码:uci get wireless.default_radio0.key
  • 查看 5G 密码:uci get wireless.default_radio1.key
  • 查看所有密码:uci show wireless | grep key

需要重置 WiFi 配置(恢复默认):

# 这会删除所有自定义WiFi配置,恢复到出厂状态
uci set wireless.default_radio0.disabled='1'
uci set wireless.default_radio1.disabled='1'
uci commit wireless
wifi reload
# 然后重新按上面的步骤配置WiFi

系统日志满了或占用过多空间:

  • 检查日志大小(单位:KB):uci get system.@system[0].log_size
  • 减小日志大小为 4KB:uci set system.@system[0].log_size='4' && uci commit system && /etc/init.d/log restart
  • 清除旧日志:logrotate -f /etc/logrotate.d/logrotate
  • 查看日志文件位置和大小:ls -lh /var/log/
  • 查看当前日志内容:logread | head -20

NTP 时间同步失败或时间不对:

  • 检查 NTP 服务器设置:uci get system.ntp.server
  • 重启 NTP 服务:/etc/init.d/sysntpd restart
  • 查看 NTP 状态:/etc/init.d/sysntpd status
  • 查看当前时间:date
  • 查看更详细时间:date '+%Y-%m-%d %H:%M:%S %Z'
  • 手动设置时间(方式一):date -s "2026-07-23 14:30:00"
  • 手动设置时间(方式二):date -s @1689079800
  • 检查网络连接:ping time.google.com
  • 查看 NTP 日志:logread | grep ntp

NTP 同步提示和解决方案:

  • 如果时间差异太大(超过 1 小时),NTP 可能拒绝同步
  • 完整解决方案:
    1. 先用 date -s "2026-07-23 14:30:00" 手动设置一个接近的时间
    2. 然后重启 NTP 服务:/etc/init.d/sysntpd restart
    3. 等待 30-60 秒,让 NTP 精确同步
    4. date 验证时间是否已同步
  • NTP 同步通常需要 30-60 秒才能完成
  • 如果设置时间后还是无法同步,检查网络和 NTP 服务器可用性

系统时间经常重置或不准确:

  • 路由器重启会丢失时间(因为日志和大多数设置都在内存中)
  • 确保 NTP 服务自动启动:uci set system.@system[0].ntpenable='1' && uci commit system
  • 重启后需要等待 NTP 同步(通常 30-60 秒)
  • 检查多个 NTP 服务器是否都可用
  • 可能需要更换可靠的 NTP 服务器
  • 查看启动日志中是否有错误:logread | grep -i "ntp\|time\|sync"
  • 提示: 如果路由器没有 RTC 电池,重启后时间会重置,这是正常的。需要 NTP 重新同步

系统升级失败:

  • 不要使用 apk upgrade!改用 LuCI Attended Sysupgrade 或 owut
  • 如果升级卡住,可以按 reset 按钮进入恢复模式
  • 恢复配置:sysupgrade -r /tmp/backup-*.tar.gz

软件包冲突:

  • 只是 apk add 单个软件包时冲突,很难自动解决
  • 更好的方式是用 Firmware Selector 预先配置好所有软件包
  • 然后刷新整个固件,这样依赖都是正确的

总结

OK,到这里你的新路由就配置得差不多了。从基础的网络设置,到WiFi配置,再到性能优化,基本覆盖了日常使用的所有方面。

快速回顾一下核心步骤:

  1. ✅ 设置 LAN IP、主机名、时区、root 密码
  2. ✅ 设置日志大小和 NTP 时间服务器
  3. ✅ 备份配置(以防万一)
  4. ✅ 检查无线硬件并安装驱动
  5. ✅ 配置2.4G和5G WiFi(包含信道和频宽)
  6. ✅ (可选)配置IPv6中继
  7. ✅ (推荐)启用流量分载
  8. ✅ 系统升级(用官方推荐方式,不用 apk upgrade)

有什么问题欢迎留言讨论。祝你使用愉快!🎉


快速命令速查表

WiFi 密码相关

操作 命令
查看 2.4G WiFi 密码 uci get wireless.default_radio0.key
查看 5G WiFi 密码 uci get wireless.default_radio1.key
查看所有 WiFi 密码 uci show wireless \| grep key
修改 2.4G WiFi 密码 uci set wireless.default_radio0.key='NewPassword123'
修改 5G WiFi 密码 uci set wireless.default_radio1.key='NewPassword123'
应用密码更改 uci commit wireless && wifi reload

WiFi SSID(名称)相关

操作 命令
查看 2.4G WiFi 名称 uci get wireless.default_radio0.ssid
查看 5G WiFi 名称 uci get wireless.default_radio1.ssid
查看所有 WiFi 名称 uci show wireless \| grep ssid
修改 2.4G WiFi 名称 uci set wireless.default_radio0.ssid='NewName'
修改 5G WiFi 名称 uci set wireless.default_radio1.ssid='NewName'
应用名称更改 uci commit wireless && wifi reload

WiFi 启用/禁用

操作 命令
启用 2.4G WiFi uci set wireless.default_radio0.disabled='0' && uci commit wireless && wifi reload
启用 5G WiFi uci set wireless.default_radio1.disabled='0' && uci commit wireless && wifi reload
禁用 2.4G WiFi uci set wireless.default_radio0.disabled='1' && uci commit wireless && wifi reload
禁用 5G WiFi uci set wireless.default_radio1.disabled='1' && uci commit wireless && wifi reload
重启所有 WiFi wifi reload

WiFi 状态检查

操作 命令
查看所有无线配置 uci show wireless
查看 WiFi 设备状态 iw dev
查看已连接客户端 iw dev wlan0 station dump
查看 WiFi 日志 logread \| grep wireless
查看物理层信息 iw phy phy0 info

频宽设置速查

WiFi 标准 80MHz 160MHz 320MHz
WiFi 5 (VHT) VHT80 VHT160 ❌ 不支持
WiFi 6 (HE) HE80 HE160 ❌ 不支持
WiFi 7 (EHT) EHT80 EHT160 EHT320

设置命令示例:

# WiFi 5
uci set wireless.radio1.htmode='VHT80'

# WiFi 6
uci set wireless.radio1.htmode='HE80'

# WiFi 7
uci set wireless.radio1.htmode='EHT160'

# 应用配置
uci commit wireless && wifi reload

Root 密码相关

操作 命令
设置 root 密码 passwd
查看当前用户 whoami
修改用户信息 usermod -c '名称' root

系统日志和时间配置

操作 命令
设置日志大小为 8KB uci set system.@system[0].log_size='8'
查看当前日志大小 uci get system.@system[0].log_size
重启日志服务 /etc/init.d/log restart
查看日志内容 logread \| headlogread \| tail -20
设置 NTP 服务器(多个) uci delete system.ntp.server 后用 uci add_list 逐个添加
设置单个 NTP 服务器 uci set system.ntp.server='ntp.aliyun.com'
添加 NTP 服务器到列表 uci add_list system.ntp.server='0.openwrt.pool.ntp.org'
查看 NTP 服务器设置 uci get system.ntp.server
重启 NTP 服务 /etc/init.d/sysntpd restart
查看 NTP 服务状态 /etc/init.d/sysntpd status
查看系统当前时间 date
查看详细时间信息 date '+%Y-%m-%d %H:%M:%S %Z'
查看时间戳 date +%s
手动设置时间 date -s "2026-07-23 14:30:00"
手动设置时间戳 date -s @1689079800
应用所有系统配置 uci commit system

常用 NTP 服务器速查:

地区 服务器地址
国内推荐 ntp.aliyun.comtime1.cloud.tencent.com
国际推荐 time.google.comtime.cloudflare.com
OpenWRT 官方 0.openwrt.pool.ntp.org3.openwrt.pool.ntp.org

系统配置一键应用:

# 集中所有系统配置,然后一起提交
uci set system.@system[0].hostname='OpenWrt'
uci set system.@system[0].timezone='CST-8'
uci set system.@system[0].zonename='Asia/Taipei'
uci set system.@system[0].log_size='8'  # 日志大小为 8KB

# 设置 NTP 服务器(必须先删除再用 add_list)
uci delete system.ntp.server
uci add_list system.ntp.server='0.openwrt.pool.ntp.org'
uci add_list system.ntp.server='ntp.aliyun.com'
uci add_list system.ntp.server='time.google.com'
uci add_list system.ntp.server='time.cloudflare.com'

# 一次性提交所有配置
uci commit system

# 重启系统服务使配置生效
/etc/init.d/system reload     # 重启系统基础服务
/etc/init.d/sysntpd restart   # 重启 NTP 时间服务
/etc/init.d/log restart        # 重启日志服务

# 验证配置是否成功应用
echo "=== 验证系统配置 ==="
echo "主机名: $(uci get system.@system[0].hostname)"
echo "时区: $(uci get system.@system[0].timezone)"
echo "日志大小: $(uci get system.@system[0].log_size) KB"
echo "NTP服务器: $(uci get system.ntp.server)"
echo "当前时间: $(date)"
echo "=== 查看日志 ==="
logread | head -10

忘记 root 密码的恢复方式:

  1. Failsafe Mode(最简单)- 按 Reset 进入安全模式
  2. Web 界面(如果能访问 LuCI)- 在网页上重置密码
  3. Serial Console(技术难度大)- 用串口工具
  4. 🔧 刷机恢复(最终手段)- 重新刷固件