Skip to content

缘起

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

准备材料

操作步骤

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

sh
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 对应的端口号就能访问油管了