在中国大陆由于一些众所周知以及网络环境有时候会比较差的原因, 我们可能会需要使用代理服务器来进行转发流量. 但是有些软件不支持代理, 如何让它走代理呢? 那就要介绍下 redsocks 了.

安装

redsocks 的安装比较方便 从 GitHub 检出代码然后编译就好了

1git clone https://github.com/darkk/redsocks
2cd redsocks
3make

配置

默认我们认为本地 socks 代理在 127.0.0.1:1080 将配置文件配为下面这样

 1// $ cat redsocks.conf
 2base {
 3    log_debug = off;
 4    log_info = off;
 5    log = "syslog:daemon";
 6    // 改成 on 使用 daemon 运行
 7    daemon = on;
 8    user = redsocks;
 9    group = redsocks;
10    redirector = iptables;
11}
12
13redsocks {
14    local_ip = 127.0.0.1;
15    local_port = 31338;
16
17    ip = 127.0.0.1;
18    port = 1080;
19
20    type = socks5;
21}

启动

1./redsocks

就可以运行了

配置 iptables

 1# Transparent SOCKS proxy
 2# See: http://darkk.net.ru/redsocks/
 3
 4*nat
 5:PREROUTING ACCEPT [0:0]
 6:INPUT ACCEPT [0:0]
 7:OUTPUT ACCEPT [0:0]
 8:POSTROUTING ACCEPT [0:0]
 9:REDSOCKS - [0:0]
10
11# Redirect all output through redsocks
12-A OUTPUT -p tcp -j REDSOCKS
13
14# Whitelist LANs and some other reserved addresses.
15# https://en.wikipedia.org/wiki/Reserved_IP_addresses#Reserved_IPv4_addresses
16-A REDSOCKS -d 0.0.0.0/8 -j RETURN
17-A REDSOCKS -d 10.0.0.0/8 -j RETURN
18-A REDSOCKS -d 127.0.0.0/8 -j RETURN
19-A REDSOCKS -d 169.254.0.0/16 -j RETURN
20-A REDSOCKS -d 172.16.0.0/12 -j RETURN
21-A REDSOCKS -d 192.168.0.0/16 -j RETURN
22-A REDSOCKS -d 224.0.0.0/4 -j RETURN
23-A REDSOCKS -d 240.0.0.0/4 -j RETURN
24#-A REDSOCKS -d { 代理服务端的地址 } -j RETURN
25# shadowsocks server port
26-A REDSOCKS -p tcp --dport { 代理服务端的端口 } -j RETURN
27
28# Redirect everything else to redsocks port
29-A REDSOCKS -p tcp -j REDIRECT --to-ports 31338
30
31COMMIT

然后全部的 TCP 链接就会走代理了