redsocks 将socks代理转换成全局代理

redsocks 需要手动下载编译。前置需求为libevent组件,当然gcc什么的肯定是必须的。

获取源码 git clone https://github.com/darkk/redsocks

安装 libevent 组件 centos 下 yum install libevent libevent-devel  -y

编译完,拷贝到/sbin 目录下,修改配置文件

vim /etc/redsocks/redsocks.conf

base{
log_debug = on; 
log_info = on; 
// 日志文件地址
log = "file:/var/log/redsocks.log"; 
daemon = on; 
redirector = iptables;
user = nobody;
group = nobody;

}

redsocks { 
//本地redsocks要监听的地址和端口 地址可以为0.0.0.0 即监听本地所有网卡ip
local_ip = 192.168.200.167; 
local_port = 31338; 
//socks地址和端口
ip = 192.168.200.167; 
port = 9988; 
type = socks5; 
}

启动:

/sbin/redsocks -c /etc/redsocks/redsocks.conf &

查看监听端口:

ss -lntp|more

 

配置iptables
这里提供两个配置,第一个是基于黑名单的配置,就是说除了指定的ip地址以外,所有数据包通过redsocks转发:

    iptables -t nat -N REDSOCKS
    iptables -t nat -A REDSOCKS -o lo -j RETURN
    iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
    iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
    iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 31338
    iptables -t nat -I PREROUTING -p tcp -j REDSOCKS

 

第二个是基于白名单的配置,就是说指定的ip地址才会经过redsocks转发:

    iptables -t nat -N REDSOCKS
    iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 31338
    iptables -t nat -I PREROUTING -p tcp -d 172.30.0.0/16 -j REDSOCKS

 

修改 iptables 时请注意配置

可以直接修改 iptables 配置文件 /etc/sysconfig/iptables

举例,添加以下nat表设置

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-N REDSOCKS
-A REDSOCKS -p tcp -j REDIRECT --to-port 31338
-I PREROUTING -p tcp -d 50.28.87.153/32 -j REDSOCKS
COMMIT

重启 iptables 服务

将内核转发打开,再将其他机器通过路由将某 ip 或某 ip 段的流量通过该机器转发至 socks 代理。

ps: redsocks 只能转发 tcp 流量

本博文主要基于该贴,http://bbs.konotes.org/thread-5089-1-1.html

 

posted @ 2015-09-15 20:32  privil  阅读(18794)  评论(0编辑  收藏  举报