这个其实很简单,别的带桌面的操作的系统,一个软件就完成以下所有功能了。
但如果vps服务器也有这样的需求呢?那就需要详细配置一番了。
使用环境:CentOS release 6.5 (Final)
一、安装Shadowsocks
直接用pip安装
pip install shadowsocks pip freeze 查看已安装的软件列表,看看成了没?
shadowsocks在这里:
/usr/local/python/bin/sslocal
做一个软件链接方便用
ln -s /usr/local/python/bin/sslocal /usr/bin/sslocal
在终端运行
sslocal -s 100.100.100.100 -p 8888 -b 127.0.0.1 -l 1080 -k 123456 -t 600 -m aes-256-cfb
各个选项的含义
-s 远程shadowsocks服务器ip
-p 远程shadowsocks服务器端口
-b 本地ip
-l 本地监听端口
-k 密码
-t 超时设置
-m 加密方式
或者是用配置文件的方式,建立一个为ss.conf的配置文件
输入以下内容
{ "server" : "100.100.100.100", "server_port" : 8888, "local_port" : 1080, "password" : "123456", "timeout" : 600, "method" : "aes-256-cfb" }
选项的含义同上
在终端运行
sslocal -c /filepath/ss.conf
以上仅仅是搭建好了,shadowsocks客户端,还不能上网,因为shadowsocks属于socks5协议,也就是说不能全局使用,所以需要把socks5转为http协议(privoxy)或是转换为全局代理(redsocks)
顺便说一句,你还需要一个shadowsocks服务的账号,买也行,自己用vps搭建也可以。
二、安装Privoxy实现Socks5转换为Http
官方网站:http://www.privoxy.org/
下载源码包
privoxy-3.0.23-stable-src.tar.gz
解压
tar xf privoxy-3.0.23-stable-src.tar.gz
进入
cd privoxy-3.0.23-stable
配置 先创建一个用户 主和组都为 privoxy 安装需要
useradd privoxy autoheader && autoconf ./configure make && make install
安装好了之后修改配置文件
在这个位置:
/usr/local/etc/privoxy/config
找到 783行
listen-address 127.0.0.1:8118
去掉前面的注释符号,后面的8118端口可以随便改,但不要和别的服务冲突
再找到 1336
forward-socks5t / 127.0.0.1:1080 .
去掉前面的注释符号,后面的1080端口要对应Shadowsocks服务里面的配置,要一致
8118端口走http协议,1080走socks5协议,socks5会经过http,这样间接的shadowsocks也能支持http协议了
三、让终端走代理
做完上面的,你会发现还是没有什么改变,就算已经运行了服务。
这是因为还差一步设置
vim编辑
bash_profile或/ect/profile
中添加以下几行:
export http_proxy=http://127.0.0.1:8118 export ftp_proxy=http://127.0.0.1:8118
再依次打开 shadowsocks privoxy
实验一下
curl www.google.com
不成功肯定是访问不了的,当然前提是你的shadowsocks服务器搭建的没有问题
如果不行,先
reboot
重启一下
再依次打开 shadowsocks privoxy
sslocal -c /filepath/ss.conf service privoxy start
四、利用redsocks做全局代理
关闭之前的shadowsocks prioxy 还有清除掉 bash_profile或/ect/profile里de
export http_proxy=http://127.0.0.1:8118 export ftp_proxy=http://127.0.0.1:8118
因为两种办法并不兼容,只能用一种 官方网站 https://github.com/darkk/redsocks 安装 安装依赖
yum install libevent-devel
2017.3.11更新: redsocks 执行失败是因为libevent版本太久了,目前最新版是 libevent-2.1.8-stable.tar.gz
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz tar xf libevent-2.1.8-stable.tar.gz cd libevent-2.1.8-stable ./configure make make install
git clone https://github.com/darkk/redsocks cd redsocks make
运行 redsocks 的时候提示缺少一个库文件
libevent_core-2.1.so.6
谷歌一下,下载一个rpm文件,强制安装
wget http://ftp.gwdg.de/pub/opensuse/tumbleweed/repo/oss/suse/x86_64/libevent-2_1-8-2.1.8-1.1.x86_64.rpm rpm -ivh --nodeps libevent-2_1-8-2.1.8-1.1.x86_64.rpm
应该可以运行了
redsocks和libevent的版本再不断的变化,所以遇见的问题也会有所不同。
配置
将 /usr/local/src/redsocks/redsocks.conf.example 复制为 redsocks.conf 留个备份
vim 编辑 redsocks.conf
找到 44 行 local_port = 12345;
12345是redsocks服务的监听端口,可以改但是别冲突
接着看 61 、 62 行
ip = 127.0.0.1; port = 1080;
这里对应着 shadowsocks服务的配置,要一致
五、配置 iptables 规则
用 vim 编写一个 bash脚本
vim iptables.sh
添加以下内容
iptables -t nat -A OUTPUT -d 100.100.100.100 -j RETURN iptables -t nat -A OUTPUT -d 10.0.0.0/8 -j RETURN iptables -t nat -A OUTPUT -d 172.16.0.0/16 -j RETURN iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j RETURN iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j RETURN iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 12345 #100.100.100.100 换成 你的 shadowsocks 服务器地址
不运行的时候需要执行另一个脚本
vim iptables-f.sh
#/bin/bash iptables -t nat -D OUTPUT 6 iptables -t nat -D OUTPUT 5 iptables -t nat -D OUTPUT 4 iptables -t nat -D OUTPUT 3 iptables -t nat -D OUTPUT 2 iptables -t nat -D OUTPUT 1
这个脚本很重要,如果不删除之前的iptables配置,将直接导致你退出redsocks后再也不能上网
最后,来试试效果吧
依次打开 shadowsocks redsocks iptables.sh
sslocal -c ss.conf redsocks -c redsocks.conf
这里要找到redsocks可执行文件,否则错误,我这里简写了
sh iptables.sh
试试
curl www.google.com
不出意外应该可以了,虽然可以翻墙了,还需要再人性化配置一番
比如开机自动,后台启动,刚刚启动了shadowsocks redsocks 就占用了两个终端窗口
vim /etc/rc.local
配置文件
加入
nohup sslocal -c ss.conf >/dev/null 2>%1 &
ss.conf文件放你自己的
加入
nohup ./redsocks -c redsocks.conf > /dev/null 2>&1 &
加入
ssh iptables.sh
大功告成啦!!!