YiluPHP
这家伙很懒,什么都没有留下...

经验 Centos系统中安装部署shadowsocks

浏览数 190474

第一部分:服务端部署

1.shadowsocks这里安装的是python版的

yum install python-setuptools
easy_install pip
pip install shadowsocks
  • 1
  • 2
  • 3

注:如果是debian/ubuntu系统,apt-get安装即可 
如果是windows: 
下载安装windows版的OpenSSL。linux因为自带了,所以不需要单独再安装一遍。然后和linux安装一样,要安装easy_install 和 pip,再安装shadowsocks 。

如果安装shadowsocks时报warning警告,则尝试采用以下方法解决

解决方法

首先安装python-devel libffi-devel openssl-devel

yum install python-devel libffi-devel openssl-devel

之后在安装pyopenssl ndg-httpsclient pyasn1

pip install pyopenssl ndg-httpsclient pyasn1

在运行pip就不会出现警告了


2.配置文件 
安装完后配置文件默认目录如下:(也可能没有,可以自行新建,其它目录也可以) 
/usr/local/lib/node_modules/shadowsocks/config.json 
打开配置文件,格式如下:

{
    "server":"127.0.0.1",
    "server_port":8388,
    "password":"barfoo!",
    "timeout":600,
    "method":"aes-256-cfb"
    "fast_open":false,
    "workers":1
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

server需要填写本机的外网IP才是启用对外网的端口,其它的机器才能连接上

如果想使用多用户和密码:

{
    "server":"your_server_ip",
    "port_password":{
         "8381":"pass1",
         "8382":"pass2",
         "8383":"pass3",
         "8384":"pass4"
    },
    "timeout":60,
    "method":"rc4-md5",
    "fast_open":false,
    "workers":1
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

server:监听地址,即服务器的公网IP,有的服务器不让监听公网IP,那可以使用0.0.0.0(我在阿里云的美国服务器上就遇到这个问题,搞了半天才搞好,使用公网IP时,启动shadowsocks提示成功,但在进程中却没有)
server_port:监听端口 
local_address:本地监听地址,直接写127.0.0.1就可以了,默认就是127.0.0.1,不用更改 
local_port:本地监听端口,这个自己随意写,不和其它端口冲突就可以了 
password:shadowsocks的客户端连接密码 
timeout:超时时间,单位是秒,默认也可以, 
method:加密方式,有”bf-cfb”, “aes-256-cfb”, “des-cfb”, “rc4”,推荐使用:aes-256-cfb 
其实官网还有一个参数: 
auth:值为true/false 开户一次性认证,但默认安装时,配置文件里没有此参数,可忽略,手机客户端有这个选项,但可以不开启 
fast_open:是否启用TCP-Fast-Open, 
如果您的服务器和客户端都部署在Linux 3.7.1或更高版本上,则可以打开fast_open以实现更低的延迟. 
        首先设置fast_open为true在config.json。 
        然后在您的操作系统上暂时打开快速打开: 
        echo 3 > /proc/sys/net/ipv4/tcp_fastopen 
wokers :worker数量,默认为 1,(这个只在Unix和Linux下有用,可不设置) 
3.启动shadowsocks 
启动文件安装在/usr/local/bin/下启动文件是ssserver 
下面启动shadowsocks

启动:
ssserver -c  /usr/local/lib/node_modules/shadowsocks/config.json -d start
停止:
ssserver -c  /usr/local/lib/node_modules/shadowsocks/config.json -d stop
  • 1
  • 2
  • 3
  • 4

设置开机启动就把上面的启动命令加到rc.local里就可以了

也可以使用以下使用启动和停止shadowsocks
ssserver -p your_server_port -k
your_server_password -d start
ssserver -p your_server_port -k your_server_password -d stop


注记得防火墙添加相应端口:

vim /etc/sysconfig/iptables
加入以下行
-A INPUT -m state --state NEW -m tcp -p tcp --dport your_server_port -j ACCEPT
your_server_port:表示你在配置文件里的server_port
如果添加失败,有可能是复制的文本linux不认识,可以手工输入试试。
如果新装的Linux系统/etc/sysconfig目录下无iptables文件,可以使用下面的方法解决:
1、在控制台使用iptables命令随便写一条防火墙规则,如:iptables -P OUTPUT ACCEPT
2、使用service iptables save进行保存,默认就保存到了/etc/sysconfig目录下的iptables文件中
添加后重启防火墙
service iptables restart
到现在,服务端已经配置完毕了

第二部分:客户端部署

Centos中安装客户端shadowsocks

其实shadowsocks安装时是不分客户端还是服务器端的,只不过安装后有两个脚本一个是sslocal代表以客户端模式工作,一个是ssserver代表以服务器端模式工作。

yum install python-pip
pip install shadowsocks

依次执行上述两个命令,先安装python的pip,然后安装shadowsocks。然后执行下述命令后台启动:
nohup sslocal -s your_server_ip -p your_server_port -l 1080 -k your_server_passwd -t 600 -m rc4-md5 > /dev/null 2>&1 &

如果报pip命令不存在,则安装之

yum -y install python-setuptools
easy_install pip


注意
1,使用的是sslocal这个命令,表示shadowsocks以客户端模式工作
2,将上述命令里的your_server_ip,your_server_port,your_server_passwd换成自己的,这三个分别代表服务器ip,服务器上shadowsocks的端口以及密码.后面的rc4-md5加密方式也要换成跟server端一致。
3,前面的nohub表示后台执行,否则将会阻塞shell端口.
为了更方便,建议新建一个.json的文件,将上述信息放里面,如新建/etc/shadowsocks.json文件,内容为:

{
    "server":"your_server_ip",      #ss服务器IP
    "server_port":your_server_port, #端口
    "local_address": "127.0.0.1",   #本地ip
    "local_port":1080,              #本地端口
    "password":"your_server_passwd",#连接ss密码
    "timeout":300,                  #等待超时
    "method":"rc4-md5",             #加密方式
    "fast_open": false,             # true 或 false。如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可
    "workers": 1                    # 工作线程数
}

然后运行nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &启动shadowsocks。
如果想增加开启自动启动,执行:echo " nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &" /etc/rc.local
执行ps aux |grep sslocal |grep -v "grep"查看后台sslocal是否运行。

安装Privoxy

上述安好了shadowsocks,但它是socks5代理,我门在shell里执行的命令,发起的网络请求现在还不支持socks5代理,只支持http/https代理。为了我门需要安装privoxy代理,它能把电脑上所有http请求转发给shadowsocks。
访问官网http://www.privoxy.org/获得Privoxy的最新源码(linux中使用source目录下的包):privoxy-3.0.24-stable-src.tar.gz,执行tar -zxvf privoxy-3.0.24-stable-src.tar.gz解压,然后cd privoxy-3.0.24-stable进去。
安装前需要执行useradd privoxy创建一个用户privoxy,然后依次执行如下三条命令:

autoheader && autoconf
./configure
make && make install

我在执行autoheader一行命令时出现了很多WARNING,例如:
autoheader: WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot'
我没有理睬,继续执行了后面的安装命令,结果可以使用。

查看vim /usr/local/etc/privoxy/config文件,先搜索关键字:listen-address找到listen-address 127.0.0.1:8118这一句,保证这一句没有注释,8118就是将来http代理要输入的端口。然后搜索forward-socks5t,将forward-socks5t / 127.0.0.1:1080 .此句的注释去掉.
执行如下命令启动privoxy,参考官网,不同的平台对应不同的方法:
privoxy --user privoxy /usr/local/etc/privoxy/config

配置/etc/profile

执行vim /etc/profile,添加如下三句:

export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export ftp_proxy=http://127.0.0.1:8118

第三句ftp的代理根据需要,不需要的话可以不添加.然后source /etc/profile,执行curl www.google.comwget www.google.com判断是否成功访问。

注意:此处不要用ping命令来检测

如果不能访问,请重启机器,依次打开shadowsocks和privoxy再测试.

nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
privoxy --user privoxy /usr/local/etc/privoxy/config

备注:如果不需要用代理了,记得把bash里的配置注释上,免得把流量跑完了。


Windows中安装客户端shadowsocks

官网下载相应客户端,记得官网是https://shadowsocks.org,以org结尾,并不是.com的那个 
客户端按照服务器配置的相应参数填写就可以了,这里不在做教程,比较简单 
下面贴出windows下的客户端界面: 

andriod客户端: 

其它客户端就不一一贴出来了,大同小异,看下就明白了^_^

我来说说