把你的光猫变成一个丐版NAS
我的初衷是调研下光猫改桥接的可行性,结果拿到超级管理员密码后还是没有这个选项。但在这个过程中发现直接在光猫上跑个下载服务却是可行的。
允许FTP访问和telnet访问
访问 http://192.168.1.1 ,输入密码后进入光猫管理后台。这里我找到“上网帐号设置”,备份宽带帐号和密码。不得不说他系统还是挺拉的,密码框直接用审查元素功能把 type 改为 input 就可以看到密码了。
第一步后台不要退出,访问 http://192.168.1.1/servmngr.html 。这里看到一个空白页面,审查元素后发现大有乾坤。
将这些代码取消注释,此时网页还是空白的,但是用 Ctrl+A 可以看到实际是有内容的。在这个页面开启 telnet 访问,并设置密码。注意用户名为 admin 不要改,否则后面 telnet 登陆不进去。
telnet 192.168.1.1
成功后执行sh
。然后uname -a
看下。这里我就不记录查看管理员密码步骤了,反正这个型号管理员面板也没有设置桥接的选项。
开始整活
top
,发现占用内存最高的是个两个 java 进程。java -version
,发现安装了 java8 。
# java -version
openjdk version "1.8.0-internal"
OpenJDK Runtime Environment (build 1.8.0-internal-jenkinsang_2022_01_15_04_03-b00)
JamVM (build 2.0.0, inline-threaded interpreter with stack-caching)
free
命令可知总内存约二十多兆,剩余仅 3 兆。这点空间是搞不了什么事情的,因此我尝试干掉前述两个 java 进程。ps -aux | grep java
,发现除了存在两个 java 进程,还写了脚本自动把这两个进程拉起来,即/etc/monitor_java.sh
。统统 kill 掉。
现在有 10 兆左右的内存了,对于 java 来说可能还是不太能搞事,但跑个 aria2 足够了!尝试插入 U 盘,发现在/mnt/usb1_1
自动挂载。
交叉编译 aria2c ,这里我用的是这个脚本:https://gitee.com/logic_2050/auto-build-aria2-mips32-static 。在我的 debian11 编译过程中只遇到一个问题,手动sudo apt install autoreconf
即可。
如何把文件弄到光猫里,以及取出来?每次插拔 U 盘也太麻烦了。于是我找到一个支持上传的简单文件服务器:https://github.com/mayth/go-simple-upload-server。仍然交叉编译到 mips 静态包。env GOOS=linux GOARCH=mips GOMIPS=softfloat go build -trimpath -ldflags="-s -w -extldflags=-static"
成品
拓展
被我干掉的两个 java 进程是做什么的
光猫跑 java 属实有点离谱,一半内存都是他们占的,干掉后也不影响上网,甚至也不影响光猫后台管理。嗯,有点耐人寻味。
FTP访问为空白
经测试,该型号FTP访问根目录是一片空白,但大多数子目录还是可以正常访问的,如/mnt/usb1_1
,完全能满足要求。
无法执行/重启后文件丢失
有些目录下是无法写入的,有些虽然可以写入,但是重启会丢失,还有些目录下无法执行程序。
我选择把整活用的程序放到/fhconf/
下,因为光猫自己的配置文件备份就放在这里,显然这里是不会重置的。
支持 https
只要将你的电脑下的/etc/ssl/certs/ca-certificates.crt
文件复制到光猫下,并在aria2的配置文件中指定就可以了。
ca-certificate=/fhconf/custom/aria2/ca-certificates.crt
OOM
尽管aria2确实已经很省资源了,但当尝试BT下载一个比较大的文件时(超过2GB)还是很容易占用超过10M内存,然后关键进程OOM就巴比Q了。我尝试过修改配置文件,关闭disk-cache、关闭预分配甚至限制下载速度等均无法解决。所以该方案的实用性其实并不是很高。
也无所谓,生命在于折腾嘛。 也许设置swap可以解决这个问题,但默认没有这个命令,估计还得去编译busybox。唉,算了吧……
最后修改于 2022-04-12