Ubuntu 12.04のLXC機能を調べていますが、本当に次のようなネットワークをセットアップしたいと思っています。
client1: 192.168.56.101/24
lxc-host: 192.168.56.102/24
guest1 192.168.56.201/24
guest2 192.168.56.202/24
guest3 192.166.56.203/24
ゲストがLANに完全にアクセスでき、クライアントから見える「フラットな」ネットワークが必要です。 http://libvirt.org/formatdomain.html#elementsNICSBridge
で説明されているように、私はlibvirt/KVMとのブリッジネットワークに慣れています。ホスト上:
# /etc/network/interfaces
auto br0
iface br0 inet static
address 192.168.56.102
netmask 255.255.255.0
broadcast 192.168.56.255
bridge_ports eth1
最初のゲストのlxc.conf:
# /var/lib/lxc/guest1/config:
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:13:48:4e
lxc.network.ipv4=192.168.56.201/24
192.168.56.201は外の世界には見えないようですが、これは私が望んでいることではありません。私はこれらのことの1つをしなければならないようです:
1)ホストとゲストのルーティングを手動で設定します
2)何かおかしなことをする…事前にホスト上に仮想インターフェースを作成し、それらを使用するようにゲストを構成するlxc.network.type=phys
。それが実際に機能するかどうかはわかりません。
私はUbuntuに焦点を当てていますが、RHEL/Fedoraの回答も役に立ちます…。
承認された回答:
これはほぼ正しいですが、次のような行がありません:
lxc.network.ipv4.gateway = X.X.X.X
DebianでLXCゲストを実行しています。まず、/etc/network/interfaces
でホストブリッジを設定します(簡単な方法)。 :
auto wan
iface wan inet static
address 72.X.X.X
netmask 255.255.255.0
gateway 72.X.X.1
bridge_ports wan_phy # this line is important.
bridge_stp off
bridge_fd 2
bridge_maxwait 20
あなたの場合、あなたはそれをbr0
と呼んでいます 、そして私はそれをwan
と呼んでいます 。橋はあなたが望むものなら何でも呼ぶことができます。これを最初に機能させます。失敗した場合は、(例:)brctl
で調査します。
次に、LXC構成がそのブリッジに参加するように設定されます:
lxc.utsname = FOO
lxc.network.type = veth
lxc.network.link = wan # remember, this is what I call my bridge
lxc.network.flags = up
lxc.network.name = v-wan # optional, I believe
lxc.network.ipv4 = 72.X.X.Y/24 # different IP than the host
lxc.network.ipv4.gateway = 72.X.X.1 # same as on the host
HoverHellが指摘しているように、コンテナにrootが含まれている人は、IPアドレスを変更できます。うん。これはブリッジ(別名イーサネットスイッチ)です。これを防ぎたい場合は、ホストでファイアウォールルールを使用できます。少なくとも私の場合、パケットはホストのiptablesを通過する必要があります。