REDSOCKS 在尝试重定向 Linux 机器上的所有传出 (TCP) 流量时出现“文件描述符不足”的情况

REDSOCKS 在尝试重定向 Linux 机器上的所有传出 (TCP) 流量时出现“文件描述符不足”的情况

我正在尝试将所有传出的 TCP 流量从我的 Linux 机器重定向到远程 SOCKS5 代理服务器。

目前我在 OUTPUT 链中使用以下规则:

sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner myuser -j REDSOCKS

REDSOCKS 链包含:

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

在本地端口上,12345我运行了 REDSOCKS 守护程序,它可以与远程 SOCKS5 代理服务器通信。

这很好用!代表用户 myuser 启动的所有应用程序都通过远程 SOCKS5 代理进行了“socks 化”。

但是如果我想让这个功能对我的 Linux 机器上的所有用户都起作用该怎么办呢?

因此,我在 OUTPUT 链中尝试了以下规则(而不是上面的规则):

sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

这时,REDSOCKS 守护进程立即“超出文件描述符”并且无法重定向任何数据包。

为什么会发生这种情况?如何将所有用户(及其应用程序)的 TCP 流量重定向到远程 SOCKS5 代理服务器?

我尝试过:

  1. sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner 0-10000 -j REDSOCKS

  2. ulimit -n 4096

但仍然存在同样的问题。

答案1

我猜你需要排除 REDSOCKS 自己的流量——当你为所有用户重定向时,你就创建一个循环。

相关内容