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) ホストとゲストで手動でルーティングを設定します。
2)人為的な作業を行います。事前にホストに仮想インターフェイスを作成し、ゲストがそれを使用するように設定しますlxc.network.type=phys
。これが実際に動作するかどうかわかりません。
私はUbuntuに焦点を当てていますが、RHEL / Fedoraの答えも便利です...
答え1
これはほぼ正確です。以下の行を省略しましたが:
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を通過する必要があります。
答え2
私はまだ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
~上ネットワークLAN に使用されるルータ IP です。 (内部) 住所と放送ホスト、内部IP、後でVHOSTを使用してインターネット、Webサーバー、FTPなどにアクセスします。
LXC コンテナ 1-4 の場合、次のように設定を設定しました。
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
各コンテナには、LANで使用できる独自のIP(ローカル)があります。 Puttyでテストするために、個々のローカルIPにSSHを使用できます。
その後は、仮想ホストでコンテナIP/ロードバランサ/プロキシ/などでインターネット経由で実行する方法を把握する必要があると確信しています。
とにかくこの設定が役に立ちます。
答え3
まだLXCを使ったことはありませんが、この記事は役に立ちます。イーサネットブリッジを使用したネットワーク構成(方法2を確認してください)。
設定に関するいくつかのヒントを提供するには(br0を正しく設定したとします):
- 次のコマンドを使用して veth デバイスのペアを作成する必要があります。
ip link add type veth
- 前のコマンドは、veth0とveth1という2つの仮想インターフェイスを作成しました。
- 次に、ブリッジに仮想インターフェイス veth0 を追加します。
brctl addif br0 veth0
- lxc シェルに次のように入力します。
ns_exec -nm -- /bin/bash
- これで、lxcシェルのネットワーク名前空間に別のダミーを設定する必要があります。
ip link set veth1 netns PID_OF_LXC_SHELL
- これで、lxcシェルでveth1を目的のIPアドレス(192.168.56.201など)に設定して準備が整いました。
答え4
lxc
ネットワークインターフェイスタイプを設定できるLXDクライアントCLIは、それを設定ファイルmacvlan
に設定します。default
lxc profile device set default eth0 nictype macvlan
プロファイルを使用するコンテナにはdefault
LAN IPがあります。