小米4A路由器(千兆版)刷机

缘起

~ 家里装了台式机不用也是闲着，想远程访问分享文件跑一些程序之类，其实最根本的原因就是 xray 需要客户端安每个手机都要安装 app 才能用
所以很繁琐，想着能不能把准备一台设备然后在上面跑代理，然后其他的客户端就能直接配置地址，config.json 统一管理，刚开始用的是手机 app 开启允许局域网访问但是这样手机要全天开机，而且延迟好像也比较髙，也就是所有的请求走手机，然后手机进行分流饶了一大圈，
然后了解到了 Openwrt 可以直接在上面跑程序，xray 又是 golang 编写的 可以直接编译到嵌入式上运行！🐓 nice!

准备材料

小米 4A 路由器 (千兆版 V1)

ssh 破解工具 用最新版直接一把过

Openwrt 固件

参考资料

操作步骤

先把 openwrt 固件上传到 tmp 下，刷完之后等待重启即可

Copy
cd /tmp

mtd -e OS1 -r write openwrt-21.02.3-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin OS1

注意事项

千万不要刷 breed (不死鸟) 这里面参数和小米 4A 固件根本不一致，刷入 breed 之后会导致刷进去的固件无限重启，直接使用 mtd 命令刷入即可，想要回复官方的固件使用官方的恢复工具直接就恢复了，很简单

如果刷入了 breed, 使用 breed 刷入导致无限重启，开机的时候长按 rest 按钮 可以通过 ssh 连接到 breed 然后在 breed 下也能使用 mtd 刷入 Openwrt 固件，最开始的时候不知道，以为变砖了拼夕夕买了个土豪金 ch341 编程器 夹住 flash 上直接刷的

开启端口转发之后会有很多的国外 ip 尝试登录，因为我的是让光猫桥接，路由器拨号 ip 暴露在公网上面，就很烦，把相关的用不到的配置全都关掉，端口限制 mac 地址或者指定 ip 访问，路由器配置禁用密码登录，开启 ssh 密钥登录能预防很多的攻击

公网访问

网站常用的 443 和 80 端口根本用不了，这两个端口直接从运营商那边拦截掉了

想要公网访问怎么操作？

一般来说普通人肯定是推荐 DDNS, 路由器内置的也有，比如花生壳 DDNS , 但是这个免费的 DDNS 域名非常长很难记住，所以我买一个好记的域名

DDNS 大致原理

因为使用路由器拨号是动态 IP, 当你重启路由器后会重新拨号，这个时候就会变成一个新的 IP , 域名绑定了就会失效，DDNS 就是每间隔 10 分钟或者 5 分钟，检查一下当前的 ip 和域名解析的 ip 是否对的上，对不上时执行重新解析，明白了这个原理就简单了
写个程序运行在路由器上面，设置开机启动，每间隔 5 分钟检查一次，如果不同则调用解析接口更新下域名解析，(腾讯云买的域名是支持的)

访问家里的设备

通过端口转发，比如 192.168.1.1:22 是树莓派，然后可以绑定公网 domain.com:2222 通过路由器转发到 192.168.1.1:22 就能直接访问家里的设备了，设备记得开启防火墙，密码设置难破解一些，openwrt 防火墙转发那里配置好一些安全限制，避免被攻击

运行 xray

~ 刷完之后肯定要运行 xray 了毕竟这个才是主要需求，然后想要通过 openwrt 官方的软件安装总是提示内存不足，很奇怪，一看我的路由器 运行内存有 128M 存储只有 16M, 装完 openwrt 之后就剩 8M 了，xray 即使使用 upx 压缩之后还有将近 9M 根本放不下
还有一点。路由器的/tmp 其实就是内存的映射。这里面的文件在设备重启之后就会清空，虽然硬盘只有 16M 你在 tmp 下 放入 80M 的文件也没问题无非是重启后丢失，当然为了精简节省内存能小一点自然最好
/overlay 这个目录是持久存储，路由器重启也不会丢失，可以把 xray 放在这里之后配置开机自启动

精简 xray-core 根据官方的 1.8.4 版本 把能删的都删了就保留基本功能 在 op 下使用 ls -lh 查看仅有 4.2M, 这个是 upx 之后的

之后在手机上 wifi 内直接配置手动代理，填上路由器的地址和 xray 对应的端口号就能访问油管了