香菇肥牛的博客

欢迎您来到我的博客https://qing.su 且听我慢慢倾诉……

香菇肥牛的博客

安全访问互联网系列教程③——Python方式搭建Shadowsocks服务器 | 香菇肥牛的博客

12/03/2015

VPS教程>

安全访问互联网系列教程③——Python方式搭建Shadowsocks服务器

Shadowsocks 是一种安全的 socks5 代理,可以保护你的上网流量。通过搭建Shadowsocks服务器,我们可以用客户端连接,从而实现安全上网。

本次教程,我们将介绍在CentOS, Debian, Ubuntu上安装Shadowsocks服务器的方法。由于之前测试中我试图使用libev方式在CentOS上安装,却遇到了各种未知的错误,所以此次我们采用python方式安装。python中的包安装器pip可以很方便地简化我们的操作。

系统及配置要求:Cent OS 6/7, Debian 6/7, Ubuntu 14, 其他版本未测试. 内存要求:128MB.

下面,我们就开始Shadowsocks的手动安装。由于步骤繁多,因此较易出错,请务必仔细follow.

 

一,构建依赖环境

安装Shadowsocks之前,我们需要安装必要的软件包。使用root账户登录SSH, CentOS用户执行下面的命令:

1
yum install -y openssl-devel gcc swig python python-devel python-setuptools autoconf libtool libevent automake curl-devel zlib-devel perl perl-devel cpio expat-devel

Debian/Ubuntu用户执行下面的命令:

1
2
apt-get update
apt-get install python python-dev python-pip gcc swig automake perl cpio

需要注意的是,一些系统必备的默认已经安装的包未在上述命令中列出,比如wget, make等。上述依赖环境较为重要,若缺失部分软件包(比如openssl-devel)可能导致后期编译失败却无法正常报错,因此请仔细核对。

 

二,安装pip

pip是python里面的包安装器,使用pip可以很大程度上简化我们的操作。使用CentOS系统需要首先安装pip, 使用Debian/Ubuntu的用户可以跳过这一部分。首先,我们需要到python官网上下载一个Setuptools安装器。切换到工作目录后,在SSH中执行:

1
wget https://bootstrap.pypa.io/ez_setup.py

下载完毕后,执行:

1
2
python ez_setup.py install
easy_install pip

这样我们安装好了pip, 就可以进行接下来的安装了。

 

三,安装shadowsocks

执行下面的命令安装shadowsocks.

1
2
3
4
pip install M2Crypto
pip install greenlet
pip install gevent
pip install shadowsocks

我们需要shadowsocks跟随开机启动。CentOS系统执行:

1
chkconfig shadowsocks on

Debian/Ubuntu系统执行:

1
update-rc.d shadowsocks defaults

这样就安装好了shadowsocks并实现了开机启动。

 

四,配置Shadowsocks

Shadowsocks配置文件位于/etc/shadowsocks.json 打开该文件,改成下列内容

1
2
3
4
5
6
7
8
9
10
11
12
{
"server":"0.0.0.0",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
"8001":"password0",
"8002":"password1",
"8003":"password2"
},
"timeout":100,
"method":"aes-256-cfb",
}

请将800x, passwordx改成你想设置的端口号和密码,支持多用户。需要注意的是,请不要将端口号设置为可能与系统其它服务冲突的端口,比如SSH的22, Apache的80, MySQL的3306等。

配置完毕后,开启Shadowsocks服务。执行下列命令:

1
/usr/bin/ssserver -c /etc/shadowsocks.json -d start

这样,我们开启了Shadowsocks服务。

 

五,其它设置

CentOS用户在安装完毕后,还暂时无法用客户端连接服务器进行安全上网,需要对系统中的SeLinux进行配置。这是一步较为繁琐的工作,请自行百度。若您不知道怎样配置,请直接将SeLinux关闭。关闭方法如下。在SSH中执行下面的命令可以关闭SeLinux.

1
2
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

部分用户在按上述步骤操作后仍无法连接服务器和安全上网,这可能是由于iptables设置错误导致的。执行下列命令设置iptables.

1
2
3
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport [Server_Port] -j ACCEPT
iptables-save
iptables restart

这样,我们配置好了iptable. 根据以往经验,很多朋友在配置iptables时会失败。若您在执行上述命令时报错,请仔细检查:1, 是否将[Server_Port]更改为您设置的服务端口; 2, hyphen的数量是否有错误(一般来说,首字母形式的开关,之前有一个hyphen; 全拼形式的开关,之前有两个hyphen); 3, iptables是否已被关闭。

 

至此,我们安装好了Shadowsocks. 您可以从Sourceforge下载Shadowsocks客户端,连接我们刚刚搭建的Shadowsocks服务器,实现高速安全上网了。客户端的下载地址如下。

http://sourceforge.net/projects/shadowsocksgui/files/dist/

 

若您在安装过程中遇到各类问题,请您在文末留言即可,我将尽可能予以答复。本文作者为香菇肥牛(http://qing.su),未经本人允许,不得以任何形式转载。

  1. Javen

    P版的SS有个好处就是在支持UDP转发的同时允许在同一个配置文件中配置多用户多端口账户。不过感觉在用户数量较多的时候,明显不如L版的稳定。CHACHA20加密需要额外安装环境包。

    1. 香菇肥牛

      是的呢,不过在用户数量不多的时候P版用起来还是比较稳定的~~以前用过node.js版的同样支持多用户,不过感觉也不怎么稳定

来一发吐槽