华硕路由器entware使用及ss代理安装
缘起
由于家里有个树莓派,有个用来数据备份的nas(暂时是基于ubuntu server),经常需要下载国外的软件源、github上的二进制包、pip、go等等。
而往往这些国外的服务在国内简直是龟速,一个10几MB的文件,能下载几十分钟。。。。
之前树莓派自己用ss搭建了本机的代理,可以加速国外网站的访问;但现在服务器多了不想一个一个配置ss,于是有了这次的折腾。
折腾过程
安装entware
我使用的路由器是华硕的ac68u
,由于担心后门什么的,安装的是基于原版gpl开源固件的梅林(Merlin)固件 。
不像koolshare论坛里二次开发的梅林固件,原版的梅林固件更加纯净些,但是诸如插件之类的比较麻烦,需要自己去配置了。
1、开启jfss、ssh
第一步,我们需要一个linux的的环境,这个相信大家都知道,在梅林固件的系统管理
-> 系统设置中
,开启Enable JFFS custom scripts and configs
和启用SSH
选项,这样我们就能使用ssh登录到路由器进行操作了。
2、安装entware
entware
是个类似于apt
、yum
的包管理工具,而梅林原版已经包含了entware的安装工具。
1)挂载u盘
由于路由器的jfss分区非常的小,我们要安装使用各种工具的话(还得包括底层的库)是不够的,因此需要提前在路由器上插入一个u盘。
注意: 关于分区,entware支持ext3类型的分区,可以在其他linux机器上分好区插入路由器,或者在路由器内使用fdisk
、ext3.mkfs
工具进行分区,ext3的分区命令如下(假设u盘是sda1):
mkfs.ext3 -F -m 0 -N 10000000 -v /dev/sda1 # 分好区后一般需要重启下,这样路由器会自动挂载u盘
3)ssh登录到路由器
ssh 管理员用户名@路由器ip # 输入密码即可
注意此处的用户名、密码和登录路由器网页的是一样的。
3)安装entware
由于梅林固件内已经包含了entware的安装脚本,我们直接执行即可:
entware-setup.sh # 根据命令选择u盘的分区号,如果没找到u盘的分区,需要检查下u盘 opkg # 如果opkg执行没问题,就说明安装成功,提示命令没找到则是失败了 # 更新下opkg的软件列表 opkg update opkg upgrade
3、安装ss
经过上面两步,我们相当于有了一个小的linux服务器,可以按照软件包,可以ssh上去进行命令操作。
下面我们使用如下的命令安装ss
# 找一下软件包名称,其他软件也可以这么找 opkg list shadow* # 安装 opkg install shadowsocks-libev-ss-local
经过上面步骤,我们已经安装了ss,下面进行配置,ss的配置文件已经自动生成了,在/opt/etc/shadowsocks.json
。
配置的过程就不讲了,可以看下网上的文档,主要配置下端口,服务器、加密等。
需要注意的一点是: 路由器做整个局域网代理,那么本地地址需要写0.0.0.0
,这样局域网里的其他机器就能使用路由器上的代理了。
安装完成后,使用如下命令看是否能正常运行:
/opt/bin/ss-local -c /opt/etc/shadowsocks.json
4、开机启动
安装ss时,已经自动帮我们创建了自启的服务,在/opt/etc/init.d/S22shadowsocks
,但是我试了并不能开机自启,因此我们通过下面的方法实现。
entware的启动,使用了路由器的u盘挂载钩子,这样在路由器启动后,entware通过相关脚本启动了opkg这些命令。我们要想自启,也可以利用这个机制。
如下命令操作即可:
vi /jffs/scripts/post-mount # 在ln -nsf $1/entware /tmp/opt之后加入下面一行 nohup /opt/bin/ss-local -c /opt/etc/shadowsocks.json & # 重启路由器看是否生效reboot
路由器重启后,可以使用ps命令查看ss是否启动成功。
5、其他机器的配置
如果上面的步骤都是正常的,我们已经得到了一个自动运行在路由器上的ss代理,接下来要做的就是:让其他机器能够使用代理。
我之前参考其他人的实现,在所有的UNIX*系的系统中,增加了一个自定义的脚本,放在/bin/proxy
文件中(注意加执行权限),内容很简单,如下:
#!/bin/bashALL_PROXY=socks5://192.168.1.1:1086 $*
上面的脚本很简单,即在命令执行前,增加一个sock5代理的声明,而这个代理即上面我们安装的ss。
有了这个脚本,一切命令行的代理都简单了,比如curl google测试下,如果我们的代理设置成功了,这里将会正确返回301内容,否则需要检查下:
proxy curl google.com # 其他所有的命令,都可以先proxy一把,真的是非常方便 proxy sudo apt update proxy git pull proxy pip install **
6、遇到的那些坑
1)u盘的兼容性问题导致开机没有自动挂载
曾经折腾了很久,entware总是开机之后就不能挂载了,导致opkg根本就不能用。最后换了个u盘,就再也么有问题了,如果大家也遇到开机不能自动启动entware的情况,可以试着换个u盘。
2)ss不能开机启动
前面也说过了,由于ss自带的开机启动服务并不能自动启用,我们需要再post-mount脚本中自己添加启动过程。
3) 为什么不让路由器自动分发流量,自动代理
之前也试过,将国外的网站自动代理,但是由于路由器羸弱的性能,实际的代理效果并不好,因此还是让路由器做发包的简单的事情,自动代理放在各个客户端实现了。
总结
经过上面的折腾,我们有了一个小小的服务器,里边有一个自动运行的代理服务,局域网内的其他机器可以代理到上面去。
这里边呢,有两个地方感触比较深:
1、entware的启动过程,真的很精巧,让人眼前一亮(使用u盘挂载的钩子,将必要的文件结构初始化,然后运行整套软件系统)
2、proxy命令行代理的方式,也是非常精巧,能够做到在命令行下的通用代理而又非常的简洁
已有1位网友发表了看法:
发表评论