web-dev-qa-db-ja.com

iptablesは外部IPとポートを内部IPとポートに転送します

言葉ではなく、直接的な例で緊急に助けが必要です。バージョン4.2以降のFreeBSDで作業している時点では、pf(packet filter)で問題ありませんが、LinuxでOpenVZ用のWebパネル用のモジュールを作成するプロジェクトを取得しました。

管理部分は95%準備ができていますが、行き詰まりました。すべてのVMを異なるポートに転送する必要があることに気付きました。そして重要なのは、ローカルIPに転送する必要があるということです。 NICは1つ、パブリックIPは1つしかないため、VMごとにローカルIPを使用します。

まあ言ってみれば:

ポート5050でSSHをリッスンするためにローカルIP192.168.199.105でVM 101を作成し、パブリックIP88.252.14.32を使用します。 sshリクエストを88.252.14.32:5050から192.168.199.105:5050に転送するようにIPTABLESを設定するにはどうすればよいですか?

サーバーはNATされており、Apacheの場合はvhostを使用すると簡単ですが、SSHの場合は方法がわかりません。言葉ではなく、直接的な例で助けを求めます。ありがとうございました。

1
dark_avenger

あなたは読むことを試みることができます このチュートリアルiptablesをよく説明しています。質問については、natテーブルでPREROUTINGルールを使用できます。次のようになります。

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5050 -j DNAT --to-destination 192.168.199.105:5050
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

Eth0をインターフェース名に変更する必要があります。

2