我希望測試一個透過 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
配置!