web-dev-qa-db-ja.com

IPTABLESポートを別のIPにリダイレクト

私はこのリダイレクトを設定するためにいくつかの投稿を試みましたが、機能していません、これは私が必要とするものです

ポート8080でパケットを受信して​​いますが、同じサーバー内の別のIPにパケットをリダイレクトしたいのですが、なぜですか?なんらかの理由でこれをインターネットに送信していないからです。

詳細を説明します。

サーバーAはポート2525をサーバーBに送信していますが、それらは同じネットワーク内にありません。サーバーBに入ってくるパケットを見ることができますが、インターネットには出ていません。

サーバーBには2つのIPがあり、1つはサーバーAに接続されたVPN tun1で、もう1つのIPはインターネットにアクセスできます。私が必要としている、または必要だと思うのは、トラフィックをtun1からインターネットにアクセスできるIPにリダイレクトすることです。さまざまな構成を試しましたが、機能しません。

どんな助けでもありがたいです。

2
Luis

Serverfaultへようこそ。

私が正しく理解していれば、サーバー10.0.9.6が所有するパブリックアドレス167.114.185.238で10.0.10.172のポート25を公開しようとしています。

あなたにはPREROUTING権があります:

iptables -t nat -A PREROUTING -d 167.114.185.238 -p tcp --dport 25 -j DNAT --to 10.0.9.6

しかし、対応するPOSTROUTINGも必要です:

iptables -t nat -A POSTROUTING -d 10.0.9.6 -j SNAT --to 10.0.10.172

また、正しい次のFORWARDルールについても説明しました。

iptables -A FORWARD -d 10.0.9.6 -p tcp --dport 25 -j ACCEPT 

ただし、FORWARDテーブルにDROPルールまたはポリシー(-P)がある場合にのみ必要です。これはデフォルトではありません。 DROPルールがある場合は、そのACCEPTをDROPルールの前に配置する必要があります。そうしないと効果がありません。

最後に、IPv4転送を有効にする必要もあります:

sysctl -w net.ipv4.ip_forward=1

以下は実際には必要ありません。ポート25への接続はサーバーの外部で開始されており、宛先にはパブリックIP 167.114.185.238がすでに含まれているためです。

iptables -t nat -A POSTROUTING -o venet0:0 -j MASQUERADE

これで問題が解決した場合は、左側の上のチェックマークボタン✔をクリックしてください。

4
Tobia