専用サーバーを借りましたが、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コマンドとルーティングコマンドを使用せずにメソッドを見つけたら、答えを更新します。