缘起#
~ 家里装了台式机不用也是闲着,想远程访问分享文件跑一些程序之类,其实最根本的原因就是 xray 需要客户端安每个手机都要安装 app 才能用
所以很繁琐,想着能不能把准备一台设备然后在上面跑代理,然后其他的客户端就能直接配置地址,config.json 统一管理,刚开始用的是手机 app 开启允许局域网访问但是这样手机要全天开机,而且延迟好像也比较髙,也就是所有的请求走手机,然后手机进行分流饶了一大圈,
然后了解到了 Openwrt
可以直接在上面跑程序,xray 又是 golang 编写的 可以直接编译到嵌入式上运行!🐓 nice!
准备材料#
- 小米 4A 路由器 (千兆版 V1)
- ssh 破解工具 用最新版直接一把过
- Openwrt 固件
- 参考资料
操作步骤#
先把 openwrt 固件上传到 tmp 下,刷完之后等待重启即可
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 对应的端口号就能访问油管了