使用 iptables TPROXY 而不是 REDIRECT

使用 iptables TPROXY 而不是 REDIRECT

我在跑Debian 8。我正在嘗試攔截所有資料包,目前正在用於iptables此目的:

iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5000

這似乎可行,但它消除了獲取資料包上原始目標連接埠的可能性。

我讀過TPROXY應該是要走的路,因為它沒有使用NAT.

我嘗試REDIRECT用​​這個替換:

iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 5000

但這樣做時我並沒有攔截我的服務上的任何資料包...

答案1

核心樹中的 Documentation/networking/tproxy.txt 提到了以下內容:

「TPROXY」目標提供類似的功能,而不依賴 NAT。只需將這樣的規則加入上面的 iptables 規則集中:

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY \
  --tproxy-mark 0x1/0x1 --on-port 50080

請注意,要使其工作,您必須修改代理程式以啟用偵聽套接字(SOL_IP,IP_TRANSPARENT)。

您是否在應用程式中的監聽套接字上設定了上述選項?

另請注意,上面的文件提到需要添加適當的 ip 路由規則和表才能在本地傳送資料包。

相關內容