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