龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

国外vps搭建shadowsocks

时间:2016-09-28 14:31来源:未知 作者:admin 点击:
分享到:
一、VPS 1.1 VPS的购买 在这里我使用能够支持国内支付宝支付的 BudgetVM 购买VPS。 注册过程省略不表。 有不同的套餐选择,根据个人能力购买。 以下我是我的VPS购买系统配置(可选择)

一、VPS

1.1 VPS的购买

在这里我使用能够支持国内支付宝支付的BudgetVM购买VPS。
注册过程省略不表。
Alt text
有不同的套餐选择,根据个人能力购买。
Alt text
以下我是我的VPS购买系统配置(可选择)
Alt text

1.2 搭建Shadowsocks服务器

CentOS环境为VPS,Centos 64bit,python2.4。

1.2.1 安装相关依赖

默认系统没有编译工具,安装gcc及其他依赖。

1
2
yum install gcc
yum install m2crypto python-setuptools


1.2.2升级python版本

自带python版本太低,先升级python版本。
首先在https://www.python.org/ftp/python/选择对应版本并进行下载

1
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz


解压压缩包并进入源码目录

1
2
tarxvfPython-2.7.9.tgz
cdPython-2.7.9

对源代码进行编译安装

1
2
3
./configure --prefix=/usr/local/python27
make
make install

备份原python链接为python24,后续用于修复yum命令;对新版本python做软链接放入系统环境变量下。

1
2
mv /usr/bin/python /usr/bin/python24
ln -s /usr/local/python27/bin/python /usr/bin/

CentOS的yum命令是依赖旧版本python的,不做配置是无法使用的;

1
2
3
4
5
6
> $ yum   
>There was a problem importing one of the Python modules
>required to run yum. The error leading tothis problem was:  
>    No module named yum
>Please install a package which provides thismodule, > >or
>verify that the moduleis installed correctly.

修改yum脚本,将第一行的解析脚本改为先前备份的python24,使其使用旧版本。

1
2
$vim /usr/bin/yum 
将 #!/usr/bin/python 改为 #!/usr/bin/python24

1.2.3 安装pip

使用easy_install安装的pip报错,这里使用get-pip.py安装。
首先在pip官网获取get-pip.py脚本下载地址,使用wget进行下载,这里指定了no-check-certificate参数,否则会证书报错。

1
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py

运行脚本进行安装就可以了

1
pythonget-pip.py

注:可能出现的错误

[get-pip]使用get-pip安装pip提示找不到zlib,如下

zipimport.ZipImportError: can’t decompress data; zlib not available

解决方法建下文错误汇总。

1.2.4 安装shadowsocks并配置服务器

使用pip安装shadowsocks

1
pip install shadowsocks

shadowsocks的配置文件是一个JSON文件,可以放在任意位置,我是将其放在home目录下

1
2
cd~
touch ss.json

以下是ss.json文件,使用时将注释删去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
# 服务器ip,填写0.0.0.0
"server":"0.0.0.0",
# ss监听的端口
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
# ss服务密码
"password":"mypassword",
"timeout":300,
# ss服务器加密方式
"method":"aes-256-cfb",
# 是否使用 TCP_FASTOPEN
"fast_open": false,
"workers": 1
}

运行服务并测试,测试通过后使用ctrl+c终止进程

1
ssserver-css.json

1.2.5 将Shadowsocks作为服务运行

Shadowsocks 2.6以上版本可以直接将ss运行在后台

1
2
ssserver -c ss.json -d start
ssserver -c ss.json -dstop

二、 Shadowsocks的使用

2.1本地安装Shadowsocks

2.1.1 Windows

下载shadowsocksWindows版本,Windows版本为绿色版本,不需要安装,直接运行进行配置。
ss配置

服务器IP:搭建ss的服务器IP
服务器端口:ss服务器中配置的server_port
密码:ss服务器中配置的password
加密:ss服务器中配置的method
备注:可以作为该配置的名字
代理端口:本地监听的端口,本机的请求发送到该端口就可以通过ss服务器上网

点击确定进行保存;在托盘区右键点击shadowsockets图标选择服务器。
menu

启用系统代理:开启后,电脑的全部网络访问都通过ss来访问,也可以设置系统代理模式筛选哪些通过ss;
系统代理模式:可选为PAC模式和全局模式
PAC模式:在shadowsockes目录下会有一个pac文件指定规则,符合规则的访问才通过ss访问;可以使用SwitchyOmega将pac导出后覆盖pac.txt实现全局的pac上网;
全局模式:所有的访问都通过ss。
PAC:可以选择使用的PAC,并且可以通过GFWlist更新本地pac规则。

2.1.2 Chrome浏览器安装SwitchyOmega插件

SwitchyOmega插件是用来代理上网的,其自动模式可以智能选择是否使用ss上网,很好很强大。

2.1.2.1安装SwitchyOmega插件

1、在SwitchyOmega官网下载SwitchyOmega拓展到本地;
2、在chrome地址栏输入chrome://extensions/(或点击菜单-更多工具-拓展程序)打开拓展程序管理页面,将下载的crx文件拖到该页面,选择来确认添加。
add

2.1.2.2 配置SwitchyOmega插件

一、下载配置文件备份
1、在SwitchyOmega官网配置页面找到GFWList.bak下载链接,下载到本地,通过该备份可以很快配置好插件。
2、点击SwitchyOmega图标-选项打开配置页面
SwitchyOmegaConfig
3、选择导入/导出-从备份文件恢复,选择下载的GFWList.bak文件
import
SwitchyOmega会创建一个GFWed情景模式,并为自动切换情景模式添加规则。

二、配置GFWed情景模式

1、点击GFWed情景模式,打开配置界面,修改端口为本机的代理端口。
port
localPort
点击应用选项保存更改。
2、 配置自动切换情景模式
点击自动切换情景模式,打开配置界面,更新情景模式,该操作会自动获取被墙的网站列表,当访问这些网站时自动使用GFWed连接,其他使用直接连接。
auto
点击应用选项保存更改。
3、完成
开启自动切换就可以访问网页了。

三、错误汇总

3.1 [get-pip]使用get-pip安装pip提示找不到zlib

zipimport.ZipImportError: can’t decompress data; zlib not available

解决办法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

1. 安装zlib

yum install zlib,zlib-devel
2. 重新编译python

cd Python-2.7.9
./configure --prefix=/usr/local/python27
3.修改编译好的配置文件  
打开`Modules/Setup`文件,找到

#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
将其注释去掉,开启zlib支持
4.编译安装

make
make install


3.2 [get-pip]使用get-pip安装pip提示找不到HTTPSHandler

ImportError: cannot import name HTTPSHandler

原因:系统没有安装ssh
解决办法:

1
2
3
4
5
6
7
1. 安装openssh
yum install openssl,openssl-devel
2. 重新编译安装python
cd Python-2.7.9
./configure --prefix=/usr/local/python27
make
make install


四、待做事项

五、参考资料

六、鸣谢

李庆磊同学~

七、多用户使用VPS

shadowsocks的多用户配置


以下更新于2016年8月14日
关于在VPS上提供多用户使用的端口配置

7.1 ss.json配置文件设置

同前文中的配置有所不同的是,配置文件进行如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
                       "server":"0.0.0.0",
                       "port_password":{
                               "8389":"******",
                               "8390":"*******",
                               "8391":"*",
                               "8392":"********",
                               "8393":"**********"
}
,

                       "_comment":{
                               "8390":"*******",
                               "8391":"********",
                               "8392":"*********"
}
,

                       "local_address": "127.0.0.1",
                       "local_port":1080,
                       "timeout":300,
                       "method":"aes-256-cfb",
                       "fast_open": false
}


配置的说明:

参数解释
serverthe address your server listens(服务器IP)
local_addressthe address your local listens(本地代理地址)
local_portlocal port(本地代理端口)
port_passwordpassword used for encryption(自己设定的服务器端口和密码)
timeoutin seconds(超时断开,以秒为单位)
methoddefault: “aes-256-cfb”, see Encryption(加密方式)
fast_openuse TCP_FASTOPEN, true / false(是否使用TCP)
workersnumber of workers, available on Unix/Linux(这个只在Unix和Linux下有用,可不设置)

之后使用如下命令重启shadowsock服务器即可:

1
开始:ssserver -c 你的shadowsocks配置的json文件 -d start结束:ssserver -c 你的shadowsocks配置的json文件 -d stop举例 e.g.开始:ssserver -c /etc/ss.json -d start结束:ssserver -c /etc/ss.json -d stop


八、使用工具突破公司内网

来到公司大概要20天了,作为程序员无法避免地有听歌、下载大文件、翻墙的需求,然而在我在的A公司有自己的DNS服务器还有流量的控制,故无法听网易云,无法谷歌,无法上github,一些资料无法查阅。故找了点方法打通内网。

8.1 突破内网原理

通过shadowsock翻墙,一般能直连外网的情况下都适用,但是在需要代理上网的环境下,就需要借助其他软件了。
普通环境下上网的过程是: 请求->shadowsocks->访问。
但是内网代理环境下,所有需要访问外网的请求必须先经过代理。由于shadowsocks没有设置代理的选项那么我们就需要借助proxifier类似的工具,先设置shadowsocks走代理访问外部,再将其他网络请求走shadowsocks创建的本地代理。这样我们就实现了穿越http代理。
关于这个穿越http代理,我说一下我的理解: 就是我们通过代理和外界进行了沟通,形成了一个隧道。我们将真实的请求通过这个隧道传递/接受,而代理只看到隧道有流量,却不知道里面具体是什么。

8.2 Proxifier

shadowsocks通过创建一个本地的1080端口的socks5的代理,如果设置了允许局域网访问,还会在本地创建一个8123端口的http代理。
使用Proxifier这个软件,控制代理规则。具体的操作如下:

  • Profile -> Advance -> Http Proxy Servers -> 开启

  • Profile -> Proxifier -> 公司的代理服务器地址和端口

  • Profile -> Proxification Rules -> Add

  • 添加代理规则,命名随意,比如ss,应用软件添加shadowsocks.exe

  • action选择第二步添加的可以访问外网的代理

  • 如果http的代理不可用(比如A公司使用HTTP协议做代理不能突破外网),可在第二步时,添加或追加一个相同地址的HTTPS代理,这样公司就不能监控你访问的真实地址了,只会认为你要开启一个隧道,访问的是一个IP地址。

  • 记得把新添加的放在最上面,规则是从上往下执行的,并且保留最后一个defalut,不然其他情况上不了网。

  • 接着开启shadowsocks,启用系统代理

可以选择安装chrome的插件SwitchOmega(其实就是proxySwitchy的新版本)。添加新规则,选择socket5代理,地址填写127.0.0.1, 端口1080。使用新的规则模式上网,比如google.com进行一下测试,或者查看一下ip地址。

通过使用proxifier程序,就能在公司内网进行听歌,下载大文件等操作,为了公司的安全期间,最好不要通过这样的代理隧道做一些有损公司利益的操作,不要整天想搞个大新闻。


精彩图集

赞助商链接