环境
- 移动光猫(吉比特GS3101) 其它同CPU构架的路由器也可参照本教程(如内蒙广电猫),但需要有USB接口(没空间玩个毛.jpg)、支持Telnet或SSH连接。
- 移动硬盘(大容量U盘也可)
前言
家里最近换了移动宽带,网速、延迟等倒是没有网上风评那么差,我还是比较满意的。
起初并不是很想折腾这个光猫,主要是家里有很多闲置的路由器,想和光猫远程桥接起来。动手折腾时发现光猫有个USB口,网上说是调试专用的,普通用户用不了,就想折腾着利用起来,于是有了这系列文章。过程
根据这篇文章:移动光猫吉比特GS3101超级账号获取更改桥接
安装Telnet并且远程登陆。 注意这里有个坑,如果你的光猫已经与“和家亲”这个移动端APP绑定的话,是没法远程登陆的,需要先解除绑定。 登陆上之后,看着熟悉的#
,这玩意肯定是类Unix系统,而且这种嵌入式系统大概率是魔改的Linux。 首先看CPU架构,cat /proc/cpuinfo
,嗯,是大端mips16的构架,很多路由器的CPU都是这构架,其它常见的还有mipsel、ARM。 然后看内置了啥命令,export
一下,然后挨个翻PATH
变量的目录。 你还别说,发现了不少玩意:smbd
Samba文件打印机共享服务器,似乎被魔改或版本过旧导致无法匿名登陆。bftpd
一个比较精简的FTP服务器,似乎被魔改导致无法匿名登陆。tftpd
TFTP文件传输服务的服务端,被魔改导致接收到文件时会自动重启,且发送接收文件路径固定不可修改。boa
一个精简的Web服务器,似乎被魔改。axel
多线程HTTP/HTTPS下载器。busybox
远古阉割版。- 其它路由器用的乱七八糟的二进制文件。
- 之后在
\usr\local
发现了jre
(java运行环境)。
由于mips16构架的二进制文件网上比较稀缺,所以可能有同学需要,我把提取出的二进制文件打包放在了:CSDN下载。如果觉得CSDN下载不方便,就请评论区告诉我,我再放其它网盘一份。
不过发现没有bash
、而且busybox
命令严重不全,这就很蛋疼了。 去Busybox官网翻了一下,很贴心,提供了mips16架构CPU的二进制文件busybox-mips
,搞一个下来。 链接:busybox 1.31.0 binaries 插上U盘,按照惯例会被挂载到/mnt
目录下,果然多了一个文件夹usb1_1
,打开并chmod 777 ./busybox-mips
,就可以用完整版的Busybox了。 注意,如果你的U盘/移动硬盘没有识别并自动挂载,建议检查文件系统,我的U盘文件系统是FAT32,块大小为4KB,实测是可以识别的。 这回能用df命令了,执行./busybox-mips df -m
,可以看到有两块空间是可用的,分别是U盘/mnt/usb1_1
和约84MB的/usr/osgi
,猜想是光猫的内置闪存,去看了一下,闪存内有一大堆不明所以的文件,先不管。 OK既然内置了Samba服务器,那肯定要利用起来。不过这光猫的是个魔改版,折腾了足足两晚上才跑起来,坑爹啊! 简单说一下有啥坑:- share共享方式(匿名访问)死活用不成,必须要user共享方式。
- user共享方式默认需要nobody用户,但是
adduser nobody
会提示adduser: group name nobody already in use
,但是我执行cat /etc/passwd
,里面明明没有nobody用户啊!?这个问题最后通过换成光猫root用户CMCCAdmin解决了。 - Samba老版本的一个BUG,普通用户会错误,必须要root用户。
下面说一下如何配置,首先依次执行:
mkdir /mnt/usb1_1/sambamkdir /mnt/usb1_1/samba/logs ./busybox-mips vi /mnt/usb1_1/samba/smb.conf#然后把下文中的配置文件修改并写进去。
下面是一个光猫能用的配置:smb.conf
。(OldLiu请自行改为你想要的用户名)
[global] netbios name = server workgroup = workgroup max connections = 0 deadtime = 0 log file = /mnt/usb1_1/samba/logs/%m.log max log size = 50 guest ok = no guest account = CMCCAdmin #guest account = nobody encrypt passwords = yes security = user load printers = no [External USB Disk] path = /mnt/usb1_1 browseable = yes writable = yes available = yes admin users = OldLiu valid users = OldLiu write list = OldLiu [Internal Flash Disk] path = /usr/osgi browseable = yes writable = yes available = yes admin users = OldLiu valid users = OldLiu write list = OldLiu
接下来编写这个脚本(OldLiu改成你刚才设的用户名,并放置在/mnt/usb1_1/samba/
下),运行并输入两次密码,就可以启动Samba文件共享服务器了。
#!/bin/shcd "$(dirname "$0")"#read -p "Enter username:" namename='OldLiu'echo "Your user name is $name."echo "$name::0:0:root:/:/bin/sh" >> /etc/passwd#echo "nobody::500:500:Linux USER:/:/bin/sh" >> /etc/passwdsmbpasswd -c smb.conf -a $namesmbd -D -s ./smb.conf#smbd -F -S -s ./smb.conf &
之后在Windows上通过Windows + R
打开运行,输入\\192.168.1.1
回车,再填好刚才设置的用户名和密码,就大功告成了。还可在此电脑上右键->映射网络驱动器
,让其作为两块网络硬盘固定显示在文件资源管理器里面。
killall smbd
,想再打开,可以smbd -D -s /mnt/usb1_1/samba/smb.conf
。 多台设备公用的文件,比如音乐,电影等,可以放置在U盘/移动硬盘上,开启服务器后多个设备随时都能访问,挺方便的。
精彩评论