搭建ss服务器
背景
更换了一个不太好控制的路由器,于是把ss服务器搭建在树莓派上.
本文记录直接搭建和docker搭建两种方式.
提供ss服务器的两个包
shadowsocks
- python2.7写的
- 可执行文件名为
ssserver
- 项目陈旧不再维护,且性能可能不大好,不推荐使用
shadowsocks-libev
- 主要是C语言写的,还算小巧
- 可执行文件有许多
ss-server
,ss-client
,ss-manager
等 - 是目前shadowsocks官方docker使用的工具
- 由于较新,支持一些新的加密方式等等
- 可执行文件变了,但配置方式和命令选项没有变
配置方式
可以通过命令行配置,也可以用配置文件配置,自主选择即可.
配置项目
无论是GUI端,还是CLI端,通常都支持配置
- 端口
- 密码
- 加密方式
- 是否允许UDP
- 超时时间(秒)
配置文件
可以使用以下命令启动
1 | ss-server -c /path/to/config.json |
通常如果直接安装 shadowsocks-libev
包,
默认配置文件位于 /etc/shadowsocks-libev/config.json
默认的配置内容有
1 | { |
-
服务器设置
0.0.0.0
而不是127.0.0.1
,
因0.0.0.0
表示本机上的所有地址,(有线网卡,无限网卡,环回网络(127.x)) -
可能是追求client配置与server配置尽量共用同一个配置文件,
出现了local_address
与local_port
等配置,暂时不用理会.
在浏览器配置socks协议时可以写上面的127.0.0.1:1080
. -
mode的值有
- tcp~andudp~
- tcp~only~
- udp~only~
-
密码方面,建议使用安全的密码以防止一些针对ss服务器的攻击
1
openssl rand -base64 16
允许的情况下可以生成更长的密码
命令行配置
1 | ss-server \ |
本地搭建使用
可以安装 shadowsocks-libev
包之后
- 直接使用
ss-server
命令手动启用 - 借用系统服务
shadowsocks-libev.service
启用,
当然,需要先检查下对应服务中读取的是哪里的配置文件
docker搭建
使用docker搭建的优点:
- 自启动依赖已经配置好的docker,更方便
- 配置更加标准一些,迁移性更好
docker镜像
官方只提供了有限的docker容器支持,x86,arm64等
树莓派 armv7l
或 armhf
上能够使用的暂时没有
其他个人自定义的Dockerfile又有各种的不爽.
好在官方提供了Dockerfile.
官方提供的基础镜像中,看着还是alpine顺眼一些,其他不熟.
build思路
- 设置一些环境变量
- 安装一些基础包
- 将整个项目拷贝到镜像中
- 直接在镜像中
make
make
结束后会删除项目的源代码
使用官方Dockerfile自行编译
1 | 准备环境 |
- 项目中提到的三个lib不会嵌套下载,需要手动clone到本地
- 需要手动checkout到对应的hash
- ipset的项目名和文件夹名不符,需要注意
- 没有这些lib会报错说找不到
makefile.in
- 可能会报信息说,延后软件的配置,因xxx没有安装,不要紧
- 其他报错说没安装的一些包,编辑Dockerfile添加安装即可
运行方法
官方也提供了 docker-compose.yml
文件以供启动.
且还能参照dockerhub上的一些启动说明来进行适当的自定义.比如
1 | shadowsocks: |