私は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に完全にアクセスでき、クライアントから見える「フラットな」ネットワークが欲しいだけです。ここで説明するように、私はlibvirt/KVMでネットワークをブリッジするのに慣れています: http://libvirt.org/formatdomain.html#elementsNICSBridge
ホスト上:
# /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が指摘しているように、コンテナにルートを持つユーザーはIPアドレスを変更できます。うん。それはブリッジ(別名イーサネットスイッチ)です。これを防止したい場合は、ホストでファイアウォールルールを使用できます。少なくとも私の場合、パケットはホストのiptablesを通過する必要があります。
LXCに完全には入っていません。
しかし、私は自分のウェブサイトのいくつかにインターネットサービスを提供するlanに独自の静的IPを持つ複数のコンテナをセットアップしました...
多分これはあなたがあなたのために何をしたいのかを助けることができます。
このように複数のコンテナを実行します
ホストマシン上で私はホストのファイルを編集して、各コンテナとホストマシンを追加しました:vi/etc/hosts
lxc Host machine: 192.168.1.100
container1: 192.168.1.101
container2: 192.168.1.102
container3: 192.168.56.102
container4: 192.166.56.103
保存後...
ここでも、ホストマシンでネットワークとブリッジを次のように設定します。
# /etc/network/interfaces
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
**address** 192.168.1.100
netmask 255.255.255.0
**network 192.168.1.1**
**broadcast** 192.168.1.100
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
上記のnetworkはLANのルーターIPです。 (内部)アドレスとブロードキャストはホストマシン、内部IPで、後でインターネットアクセス、ウェブサーバー、ftpなどにVHOSTを使用します。
LXCコンテナ1-4の場合、Iのように設定を構成する:
LXC 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.1.101**
コンテナ1のIP = 192.168.1.101
追加のコンテナーについて繰り返し、LAN上に独自の静的IPを設定します。
コンテナ1〜4
ホストからログインします。
lxc-console -n CONTAINERNAME,
&各コンテナネットワークを静的に設定し、eth0を次のように設定します。
auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.1.101
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
各コンテナーにはIP(ローカル)があり、LANで使用できます。 PuTTYを使用してテストするために、個々のローカルIPにSSHで接続できます!
その後、インターネット経由でそれらを実行する方法を理解する必要があります。たとえば、vhostからコンテナip /ロードバランサ/プロキシ/などに。
多分このセットアップはとにかく助けになるかもしれません。
私はまだLXCをプレイしていませんが、この記事は役に立ちます: イーサネットブリッジを使用したネットワーク構成 (方法2を確認してください)。
設定についてのヒントを与えるために(私はすでにbr0が適切に設定されていると思います):
ip link add type veth
を使用してvethデバイスのペアを作成する必要がありますbrctl addif br0 veth0
ns_exec -nm -- /bin/bash
ip link set veth1 netns PID_OF_LXC_Shell
LXDクライアントCLIのlxc
では、ネットワークインターフェイスタイプを設定できます。 macvlan
プロファイルの場合はdefault
に設定します。
lxc profile device set default eth0 nictype macvlan
default
プロファイルを使用するコンテナにはLAN IPがあります。