翻墙小白的SS搭建笔记。
写在前面
按照网上的这篇用Google Cloud Platform搭建Shadowsocks服务教程 来搭建小飞机服务,但是操作的过程中踩了点坑,这里记录下在服务器上搭建的详细过程, 以备下次少踩点坑。
有关申请GCP和创建实例的步骤,这里略去,以下操作步骤基于Ubuntu 18.04.2,主要的命令语句参考用Google Cloud Platform搭建Shadowsocks服务教程。
准备工作
创建实例后,点击VM实例页面中的SSH按钮,连接到服务器。
登录服务器后,先获取 root 权限:
sudo -i
更新系统:
apt update
apt upgrade
启用BBR
BBR 由 Google 开发,供 Linux 内核的 TCP 协议栈使用,具体我也不甚了解,可以简单理解为它能加速网络传输速度。
好了,启用吧。
写入配置:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
配置生效:
sysctl -p
校验:
lsmod | grep bbr
看到输出类似tcp_bbr 20480
这样的内容,则表明启用成功了。
搭建SS Server
SS Server的安装可以参考官方文档:shadowsocks.
更新软件包:
apt-get update
安装python-pip:
apt-get install python-pip
使用 pip 安装 SS server:
pip install shadowsocks
安装成功后,创建配置文件:
vi /etc/shadowsocks.json
在文件中添加以下内容:
{
"server":"0.0.0.0",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"password",
"timeout":300,
"method":"aes-256-cfb"
}
这里:server_port, password对应的是之后你在Shadowsocks客户端上配置的端口和密码,请自定义。
保存文件后,启动SS server:
ssserver -c /etc/shadowsocks.json -d start
看到输出started,则表示启动成功。
但是很不幸,我执行这一步时,启动报错,显示:
undefined symbol EVP_CIPHER_CTX_cleanup shadowsocks start failed
参考这篇ShadowSocks2.8.2启动报错”undefined symbol EVP_CIPHER_CTX_cleanup”, 作者指出是由于openssl升级导致,按照文章指示,做了如下操作:
编辑/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py
文件:
【这里文件地址可能不大一样,你可以使用find找到shadowsocks/crypto/openssl.py
文件】
使用 vi 打开文件,将文件中所有EVP_CIPHER_CTX_cleanup都修改为EVP_CIPHER_CTX_reset。
作者在文中很贴心的指出共有两处,在第52行和111行,感谢作者的分享。
修改完成后,重新启动SS server即可。
更多SS server相关命令,参考shadowsocks wiki.
设置开机自启
创建脚本文件:
vi /etc/init.d/shadowsocks
添加如下内容:
#!/bin/sh
start(){
ssserver -c /etc/shadowsocks.json -d start
}
stop(){
ssserver -c /etc/shadowsocks.json -d stop
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
stop
start
;;
*)
echo "Usage: $0 {start|reload|stop}"
exit 1
;;
esac
为该文件添加可执行权限:
chmod +x /etc/init.d/shadowsocks
新建shadowsocks.conf:
vi /etc/init/shadowsocks.conf
添加如下内容:
start on (runlevel [2345])stop on (runlevel [016])pre-start script
/etc/init.d/shadowsocks start
end script
post-stop script
/etc/init.d/shadowsocks stop
end script
执行:
update-rc.d shadowsocks defaults
开机自启设置完成。
如果开机自启没有成功,请检查下/etc/init.d/shadowsocks
文件,确保脚本中不存在语法错误,比如中文符号。
防火墙配置
写这个是因为当时按照教程搭建完SS server后,发现还是翻不了墙,又不知道哪里出了问题,领导帮忙debug了下,修改了防火墙规则,问题解决。
在GCP 主页中,选择菜单 VPC 网络 =>防火墙规则, 创建防火墙规则:
查看日志
less /var/log/shadowsocks.log
如果日志上没有访问记录,可以考虑查看防火墙状态:
ufw status
或者查看端口情况:
netstat -anp
判断问题出在哪里。
参考
用Google Cloud Platform搭建Shadowsocks服务教程
ShadowSocks2.8.2启动报错”undefined symbol EVP_CIPHER_CTX_cleanup”