Proxy

嘗試從我的 Linux 機器重定向所有傳出 (TCP) 流量時,REDSOCKS 出現“文件描述符不足”

  • June 7, 2015

我正在嘗試將所有傳出 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我正在執行與遠端 SOCKS5 代理伺服器通信的 REDSOCKS 守護程序。

這很好用!代表使用者 myuser 啟動的所有應用程序都通過遠端 SOCKS5 代理“socksified”。

但是,如果我想讓它適用於我的 Linux 機器上的所有使用者怎麼辦?

因此,我在 OUTPUT 鏈中嘗試了以下規則(而不是上面的規則):

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

這就是 REDSOCKS 守護程序立即“超出文件描述符”並且無法重定向任何數據包的時候。

為什麼會這樣?如何將所有使用者(及其應用程序)的 TCP 流量重定向到遠端 SOCKS5 代理伺服器?

PS我試過:

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

但仍然有同樣的問題。

我猜你需要排除 REDSOCKS 自己的流量——當你為所有使用者重定向時,你正在創建一個循環。

引用自:https://serverfault.com/questions/697182