インターフェース間の一方向ブリッジ

インターフェース間の一方向ブリッジ

現在、すべてのプログラムの 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 アドレスと一致するように変更する必要があります。

関連情報