在CentOS上搭建Shadowsocks服务器

最后更新日期:2016-12-30


##一.Shadowsocks 简介

##二.Shadowsocks服务端的配置

##三.Shadowsocks客户端的配置

##四.浏览器配置

##五.参考

前言
本文主要讲述如何在VPS上搭建Shadowsocks代理服务器.题图你懂的.

一.Shadowsocks

Shadowsocks简介

Shadowsocks(中文名称:影梭)是使用Python、C++、C#等语言开发的、基于Apache许可证的开放源代码软件,用于保护网络流量、加密数据传输。Shadowsocks使用Socks5代理方式。
Shadowsocks分为服务器端和客户端。在使用之前,需要先将服务器端部署到服务器上面,然后通过客户端连接并创建本地代理。

Shadowsocks的官网:https://github.com/shadowsocks/shadowsocks
据说作者被请去喝茶了,然后就删除了原始代码,但是fork的很多,也有很多在此基础上改的开源项目,比如ShadowsocksR。

Shadowsocks 的作用

最主要的就是翻墙了,通俗的说,用来上谷歌,facebook,youtub等等
原理可以看这篇:写给非专业人士看的 Shadowsocks 简介

二.Shadowsocks 服务端安装配置

以下文章所写的内容都基于下面的假设,请根据自己的情况自行判断是否合适.

  • 1 本地国内主机能够正常上网,在此机器上安装Shadowsocks客户端.
    就是你现在用的电脑了,此主机标示为 本地主机.
  • 2 vps 国外主机能够正常访问墙外网站
    就是你得VPS主机了,此主机标示为 VPS主机.假定为cebtos系统,IP为:111.111.111.111.(linux系统的配置可以自行搜索,很多).
  • 3 本地dns设置要能避开dns污染
    这个就有点复杂了,具体的搜索吧.
  • 4 浏览器配合GFWlist
    这个在浏览器和应用配置中会提到一些.

2.1 stunnel 服务端安装安装

本文安装Python版本的Shadowsocks

先安装pip

1
yum install python-setuptools && easy_install pip

然后安装服务端:

1
2
pip install --upgrade pip
pip install shadowsocks

安装完成后,需要创建配置文件/etc/shadowsocks.json

1
vi /etc/shadowsocks.json

内容如下:

1
2
3
4
5
6
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "1234567!@#",
"method": "aes-256-cfb"
}

说明:

server:代理地址,默认本机为0.0.0.0
server_port:服务监听端口
password:连接密码
method:加密方法,可选aes-128-cfb, aes-192-cfb, aes-256-cfb, bf-cfb, cast5-cfb, des-cfb, rc4-md5, chacha20, salsa20, rc4, table
以上信息在配置 shadowsocks 客户端时需要配置一致,具体说明可查看 shadowsocks 的帮助文档。

2.2 配置自启动

新建启动脚本文件

1
vi /etc/systemd/system/shadowsocks.service

内容如下:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json
[Install]
WantedBy=multi-user.target

执行以下命令将 shadowsocks 服务加入自启动

1
systemctl enable shadowsocks

启动服务:

1
systemctl start shadowsocks

查看服务状态检查是否加入自启动成功:

1
systemctl status shadowsocks -l

如果显示类似信息,则说明已经成功了

1
2
3
4
5
6
7
8
9
10
11
12
shadowsocks.service - Shadowsocks
Loaded: loaded (/etc/systemd/system/shadowsocks.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2015-12-21 23:51:48 CST; 11min ago
Main PID: 19334 (ssserver)
CGroup: /system.slice/shadowsocks.service
└─19334 /usr/bin/python /usr/bin/ssserver -c /etc/shadowsocks.json
Dec 21 23:51:48 morning.work systemd[1]: Started Shadowsocks.
Dec 21 23:51:48 morning.work systemd[1]: Starting Shadowsocks...
Dec 21 23:51:48 morning.work ssserver[19334]: INFO: loading config from /etc/shadowsocks.json
Dec 21 23:51:48 morning.work ssserver[19334]: 2015-12-21 23:51:48 INFO loading libcrypto from libcrypto.so.10
Dec 21 23:51:48 morning.work ssserver[19334]: 2015-12-21 23:51:48 INFO starting server at 0.0.0.0:8388

2.3 一键安装脚本

新建文件install-shadowsocks.sh:

1
vi install-shadowsocks.sh

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
# Install Shadowsocks on CentOS 7
echo "Installing Shadowsocks..."
random-string()
{
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1
}
CONFIG_FILE=/etc/shadowsocks.json
SERVICE_FILE=/etc/systemd/system/shadowsocks.service
SS_PASSWORD=$(random-string 32)
SS_PORT=8388
SS_METHOD=aes-256-cfb
SS_IP=`ip route get 1 | awk '{print $NF;exit}'`
GET_PIP_FILE=/tmp/get-pip.py
# install pip
curl "https://bootstrap.pypa.io/get-pip.py" -o "${GET_PIP_FILE}"
python ${GET_PIP_FILE}
# install shadowsocks
pip install --upgrade pip
pip install shadowsocks
# create shadowsocls config
cat <<EOF | sudo tee ${CONFIG_FILE}
{
"server": "0.0.0.0",
"server_port": ${SS_PORT},
"password": "${SS_PASSWORD}",
"method": "${SS_METHOD}"
}
EOF
# create service
cat <<EOF | sudo tee ${SERVICE_FILE}
[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/ssserver -c ${CONFIG_FILE}
[Install]
WantedBy=multi-user.target
EOF
# start service
systemctl enable shadowsocks
systemctl start shadowsocks
# view service status
sleep 5
systemctl status shadowsocks -l
echo "================================"
echo ""
echo "Congratulations! Shadowsocks has been installed on your system."
echo "You shadowsocks connection info:"
echo "--------------------------------"
echo "server: ${SS_IP}"
echo "server_port: ${SS_PORT}"
echo "password: ${SS_PASSWORD}"
echo "method: ${SS_METHOD}"
echo "--------------------------------"

执行以下命令一键安装:

1
2
$ chmod +x install-shadowsocks.sh
$ ./install-shadowsocks.sh

安装完成后会自动打印出 Shadowsocks 的连接配置信息。比如:

1
2
3
4
5
6
7
8
Congratulations! Shadowsocks has been installed on your system.
You shadowsocks connection info:
--------------------------------
server: 10.0.2.15
server_port: 8388
password: RaskAAcW0IQrVcA7n0QLCEphhng7K4Yc
method: aes-256-cfb
--------------------------------

##三.Shadowsocks客户端的配置

3.1 客户端下载

客户端可以从以下连接下载
[Shadowsocks客户端]https://shadowsocks.org/en/download/clients.html
支持各种对应的操作系统,基本上算是全平台了。

Shadowsocks客户端

3.2 客户端配置

图形界面的配置基本都一样,这个是qt5版本的界面

注意红框中的参数:
ProfileName:可以给这个服务器取一个别名,照喜好来
Server Address:服务器地址,就是vps的地址
Server Port:服务器端口
Password:连接密码
Encryption Method:加密方式

这后四项就是配置服务器时候所设置的,必须和服务器的设置对应
Local ServerType:这项必须选Socks5!

local address和local Port是作为本地代理的地址和端口,一般默认不更改;
然后确定就可以了。

##四.浏览器配置
浏览器配置有插件或者直接设置代理,还有配合gfwlist的,请自行搜索。

最简单的,在浏览器代理设置里面,填入:
代理类型:Socks5
代理IP:127.0.0.1
代理端口:1080

##五.参考
维基百科Shadowsocks
写给非专业人士看的 Shadowsocks 简介
Centos7下安装Shadowsocks




END