系统环境:Ubuntu 16.04
安装
Linux不同的发行版执行的命令如下(最好在root下运行以下命令,原因我下面会说明):
Debian / Ubuntu:
apt-get install python-pip
pip install shadowsocks
CentOS:
yum install python-setuptools && easy_install pip
pip install shadowsocks
配置
sudo vim /etc/shadowsocks.json
//这里的json文件是自己创建的,不是系统自带
配置文件的内容大致如下:
{
"server":"服务器的ip",
"server_port":服务器的端口,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"密码",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false
}
启动ss客户端
前两步很简单,可是有人就纳闷了安装好了不知道怎么用,其实可以用sslocal -help 来查看帮助就知道了
sslocal -c /etc/shadowsocks.json
一条命令代理就可以启动了。
这里仅仅是启动了shadowsocks还是不行的,我们还需要设置相关的代理。
转换HTTP代理
Shadowsocks默认是用Socks5协议的,对于Terminal的get,wget等走Http协议的地方是无能为力的,所以需要转换成Http代理,加强通用性,这里使用的转换方法是基于Polipo的。
输入命令安装Polipo:
sudo apt-get install polipo
修改配置文件:
sudo gedit /etc/polipo/config
将下面的内容整个替换到文件中并保存:
# This file only needs to list configuration variables that deviate
# from the default values. See /usr/share/doc/polipo/examples/config.sample
# and "polipo -v" for variables you can tweak and further information.
logSyslog = false
logFile = "/var/log/polipo/polipo.log"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
proxyAddress = "0.0.0.0"
proxyPort = 8123
重启Polipo:
/etc/init.d/polipo restart
验证代理是否正常工作:
export http_proxy=”http://127.0.0.1:8123/”
curl www.google.com
如果正常,就会返回抓取到的Google网页内容。
另外,在浏览器中输入http://127.0.0.1:8123/便可以进入到Polipo的使用说明和配置界面。
配置浏览器
在firefox中
preference->advanced->network->connection->settings中选择手动设置代理,并将http代理设置为127.0.0.1 端口8123 (就是之前第二步配置的port)
做到这步应该就能通过shadowsocks访问了,但我遇到的电脑还是不行,后来将http代理下面的“Use this proxy server for all protocols(将代理应用到所有协议)”这个也钩上才可以了。
PS.如果跳过第二步,直接在第三部中配置http代理设置为127.0.0.1 端口1080,有些文章中是这样配置的,但是本人亲测这样无法连接上网。
Ubuntu开机后自动运行
现在可以科学上网了,可是每次开机都要手动打开终端输入一条命令,虽然这条命令并不长,但是每次都去手动输入,显得自己很low,而且关掉终端代理就关闭了。
写个脚本
我们可以在比如/home下新建个文件叫做shadow.sh,在里面写上我们启动ss客户端需要的命令,然后保存即可。
#!/bin/bash
#shadow.sh
sslocal -c /etc/shadowsocks.json
看可不可以我们到终端执行命令 sh /home/shadow.sh,如果成功的话会有信息输出的。你也可以到浏览器去试试。这个时候你虽然输入的少了,可是关了终端还是会掉的,我们可以让他在后台运行,nohup sh /home/shadow.sh &。
加入开机运行
这里我们需要在/etc下编辑一个叫rc,local的文件,需要root权限,在终端先su获取root权限。
这里问题来了,因为我们要开机启动,要使用root权限来执行前面写好的脚本,但如果你的shawdocks不是在root下装的话,执行脚本是就会报错:
“Traceback (most recent call last):
File “/home/gaoxw/.local/bin/sslocal”, line 7, in
from shadowsocks.local import main”
使用sudo安装还是会报上面这个错误。
如果你有root帐号的话,然后vim /etc/rc.local编辑,在exit之前输入nohup bash /home/shadow.sh>/home/d.txt & 保存。
这个时候你可以reboot重启了,测试下看看能不能后台自动运行,重启你可以先去看下我们要他输出d.txt,你竟然发现是 /home/shadow.sh line 3 :sslocal: command not found,打开浏览器果然是无法链接代理服务器。
经过一番搜索我们发现远离linux是找不到sslocal这条命令?需要添加路径,我们发现sslocal和ssserver这两个命令是被存在 /usr/local/bin下面的,其实不用去profile添加了,直接把这两个文件移动到/bin下,就可以了。