web-dev-qa-db-ja.com

ローカルでiptablesを使用して送信トラフィックをポート80にリダイレクトするにはどうすればよいですか?

iptablesを使用して、Ubuntuマシンのポートをローカルにリダイレクトしようとしています。透過プロキシに似ています。システムをポート80に残し、リモートのホストとポートにリダイレクトしようとするものをすべてキャッチしたい。

NATおよびiptablesの事前ルーティング関数を使用してこれを実現できますか?

20
pjf

この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.

参考文献

31
slm

これは、特定の宛先ホストへのトラフィックでのみ動作するように、より具体的にすることができます。たとえば、Postfixがミスを犯し、キュー内のメールを古いIPアドレスに送信したい場合などです。

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

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

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