使用redsocks转发流量到socks5服务器

安装redsocks

apt install redsocks

然后,编辑配置文件

vim /etc/redsocks.conf

主要编辑6项

local_ip = 0.0.0.0;
local_port = 12345;

// `ip' and `port' are IP and tcp-port of proxy-server
// You can also use hostname instead of IP, only one (random)
// address of multihomed host will be used.
ip = <socks5服务器地址>;
port = <socks5服务器端口>;


// known types: socks4, socks5, http-connect, http-relay
type = socks5;

login = "<socks5服务器账号>";
password = "<socks5服务器密码>";

然后重启redsocks

`systemctl restart redsocks`

使用

`netstat -anltp | grep 12345` 

看看监听成功没。

添加iptables规则来转发流量
创建新链

iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port=12345

#iptables -t nat -A REDSOCKS -p udp -dport=53 -j REDIRECT --to-port=10053

设置转发链到REDSOCKS链

iptables -t nat -A PREROUTING -j REDSOCKS

这样,所有经过本网卡的TCP流量,就会被转发到socks服务器了。

我是在树莓派上操作的,上面做完后,编辑/etc/sysctl.conf设置net.ipv4.ip_forward = 1来开启内核转发
然后使用ip addr 来看树莓派的局域网地址,例如树莓派地址是192.168.0.100,现在在你自己的电脑上,打开网络和共享中心 打开网卡设置,选择手动设置IP。网关地址从路由器IP改为树莓派的192.168.0.100

大功告成,现在你的所有流量都通过树莓派上的redsocks转发到代理服务器了。

其实树莓派不是必须的。你可以在虚拟机的linux里面操作,也是一样的效果。

用这种方法,也可以设置本机的流量转发。最后一步的 PREROUTING 改为 OUTPUT 即可,不过要注意需要绕过redsocks自己的流量,否则就无限循环了。搞不好就死机了。例如 iptables -t nat -A OUTPUT -m owner \! --uid-owner <redsocks 的 uid> -j REDSOCKS 就把本机的流量也转发了。

记得保存iptables规则和开机启动加载iptables规则哦。

鄂ICP备14007840号-1