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
。