前期调研
考虑到校园网路水平实在稀烂,上学期末购入了一款三星的便携随身Wi-Fi。机器本身是安卓系统,因此可以比较方便地安装Clash X等软件,并通过HTTP或Socks5代理等方式将其专用网络共享给链接至热点的设备。但是,目前网路上没有成功ROOT的先例,因此并不能使用TUN/TAP的方式直接共享。
如果需要共享代理网路,有以下几种方案:
- 随身Wi-Fi网络接入+代理
- 优点:只需要携带一个设备
- 缺点:必须在连接的设备上手动设置HTTP/Socks5代理,并且某些流量无法代理;随身Wi-Fi需要进行大量的AES计算造成续航降低
- 随身Wi-Fi网络接入、便携OpenWRT路由器代理
- 优点:随身Wi-Fi只需要提供网络接入,续航不受影响;速度不受随身Wi-Fi的AES加解密性能影响;无感接入,无需二次设置;可以使用Passwall等插件自定义代理流量
- 缺点:需要额外的电源接入;需要携带两台设备;中间存在二次转发的性能损失
- 随身Wi-Fi网络接入+代理、便携OpenWRT路由器透明代理
- 优点:即时便携式OpenWRT路由器性能较弱也能胜任
- 缺点:需要额外的电源接入;需要携带两台设备;中间存在二次转发的性能损失;随身Wi-Fi需要进行大量的AES计算造成续航降低;某些流量无法代理
目前手上有一个GL-iNET家的迷你路由器,支持OpenWRT。大一大二期间折腾过一段时间,但由于其性能弱鸡且只支持2.4GHz频段的Wi-Fi遂闲置。本着减少电子垃圾的原则尝试在这个迷你小路由器上进行测试。
(早知道这么多破事儿还是继续用我的x86软路由了hhh🫠
设备参数
Galaxy 5G Mobile Wi-Fi(参数摘自什么值得买)
频段:支持nsa与sa,B1、B3、B17、B18、B41、B28、B77、B78,实测移动联通可以使用5g sa;WiFi3pro官网未找到详细参数,故不列出
网速:理论下行2.2Gbps,上行183Mbps
带机量:10+1(usb共享)台
重量:203g
系统:搭载安卓11,群友实测5gWiFi下功耗2.5w,续航爆炸
存储:2.5g+32g,是的,你没看错,是2.5g的运行内存,32g实际可用不到20g
屏幕:1480*720,TFT屏
电池:5000mah
续航:5g下,理论续航1000分钟->16.6小时 ,实际测试4g下可达24小时
GL-iNET MT300N-V2(参数摘自valorgears)
型號:GL-MT300N-V2
CPU:MTK7628NN 580MHz
Wi-Fi 制式:Wi-Fi 4(N)
速度規格:N300
2.4GHz 速度:300Mbps
WAN 介面:1 x 100Mbps
LAN 介面:1 x 100Mbps
USB 介面:1 x USB 2.0
體積:58 x 58 x 15mm
重量:40g
搭建过程
重置
这个没有什么好说的,主要是因为MT300N-V2性能太弱了,不能同时运行太多插件,并且可用的ROM空间其实很小,因此需要清除以前安装过的一些不必要的功能。
连接网络
可以选择Wi-Fi中继模式或者使用有线热点共享。实测MT300N-V2支持这款三星随身Wi-Fi的有线网络共享,但是我并不喜欢它们黏在一起,因此我试用了无线中继的模式。
安装Luci
在更多设置-高级功能中选择安装Luci界面。注意,由于第一次安装需要刷新opkg软件库
安装redsocks
在软件库中搜索安装redsocks插件。不过,我在网上看到了许多redsocks2的文章,但官方似乎还没有给这款软路由做新版本的适配,但是并不妨碍我们的使用,V1足够使用了。
配置redsocks文件
避坑:V1和V2的配置文件路径是有区别的,一定要多看官方文档🥲要不然时间光花在找文件上面了。
文件路径如下
下面的配置参考了如下两篇文章
/etc/redsocks.conf
由于篇幅限制,下面的配置文件我去掉了全部的注释和未使用参数,主要关注并修改下面几个参数:
- local_ip:本地监听ip,填写0.0.0.0就好,监听所有端口的流量
- local_port:本地监听端口,这个是为了配合iptables链路新建一个入口,填写一个没有被占用的端口即可
- ip:目标服务器的ip
- 我在Galaxy 5G Mobile Wi-Fi上设置的子网是10.10.10.0/24,网关是10.10.10.1;这个参数项需要根据自己的情况来设置
- port:填写目标端口
- type:填写代理类型,支持Socks5和HTTP,如果有特殊需求可以使用Privoxy进行代理转换
其他配置项如果没有特别需求可以不用修改
base { log_debug = off; log_info = on; log = "syslog:local7"; daemon = on; redirector = iptables; } redsocks { local_ip = 0.0.0.0; local_port = 7890; ip = 10.10.10.1; port = 1088; type = socks5; } redudp { local_ip = 127.0.0.1; local_port = 10053; ip = 10.0.0.1; port = 1080; login = username; password = pazzw0rd; dest_ip = 8.8.8.8; dest_port = 53; udp_timeout = 30; udp_timeout_stream = 180; } dnstc { local_ip = 127.0.0.1; local_port = 5300; }
/etc/init.d/redsocks
这个是自启动文件,一般不作修改,但是前面自定义了端口的话则需要求改。
#!/bin/sh /etc/rc.common # Copyright (C) 2007 OpenWrt.org # check if configuration exists [ -e "/etc/redsocks.conf" ] || exit 0 START=95 SERVICE_USE_PID=1 SERVICE_WRITE_PID=1 SERVICE_DAEMONIZE=1 start() { echo starting redsocks... /usr/sbin/redsocks -c /etc/redsocks.conf echo loading redsocks firewall rules... load_firewall echo done. } stop() { echo stopping redsocks2... killall -9 redsocks echo flushing redsocks2 firewall rules... flush_firewall echo done. } load_firewall() { # create a new chain named REDSOCKS iptables -t nat -N REDSOCKS # Ignore LANs IP address iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN # Anything else should be redirected to redsocks's local port iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 7890 # Apply the rules iptables -t nat -I zone_lan_prerouting -j REDSOCKS } flush_firewall() { iptables -t nat -F REDSOCKS sleep 1 iptables -t nat -D zone_lan_prerouting -j REDSOCKS iptables -t nat -X REDSOCKS }
重启
至此,全部的工作都已经完成,只需要重启测试即可。
测试
基本速率
由于我办的套餐是福建联通的4G家宽,因此只能用3G/4G网络,还得去福建绕一圈才能出口,属实有点儿xx(架不住性价比超高啊😎
直接连接Galaxy 5G Mobile Wi-Fi的速度是这样的
因为测试时使用的是2.4GHz的频段,速度有上限,5GHz下可以轻松150Mbps以上
中继代理速率
其实这个速度只能说够用,看看2K以下的视频还是可以的,因为2.4GHz干扰本来就多,加上小路由器性能本来就差,勉强能用吧。(到时候开学了去学校都不敢想了🫠
总结
本次使用了GL-iNet MT300N-V2迷你路由器解决了无法实现透明代理的问题,在不额外增加物理设备的同时达到了能用的水平。
应当是低性能OpenWRT设备的一个福音,OpenWRT的高自主性可以搭配很多老旧的设备得到再次利用,例如,使用淘汰的手机进行作为代理等等。
仍然存在的问题是,redsocks有一定几率不定时断线,若干分钟后自行恢复。考虑可能是配置的问题亦或是机器性能确实不足,后期会继续探索和更新本篇文章。