
次のチュートリアルに従ってポート転送を実行しました: http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/
iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -j MASQUERADE
しかし、転送するポートだけをマスカレードしたいのです。同じサーバーに Web サーバーがあり、すべてのトラフィックをマスカレードすると Web サーバーが動作を停止してしまうからです。
何か案が?
解決:
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j SNAT --to-source 2.2.2.1
答え1
もし、あんたが本当にを実行したいMASQUERADE
場合、適切な方法は次のとおりです。
iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j MASQUERADE
この方法はMASQUERADE
DNAT されたパケットにのみ適用されます。
ただし、これはMASQUERADE
主に動的 IP の場合 (ダイヤルアップなど) を対象としており、静的 IP の場合はSNAT
提案どおりに使用する必要があります。maniptables
ページから引用:
これは、動的に割り当てられた IP (ダイヤルアップ) 接続でのみ使用してください。静的 IP アドレスがある場合は、SNAT ターゲットを使用してください。マスカレードは、パケットが送信されるインターフェイスの IP アドレスへのマッピングを指定することと同じですが、インターフェイスがダウンすると接続が忘れられるという効果もあります。これは、次のダイヤルアップが同じインターフェイス アドレスを持つ可能性が低い場合 (したがって、確立された接続はいずれにせよ失われる) の正しい動作です。
MASQUERADE
ただし、と の両方に 1 つの注意点がありますSNAT
。2.2.2.2 が同じマシン上の VIP である場合は機能しません。