
我在跑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 路由規則和表才能在本地傳送資料包。