shadowsocks简单介绍

shadowsocks是目前较流行的一种科学上网服务。他的工作原理也比较简单,shadowsocks本质上是socks5代理技术,然而架构方式上将单服务节点拆分成两个子服务:SS Local和SS Server。

工作过程如下:

  1. 当本地请求端需要访问时首先将请求发送至本地SS Local服务
  2. SS Local将数据加密在网络上传输到SS Server,由于信息经过加密不会被GFW提取到特征数据,因此也就翻了墙
  3. SS Server收到数据后解密并访问真正的远程服务资源
  4. 远程返回数据返回到SS Server
  5. SS Server将数据加密传输给SS Local
  6. SS Local收到返回数据解密后发给本地请求端

What's shadow socks

部署shadow socks服务 (SS Server)

安装服务

shadowsocks服务的部署也极为简单,已经有完善的脚本帮助安装,需要稍微注意下的就是安装过程需要root权限,安装方法如下:

# wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh

# sh shadowsocks.sh

配置服务

shadowsocks的配置文件是’/etc/shadowsocks.json’,一个简单的配置文件的写法可以参考这个例子。

# cat /etc/shadowsocks.json
{
    "server":"0.0.0.0",
    "port_password":{
        "8989":"password1",    <--- 第一个服务端口及访问密码
        "8990":"password2"     <--- 多个服务端口指定方法
    },
    "timeout":300,
    "method":"aes-256-cfb",    <--- 注意这个加密方式,配置SS Local需要使用
    "fast_open":false,
    "workers":2
}

多数情况下一个端口就可以满足使用了,这个例子中提供了多个访问端口的配置方法,具体用法可以根据自己的实际情况配置。

启动服务

服务安装过程同时会安装一个启动脚本’/etc/init.d/shadowsocks’,启动方法也很简单。

# service shadowsocks start

为了确保每次系统启动后服务会自动运行最好将服务使用chkconfig进行启用,这样就不必担心系统被运营商或者管理员维护重启后无法使用了。

chkconfig --add shadowsocks
chkconfig --level 2345 shadowsocks on

客户端使用方法(SS Local)

本人使用的是MBP,先分享一下Mac OS上的使用方法。

下载安装SS Local

可以在这里下载ShadowsocksX-NG这个软件,将这个软件安装到应用程序中就可以打开使用了,但首先需要一些设置。

配置SS Local

程序运行后可以看到一个小飞机样子的图标,点击后可以看到配置菜单。

第一步:打开配置界面

Step1

第二步:配置SS Local连接的SS Server服务器

点击“服务器设置”

Step2.1

将配置好的服务填入其中,注意的是“地址”/“端口号”/“加密方法”/“密码”信息需要与SS Server服务端的设置匹配。

Step2.2

配置完成后记得在服务器列表中选择刚刚配置好的那项。

第三步:设置“高级服务”

国内用户最好指定”GFW LIST URL”

https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

Step3

注意,这里有一个”Local PAC Listen Port”信息,这个配置需要在下面一步使用。

第四步:设置本地代理方式

设置本地代理方式之前最好先将GFW list更新一下

Step4.1

打开“系统偏好设置”->“网络”->“高级”->“代理”,勾选“自动代理配置”,在URL中输入:http://127.0.0.1:8090/proxy.pac

Step4.2

完成这个设置后就已经可以进行科学上网了,系统访问GFW屏蔽的服务时就会使用配置好的代理服务器。

使用kcptun加速

有些时候shadowsocks搭建的主服务器在国外机房中的延迟较大,这样会影响访问速度,这时可以使用一些手段为访问加速,比如”kcptun”。

TBC