久闻OpenWRT这个可玩性很强的路由器固件,然而家里的老古董路由器并不支持刷第三方固件,所以就一直没机会玩一玩。前段时间又想起这事,就去某平台上入手了一台中古的WNDR4300 v1来练练手。路由器到手之后,马上开工。麻利地将原本连在老路由器上的几根线转移过去之后,开机,准备开始折腾。
由于写这篇文章的时候,文章里的内容已经折腾一遍了,就按照惯例依旧没有截图。( ̄(工) ̄)
1.TFTP刷入固件
这台路由器之前的主人用的是某第三方编译的OpenWRT固件。我想用原版的,就去OpenWRT官网上下载了目前(2020年6月)最新的稳定版(19.07.3)升级包。
可以在这个目录(https://downloads.openwrt.org/releases/19.07.3/targets/ar71xx/nand/
)上找到19.07.3版本的WNDR4300固件.tar
升级包和.img
镜像。
一开始我下载了升级包,登录LuCI上传到路由器上,开始升级。谁知路由器重启之后,直接砖了。
……这才开始折腾几分钟呢,就第一次玩砖。太惨了。
好在之前做功课的时候看到过救砖的方法,就是拿一根牙签之类的细针顶住路由器背面的reset键半分钟左右,然后路由器的电源指示灯会变成绿色并且不断闪烁。这时就可以在电脑上用TFTP将固件.img
镜像刷入路由器了。
要想使用TFTP,首先必须有个TFTP客户端。由于Windows已经自带一个命令行客户端,但默认是没有启用的,所以这里只需在控制面板里面开启TFTP客户端功能即可。
按下Win+I
键启动Windows设置,点击“应用”,然后再点击右上角的“程序和功能”,在弹出的控制面板窗口中点击左侧的“启用或关闭Windows功能”,会弹出一个Windows功能列表。在列表里面找到TFTP Client
然后勾上,点击确定,稍等片刻就可以在CMD里面使用TFTP命令了。
在刷入.img固件镜像之前,需要先去下载镜像(废话),接着用网线连接电脑与路由器,然后把电脑的IP设置成192.168.1.2/24
。(路由器目前的IP地址是192.168.1.1)
准备完成后,启动命令提示符,先ping一下192.168.1.1。
ping 192.168.1.1
如果路由器能够正常回复,那么就可以刷固件入镜像了。将下面命令中的D:\openwrt\wndr4300.img
换成自己电脑上固件镜像的路径并执行命令,即可开始刷入固件。
tftp -i 192.168.1.1 put D:\openwrt\wndr4300.img
固件刷入完毕后,路由器将会自动重启。这时可以将电脑的IP改为DHCP获取,但是不要把网线拔掉。重启完毕后,即可通过浏览器访问192.168.1.1
进入LuCI控制台了。
在进入控制台后,首先需要设置一下root用户的密码,并且开启SSH功能,然后就可以像设置其他路由器一样设置路由器的上网与无线功能了。
2.5 GHz Wifi信道修改
在开启5 GHz WiFi后,我的Switch并不能搜到信号,原因倒不是因为它不支持5 GHz,而是日版设备所支持的信道和大陆地区设备所支持的信道并不一样。虽然OpenWRT里面想要哪个信道基本都可以设置,但是要想让设备上网,还是得按照设备所支持的信道来。
经过一番搜索,最后把信道改成了64,这是大陆地区和欧洲/日本都支持的信道。修改完后Switch就可以连上WiFi了,同时其他设备也能正常连接。
3.更换opkg源
opkg是OpenWRT所使用的包管理器。想都不用想,在大陆地区使用官方源的速度特别慢,因此最好还是更换为国内源,从而获得更好的使用体验。这里打算切换的是TUNA源。
使用SSH连接到路由器(192.168.1.1),登录用户名是root,密码是刚才给root用户设置的密码。连上去后使用sed
命令修改配置文件即可更换。
sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf
现在可以使用opkg update
命令更新一下软件包列表来看看配置是否正确。
4.U盘挂载
在OpenWRT中,软件包和配置文件都存放在/overlay
分区中。用df -h
命令查看,WNDR4300上这个分区的大小只有14M,如果要安装一些并不轻量级的软件包,完全不够用。所以有必要给该分区扩容。
扩容的一个可行的办法就是挂载一个磁盘,将/overlay
分区重定向一下,从而达到扩容效果。
我不打算拿这个路由器当网盘用,就决定挂载一个USB 3.0的U盘。这个U盘我准备分两个区,一个用来当Swap,另一个给/overlay
扩容。
在把U盘插上去之后,先把这些软件包全装上。(都是从其他资料上找来的,不知道是不是多安装了一些包)
opkg install blkid fdisk lsblk block-mount block-extroot kmod-usb-core kmod-usb-ohci kmod-usb-uhci kmod-usb-storage kmod-usb-storage-extras kmod-usb2 kmod-usb3 kmod-fs-ext4 kmod-scsi-core
安装完毕之后使用reboot
命令重启路由器,同时把U盘插到路由器的USB口上。
重启完毕后使用SSH再次连接路由器,输入以下命令查看块设备信息。
lsblk
不出意外的话,可以看到一个名称为sda,大小和U盘容量相近的块。这就表示路由器成功识别出U盘了。
如果U盘还没格式化的话,可以先格式化一下。这里就随便格式化成ext4
。
mkfs.ext4 /dev/sda
接着使用fdisk
命令给U盘分区。
fdisk /dev/sda
首先创建一个Swap分区。这台WNDR4300的内存是121.4MB,所以理论上分配242.8MB的Swap比较合适。然而我图省事,决定直接分配1G。
按下n
新建一个分区。分区类型使用默认的primary,因此直接回车。分区号使用默认的1,直接回车。起始柱面依旧默认,直接回车。最后柱面输入+1G
后回车。接着按下t
修改分区类型。要修改的分区号选择默认的1,直接回车。分区类型的十六进制码输入82
后回车(代表swap类型)。
经过以上操作,Swap分区就创建好了。
接着创建第二个分区。按下n
新建分区,接着可以一路回车直到新分区创建完毕。
两个分区都创建完毕后,输入w
保存分区设置。
分区设置保存完毕后,将/dev/sda1格式化成Swap。
mkswap /dev/sda1
随后启用该Swap分区。
swapon /dev/sda1
然后再将/dev/sda2格式化成ext4格式。
mkfs.ext4 /dev/sda2
完成之后可以在浏览器中的LuCI中通过系统->挂载点进入文件系统挂载界面,分别设置两个分区的挂载。设置完成后,路由器似乎会自动重启。等重启完毕之后在该界面查看,分区都已经正确挂载。
现在路由器上就多出了好多空间,可以随意安装各种软件包啦。
5.个人吐槽
这次姑且先把路由器的基本设置搞定,还没有开始玩一些比较好玩的插件。
OpenWRT确实是个很棒的固件,能够让路由器拥有很多原厂固件并没有提供的功能。不过这次用来练手的也算是一个老古董型号了,等我练的差不多了,或许会再入手一款新型号的正式开玩。
4 Comments
Gazzz 博主
如果是公共环境,比如学校的话wpad必备,可以解决802.1x的连接问题。如果是家庭环境Turbo ACC、SmartDNS之类的好用,甚至可以用官网的交叉编译工具编译v2,跑全局。
稍微好玩点的玩法可以试试在路由上跑httpdns,配合bash代替传统dns,防止移动联通恶心人。
Omega 博主
@Gazzz
学到了(o゜▽゜)o☆
周末研究一波
FSpark 博主
@Gazzz
没有路由,之前只好在本机上搭smartdns玩,后来还是觉得鸡肋了
Omega 博主
@FSpark
感觉如果主要访问国内地址的话,几十毫秒的优化似乎意义不大……