ローカルでiptablesを使用してアウトバウンドトラフィックをポート80にリダイレクトする方法は?

ローカルでiptablesを使用してアウトバウンドトラフィックをポート80にリダイレクトする方法は?

私のUbuntuコンピュータでポートのローカルリダイレクトを使用しようとしていますiptables。透明プロキシに似ています。私のシステムをポート80に置き、リモートホストとポートにリダイレクトしたいすべてをキャプチャしたいと思います。

これを達成するためにNATおよび事前ルーティング機能を使用できますかiptables

答え1

次のiptablesルールを試してください。

$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination IP:80

上記の内容は次のとおりです。

  • NATテーブル()に次のルールを追加します-t nat
  • -Aこのルールはアウトバウンドトラフィック()に追加されます()OUTPUT
  • 私たちはTCPトラフィック()にのみ興味があります-p tcp
  • ターゲットポート80()のトラフィックにのみ興味があります--dport 80
  • 一致すると、DNAT(-j DNAT)にジャンプします。
  • このトラフィックを別のサーバーのIP @ポート80(--to-destination IP:80)にルーティングします。

DNATとは何ですか?

DNAT
    This target is only valid in the nat table, in the PREROUTING and OUTPUT 
    chains, and user-defined chains which are only called from those chains.
    It specifies that the destination address of the packet should be modified 
    (and all future packets in  this  connection will also be mangled), and
     rules should cease being examined.

引用する

答え2

特定の宛先ホストへのトラフィックのみを処理するように、これをより具体的に作成できます。たとえば、postfixエラーが発生し、キューのメッセージを古いIPアドレスに送信したい場合です。

iptables -t nat -A OUTPUT -p tcp -d {ONLY_TO_THIS_DESTINATION} --dport 25 -j DNAT --to-destination {NEW_IP}:25

答え3

これにより、ポートをすべてのIPアドレスに変換できます。ここで最も大きな違いは、このフィールドにIPアドレスがないことです--to-destination

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination :80

関連情報