LXCコンテナの外部IP構成

LXCコンテナの外部IP構成

専用サーバーを借りましたが、KVMの代わりにLXCを使用したかったです。コンテナごとにIPを購入したいです。今、2つの外部IPがあります。

  • 193.XX30/32
  • 213.XX31/32

NATの代わりにルーティングソリューションを好む。

私の最後の試みは次のとおりです。

              -------------------
              |     INTERNET    |
              -------------------
                       |
                       V
----------------------------------------------
|  -------------------      -------  [HOST]  |
|  | br0: 193.X.X.30 | <--- | em1 |          |
|  -------------------      -------          |
|           |                                |
|           V                                |
|  -------------------                       |
|  |    vethXXXX     |                       |
|  -------------------                       |
|           |                                |
|           V                                |
|  --------------------------------------    |
|  |  --------------------  [CONTAINER] |    |
|  |  | eth0: 213.X.X.31 |              |    |
|  |  --------------------              |    |
|  |                                    |    |
|  --------------------------------------    |
----------------------------------------------

私のホストのネットワーク設定:

auto br0
iface br0 inet static
  bridge_ports    em1
  bridge_fd       0
  address         193.X.X.30
  netmask         255.255.255.0
  gateway         193.X.X.1
  dns-nameservers 8.8.8.8 8.8.4.4

私のコンテナ構成:

lxc.network.type = veth
lxc.network.link = br0
lxc.network.ipv4 = 213.X.X.31/24
lxc.network.ipv4.gateway = 213.X.X.1

マイコンテナネットワークの設定:

auto eth0
iface eth0 inet static
   address   213.X.X.31
   netmask   255.255.255.0
   gateway   213.X.X.1

   dns-nameservers 8.8.8.8
   dns-nameservers 8.8.4.4

コンテナに直接接続できませんでした。 Web/メール/DNSなどのサービスを正常にホストするには、コンテナの正しい設定/トポロジは何ですか?

ベストアンサー1

これが正しい方法なのか、最善の解決策なのかはわかりませんが、NATなしで動作します。ネットワークトポロジは同じです。各コンテナには物理NIC(em1)と複数のIPが装備されています。後でサブネットを購入することもできます。しかし、今では4〜5個のIPを購入します。

              -------------------
              |     INTERNET    |
              -------------------
                       |
                       V
----------------------------------------------
|  -------------------      -------  [HOST]  |
|  | br0: 193.X.X.30 | <--- | em1 |          |
|  -------------------      -------          |
|           |                                |
|           V                                |
|  -------------------                       |
|  | vethMyContainer |                       |
|  -------------------                       |
|           |                                |
|           V                                |
|  --------------------------------------    |
|  |  --------------------  [CONTAINER] |    |
|  |  | eth0: 213.X.X.31 |              |    |
|  |  --------------------              |    |
|  |                                    |    |
|  --------------------------------------    |
----------------------------------------------

これはホストシステム(/etc/network/interfaces)のネットワーク構成です。

auto lo
iface lo inet loopback    

auto br0
iface br0 inet static
  bridge_ports    em1
  bridge_fd       0
  address         193.X.X.30
  netmask         255.255.255.0
  gateway         193.X.X.1
  dns-nameservers 8.8.8.8 8.8.4.4

コンテナ構成ファイル(/var/lib/lxc/my-container/config):

lxc.include                      = /usr/share/lxc/config/ubuntu.common.conf
lxc.rootfs                       = /var/lib/lxc/my-container/rootfs
lxc.utsname                      = my-container
lxc.arch                         = amd64
lxc.network.type                 = veth
lxc.network.veth.pair            = vethMyContainer
lxc.network.link                 = br0
lxc.network.ipv4                 = 213.X.X.31/32
lxc.network.ipv4.gateway         = 193.X.X.1
lxc.network.script.up            = /var/lib/lxc/my-container/script-up.sh
lxc.network.flags                = up
lxc.network.hwaddr               = 00:16:3e:aa:bb:cc
lxc.cgroup.memory.limit_in_bytes = 2048M

私たちはvethデバイスの名前を指定する必要があります。なぜなら、スクリプトファイルでその名前を使用するからです。パケットはbr0からvethデバイスに自動的にルーティングできません。そのため、ルーティングルールを追加しましたが、ARPテーブルは自動的に更新されません。だから静的ARPレコードを追加しました。

スクリプトファイル(/var/lib/lxc/my-container/script-up.sh):

#!/bin/bash

route del 213.X.X.31 br0
route add 213.X.X.31 br0

私のコンテナのネットワーク構成:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

したがって、NATを使用せずにコンテナに直接pingを送信できます。 arpコマンドとルーティングコマンドを使用せずにメソッドを見つけたら、答えを更新します。

おすすめ記事