CentOS 搭建 Shadowsocks

CentOS 搭建 Shadowsocks

26 March 2017

一年前,开始频繁使用 Telegram 后,就对 VPN 有很大的依赖。当时刚毕业,也只是一直用国内搜索引擎。后来我跟同事买了 云梯,也挺贵的,速度还不快。


后来,drakeet 给我了一个 Shadowsocks 账号,是用一台日本服务器搭建的。我也因为需要搭建 个人文艺站 需要这么一台 VPS。反正就是懒吧,明明自己有一台日本的 VPS,还开了一年多了,还在用别人服务器的 VPN,真的是糟糕透了,2333!其实,最近也挺忙的,我一直想写写自己这半年来 生活与感悟。可是,真的...时间调度很成问题。但是,也打好了草稿 (。>﹏<。) 


centos_shadowsocks_1


最近,由于友人把服务器全部转战阿里云了,所以就没 Shadowsocks 了。这时候,真的懒不了了,因为 Alfred 的很多 WorkFlow 都需要爬梯子。自己也习惯于:直接在 Chrome 打要搜索的内容 跳 Google 了。所以,得手动搭建 Shadowsocks 了。




安装和配置 shadowsocks 项目


Shadowsocks 搭建文档


sudo yum install python-setuptools && easy_install pip  
sudo pip install git+https://github.com/shadowsocks/shadowsocks.git@master  




创建配置文件


sudo vi /etc/shadowsocks.json  

写上如下:

{
    "server":"<域名 || ip>",
    "server_port":"<Shadowsocks 远程端口>",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"<Shadowsocks 密码>",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

其中,"method":"aes-256-cfb"Shadowsocks 的加密方式。
然后 ssserver -c /etc/shadowsocks.json -d start 启动 shadowsocks 服务。

启动 ssserver -c /etc/shadowsocks.json -d start
关闭 ssserver -c /etc/shadowsocks.json -d stop




尝试 chacha20


由于,chacha20 的加密方式的 Shadowsocks 最不容易 被堵。所以,有点强迫症的人,都会追求添加上。

尝试将 "method":"aes-256-cfb" 改为 "method":"chacha20",并不可行。


centos_shadowsocks_2




添加 chacha20 加密方式


Shadowsocks chacha20

sudo yum install m2crypto  
sudo yum install build-essential  
wget https://github.com/jedisct1/libsodium/releases/download/1.0.8/libsodium-1.0.8.tar.gz  
tar xf libsodium-1.0.8.tar.gz && cd libsodium-1.0.8  
./configure && make -j2
sudo make && make check  
sudo make install  
sudo yum install lib32ncurses5 ia32-libs  

然后,编辑 /etc/ld.so.conf,添加这行:/usr/local/lib。 最后:

sudo ldconfig  
sudo ssserver -c /etc/shadowsocks.json -d stop  
sudo ssserver -c /etc/shadowsocks.json -d start  

看到这个:


centos_shadowsocks_3


OK 了。




配置多个 Shadowsocks


再次 vi /etc/shadowsocks.json

{
    "server":"<域名 or ip>",
    "server_port":"<主 Shadowsocks 端口>",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"<主 Shadowsocks 密码>",
    "port_password": {
       "<主 Shadowsocks 端口>": "<主 Shadowsocks 密码>",
       "<其他 Shadowsocks-1 端口>": "<其他 Shadowsocks-1 密码>",
       "<其他 Shadowsocks-2 端口>": "<其他 Shadowsocks-2 密码>",
       "<其他 Shadowsocks-3 端口>": "<其他 Shadowsocks-3 密码>",
       "<其他 Shadowsocks-4 端口>": "<其他 Shadowsocks-4 密码>",
       "<其他 Shadowsocks-5 端口>": "<其他 Shadowsocks-5 密码>",
       "<其他 Shadowsocks-6 端口>": "<其他 Shadowsocks-6 密码>",
       ...
   },
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

值得注意的是:主 Shadowsocks 的端口和密码要放在 port_password 对象中的第一个位置。




ShadowsocksX 连接


centos_shadowsocks_4