前言
最近发现OpenWrt更新到25.12.2了,还在用24.10版本,抽空把软路由给升级一下。我的R5C最近一直用来做旁路由,以前刚接触软路由,一直当主路由用,但是当主路由用,如果出点什么问题,那么全家的网络都无法使用。于是摸索旁路由,但对OpenWrt几乎不了解,为了同时开通IPV6功能,网上找了好多资料,花费了大量时间才搞好。现在OpenWrt由24升级到25,OpenWrt整体有一些变动。
OpenWrt由24升级到25主要变化:
超过 4700 个 commits,开发周期超过一年。
设备支持大幅增加:总支持超过 2200 台设备,比 24.10 新增 180+ 台 设备。
硬件要求基本不变:24.10 支持的大多数设备仍可正常运行。
最重要架构级变更:包管理器从 opkg 切换到 apk(Alpine Package Keeper)。
apk 更现代、维护更好,命令语法有差异(官方提供 opkg-to-apk 速查表)。
升级后原 opkg 命令不再可用,需改用 apk(如 apk add、apk upgrade 等)。
Attended Sysupgrade(ASU)深度集成:
LuCI 网页默认内置 ASU 插件,owut 也预装在较大闪存设备上。
可在线重建固件、保留已安装软件包、自动合并到 SquashFS,升级更方便。
系统选择
OpenWrt
OpenWrt 项目是一个面向嵌入式设备的 Linux 操作系统。OpenWrt 没有采用单一的静态固件,而是提供了一个完全可写的文件系统和软件包管理功能。这使您摆脱了厂商提供的应用程序选择和配置的限制,可以通过使用软件包来定制设备,以满足任何应用的需求。对于开发者而言,OpenWrt 提供了一个框架,让他们无需构建完整的固件即可构建应用程序;对于用户而言,这意味着可以完全自定义设备,以意想不到的方式使用设备。
系统下载页面:https://firmware-selector.openwrt.org/
ipk软件地址:https://downloads.openwrt.org/releases/packages-25.12/
默认登录地址:192.168.1.1
默认登录密码:passworld
ImmortalWrt
ImmortalWrt 是OpenWrt的一个分支,它移植了更多软件包,支持更多设备,默认优化了配置文件,并针对中国大陆用户进行了本地化修改,例如直接默认中文、软件可直接更新、个性化软件单独维护(如mosdns等等很多移植到官方软件库)。与上游版本相比,允许使用(非上游版本)修改/hack 来提供更好的功能/性能/支持。中国大陆小白用户使用ImmortalWrt会更加方便简单一些。
官网项目地址:https://github.com/immortalwrt/immortalwrt
系统下载地址:https://firmware-selector.immortalwrt.org/
ipk软件地址:https://downloads.immortalwrt.org/releases/
默认登录地址:192.168.1.1
默认登录密码:无密码(如不行,尝试passworld)
本次使用OpenWrt 25.12.2做为示例,默认系统OpenWrt会比ImmortalWrt更加轻量,ImmortalWrt会集成更多的软件和合适中国用户的设置。也就是说OpenWrt前期的设置会更加繁琐一点,只要学会了OpenWrt设置,ImmortalWrt也学会了。
准备一台电脑
电脑连接到主路由(我个人习惯连接电脑,而非旁路由,如果你是连接到旁路由,下面的步骤自行调整)
旁路由连接主路由
下载OpenWrt
进入下载地址,搜索软路由的型号,例如我的R5C,直接输入R5C即弹出对应的型号,在选在版本。如果没有你的型号,那么就要去别的地方去找合适自己的固件了,例如恩山论坛等。

下载一般建议选择SYSUPGRADE (SQUASHFS),如果你不懂这是什么,就选择这个。
系统烧录
下载好之后,我们需要把系统烧录到内存卡或者U盘去,我是把系统烧录到内存卡,用内存卡当软路由的“硬盘”,这个根据你的实际情况来。
烧录软件用balenaEtcher,简单实用。

选择下载好的OpenWrt文件,再选择对应的内存卡,然后点击Flash开始烧录。

烧录完成,把内存卡插到设备上,通电等待开机。
OpenWrt设置
修改本地IP
首先确认本机IP是否192.168.1.X段,如果不在同一个段,那么无法打开192.168.1.1进行设置。
示例:

登录
确认IP无问题后,输入192.168.1.1,即可进入登录界面

默认Username:root
默认登录密码:passworld

登录后即可看到OpenWrt界面


这个界面的大致意思是是否在线检查固件升级,根据自己需求来,我是选择否,不需要在线检查升级。

此处要确认一次,点击绿色按钮即可。
修改登录密码
此时Openwrt的默认登录密码还是passworld,为了安全起见,还是要修改登录密码。
点击这个选项

转跳到修改密码界面

输入新的两次密码,点击绿色按钮保存,下次登录就要用新的密码登录。
PS:连接SSH默认是22端口,想要修改默认SSH登录端口的话,也要修改!
配置旁路由网络
连通主路由
我主路由和旁路由不在一个IP段,此时旁路由还是无法联网的状态,接下来要连通两个路由

进入网络页面,对Lan进行设置

按照图片顺序进行设置,有两个地方需要设置

此处和OpenWrt 24.10版本有区别:
Protacol:选择
Static address,静态地址。Device:选择
br-lan。IPV4 address:是旁路由的IPV4地址,要和主路由同一个IP段,假设旁路由IPV4地址设置为192.168.2.150(以下用此IP举例,需要替换成你自己的IP),那么此处要写
192.168.2.150/24。以前OpenWrt 24.10版本只要写192.168.2.150就可以。IPV4 gateway:IPV4网关,和主路由的网关一致即可。
IPV4 broadcast:输入完IPV4地址和网关后会自动弹出,不用理会。
IPV6暂时不填写。

点击save保存。

再点击右下角Save&Apple保存。
此时进入加载界面,无法再连接openwrt后台页面,因为旁路由的IP已经发生变化,变成192.168.2.150,而电脑依然是192.168.1.X段的,两个设备不在同一个IP段上,所以无法连通。
要把电脑的IP改成同一个IP,可以手动修改或者自动获取。
修改电脑IP后,在网页输入192.168.2.150,即可再次进入OpenWrt后台页面。可以在后台的首页或者网络设置页面查看网络信息,此时IPV4已经设置好,可以正常上网。
为旁路由添加IPV6
再回到网络设置界面

软路由做旁路由用,如果不需要用到wan口,可以删除(都做旁路由用了,wan口一般也用不到)。
点击Add new interface...添加IPV6设置

Name:名字随意,自己知道是什么就好
Protacol:选择
DHCPv6 clientDevice:选择
@lan
然后点击绿色按钮进行下一步

找到Firewall Setting(防火墙),选择lan,然后点击Save保存。
再点击右下角Save&Apple保存。

稍等片刻,即可看到获取的IPV6信息。
为OpenWrt设置中文
现在OpenWrt还是英文,对于很多操作不方便,首先进入软件包界面

点击更新


更新完毕。
在搜索栏粘贴中文插件luci-i18n-base-zh-cn,然后点击Install安装

安装完毕后,刷新界面,便是中文界面

PS:后续使用中要用到SSH的文件传输功能,要额外安装
openssh-sftp-server插件
为SSH设置保存历史命令
OpenWrt的SSH使用有一个点很不好,重启路由器后,不会保存使用过的SSH命令。以前24.10版本的话用bash基本就可以解决,25.12有点小变动。
首先用SSH工具先连接上路由器
更新
apk update安装需要软件
apk add bashapk add nano用nano进行编辑
nano /etc/passwd 把第一行最后的ash改成bash

然后Ctrl+x确认并退出。
关闭SSH,然后再打开SSH。否则可能不生效
关闭SSH,然后再打开SSH。否则可能不生效
关闭SSH,然后再打开SSH。否则可能不生效
编辑/root/.bash_profile,如果没有的话直接新建
nano /root/.bash_profile把以下内容复制粘贴进去(建议删掉注释的中文再粘贴进去,中文有可能会乱码)
# 设置历史记录文件路径及保存的条数
export HISTFILE=/root/.bash_history
export HISTSIZE=1000
export HISTFILESIZE=1000
# 设置历史记录以“追加”模式写入,防止覆盖
shopt -s histappend
# 核心:每次执行完命令后立即将内存中的记录写入磁盘
export PROMPT_COMMAND="history -a"然后Ctrl+x确认并退出。
再执行
source /root/.bash_profile退出SSH,再进去SSH即可自动保存使用的命令,即使重启了路由器没问题。
更换主题
现在的OpenWrt主题是系统自带的,美观度一般般,给它换个主题。
Argon theme是被广泛运用的一款主题,也是我一直以来用的

项目地址:https://github.com/jerrykuku/luci-theme-argon
打开SSH,执行:
apk updateapk add luci-compatapk add luci-lib-ipkgwget -O luci-theme-argon-2.4.3-r20250722.apk https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.3/luci-theme-argon-2.4.3-r20250722.apkapk add --allow-untrusted ./luci-theme-argon-2.4.3-r20250722.apk如果版本升级了,自行修改最新版本。
关掉OpenWrt后台网页,然后再重新打开,即更新了Argon theme主题。

硬盘扩展
OpenWrt默认分配的硬盘空间很小,哪怕你原本有很大的硬盘空间,可能都自动分配几十或者一百多兆,没装几个软件就没空间了。

如图所示,我64G的内存卡,只给了80多M的硬盘,这需要硬盘扩容。
OpenWrt和ImmortalWrt会有一点不一样,ImmortalWrt的步骤会多一些。
OpenWrt硬盘扩容
更新和安装所需要的软件
apk update && apk add fdisk resize2fs查看挂载情况
df -h注意此路径,一会需要用到,是个循环设备

查看目前分区情况
fdisk -l对这个磁盘进行分区
注意,你磁盘的名字可能和我的不相同

输入
fdisk /dev/mmcblk0
此时输入字母p

此时输入字母d
然后依次输入2,n,p,2
此时注意刚才输入p得到信息

你的名字可能不是/dev/mmcblk0p2,但就注意这一行,注意它Start这个数据,把它填写进来,接着回车
回车后便到了输入数据设置扩容的容量了,此处可以直接写想要加多少,例如我想加3G的容量,可以直接写+3g。

回车后,根据提示再依次输入n,w,退出后输入reboot重启。
重启后回到ssh,再查看挂载情况
df -h注意刚才所说的挂载设备

输入命令
resize2fs -f /dev/loop0回车后等待扩容

扩容完成后回到Openwrt的软件包界面,刷新一下界面

完成扩容。
ImmortalWrt硬盘扩容
更新和安装所需要的软件
apk update && apk add lsblk fdisk losetup resize2fs f2fs-tools查看挂载情况
df -h注意此路径,一会需要用到,是个循环设备

查看目前分区情况
fdisk -l对这个磁盘进行分区
注意,你磁盘的名字可能和我的不相同

输入
fdisk /dev/mmcblk0
此时输入字母p

此时输入字母d
然后依次输入2,n,p,2
此时注意刚才输入p得到信息

你的名字可能不是/dev/mmcblk0p2,但就注意这一行,注意它Start这个数据,把它填写进来,接着回车
回车后便到了输入数据设置扩容的容量了,此处可以直接写想要加多少,例如我想加3G的容量,可以直接写+3g。

回车后,根据提示再依次输入n,w,此处不用重启。
如果此处像OpenWrt一样,重启再执行resize2fs -f /dev/loop0的话,会出现以下报错报错:
resize2fs: Bad magic number in super-block while trying to open /dev/loop0
Couldn't find valid filesystem superblock我们需要另外的操作...
查看目前分区情况
fdisk -l
确认分区已经扩大至3G
losetup
一会要用到这个数
losetup -f -o 8257536 /dev/mmcblk0p2把8257536 换成上一条命令得到的OFFSET,/mmcblk0p2换成对应的BACK-FILE
接着输入
losetup
确认已经生成/dev/loop1新虚拟的循环设备
把loop1这个循环设备挂载一次,再卸载一次,这是为了扩容做准备,防止数据出问题
mount /dev/loop1 /mnt再卸载
umount /dev/loop1看循环设备文件系统格式
lsblk -f
可以看到是f2fs格式的
resize.f2fs -f /dev/loop1如果是
ext4文件,把resize.f2fs换成resize

扩容完成后输入reboot重启软路由
等待开机后回到Openwrt的软件包界面,刷新一下界面

完成扩容。
TCP调优
很多人会忽略软路由的TCP调优,如果没有调优,很可能没发挥出软路由原本的网络性能。
更新
apk update安装BBR
apk add kmod-tcp-bbr编辑/etc/sysctl.conf
把以下内容复制粘贴进去
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.core.netdev_max_backlog = 5000PS:这里的TCP参数是适用我本地,并不合适所有人,不懂的话直接去问AI就行。
网络防火墙设置
做旁路由,有时候连接一些国内的网络可能会不太顺畅,例如微信朋友圈无法加载,这是需要在网络里面进行设置,一般会得到解决

找到网络-防火墙,把lan处的IP动态伪装选上,然后保存。
总结
玩软路由就是折腾,这种情况甚至说不上玩软路由,对小白来说,还是ImmortalWrt更加适用,ImmortalWrt集成更多的软件和合适中国用户的设置,不用太折腾网络和软件。另外,OpenWrt上很多软件要自己找到并安装,不像ImmortalWrt软件库里就有,安装了软件库以外的,无法在线升级,要卸载后才可以升级。
评论区