CentOS命令行下使用代理:Shadowsocks+privoxy+redsocks实现全局代理
本文最后更新于 2088 天前,其中的信息可能已经有所发展或是发生改变。

这个其实很简单,别的带桌面的操作的系统,一个软件就完成以下所有功能了。

但如果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

大功告成啦!!!

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇