専用サーバーを借りて、KVMの代わりにLXCを使いたいです。コンテナごとにIPを購入したい。今のところ私は2つの外部IPを持っています:
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などのサービスを正常にホストするための適切な構成/トポロジは何である必要がありますか。
これが正しい方法または最善の解決策であるかどうかはわかりませんが、NATがなくても機能します。ネットワークトポロジは同じです。コンテナごとに1つの物理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コマンドとrouteコマンドを使用しない方法を見つけたら、回答を更新します。