
現在、すべてのプログラムの RAM と CPU の使用を制限するために、コンテナをベースにサーバーを設定しようとしています。問題は、異なるコンテナ内のすべてのアプリケーションが異なるポートで同じ IP をリッスンするようにしたいが、柔軟性を維持し、特別な IP を持つ他のコンテナを用意して、それらにフル アクセス権を持たせたいということです。他の IP は eth0 のエイリアス (eth0:0、eth0:1 など) にあります。
+----+ +----+ +----+
|IP 1| |IP 1| |IP 2| IP
|WEB | | TS | |GAME| Application
| 80 | |9987| |ALL | Port(s)
+----+ +----+ +----+
| | |
+-----+------+
|
+------+
|SERVER|
+--+---+
|
+---+----+
|Internet|
+--------+
たくさん検索しましたが、役に立つものは何も見つかりませんでした。重複していたら申し訳ありませんが、何も見つかりません... 間違ったキーワードで検索したからか、不可能だからかもしれません... とにかく、読んでくれてありがとう!
答え1
あなたが探しているテクノロジーは、Destination NAT と呼ばれます。Linux システムでは、iptables の助けを借りてこれを実行できます。
質問では、使用を計画しているコンテナ テクノロジについての詳細が示されていないため、これらのテクノロジがローカル ネットワークとホスト システム自体にどのように接続するかによって異なります。通常は、コンテナ用のブリッジ インターフェイスと仮想ネットワーク インターフェイスを使用します。
その場合は、こちらを参照してください: http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html#ss6.2
宛先アドレスを5.6.7.8に変更
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
宛先アドレスを5.6.7.8、5.6.7.9、または5.6.7.10に変更します
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
Webトラフィックの宛先アドレスを5.6.7.8、ポート8080に変更します
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 5.6.7.8:8080
次に、ホスト サーバーに iptables DNAT ルールをいくつか設定し、特定のポートまたは特定の IP アドレスの着信パケットをブリッジされた仮想ネットワーク上のターゲットに書き換えます。
ただし、ソース NAT ルールもいくつか設定して、それらのコンテナからのトラフィックも、それらのコンテナが外部に対して持つべき IP アドレスと一致するように変更する必要があります。