使用 iptables 的中間人

使用 iptables 的中間人

我希望測試一個透過 tcp 與另一個子系統通訊的子系統。我使用過以下內容:

"iptables -A OUTPUT -p tcp --dport "+port_number" -j DROP"

停止連接埠上的流量,以便我可以透過腳本將我自己的資料傳送到被測系統。這非常有效。

然而,我現在希望將流量轉送到我的腳本,而不是簡單地丟棄它。然後,我希望在將腳本轉發到被測子系統之前操作腳本中的資料。

我可以使用 iptables 來做到這一點嗎?有更好的方法嗎?

答案1

您可以嘗試此操作(連接埠的傳入流量1234將被重新導向至4321本機,您可以在其中監聽腳本):

iptables -I INPUT -p tcp --dport 1234 -j ACCEPT
iptables -I INPUT -p tcp --dport 4321 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 1234 -j REDIRECT --to-ports 4321

如果您也想1234從同一台電腦存取該端口,則需要新增一條OUTPUT規則,PREROUTING環回介面不使用該規則:

iptables -t nat -I OUTPUT -p tcp -o lo --dport 1234  -j REDIRECT --to-ports 4321

現在,在伺服器上,您可以嘗試監聽nc -l 4321(這裡您可以使用您自己的腳本)。在客戶端上,嘗試nc server_host_name_or_ip 1234編寫任何內容來驗證伺服器是否正確執行重新導向。

不要忘記保存iptables配置!

相關內容