web-dev-qa-db-ja.com

LXCゲストの外部IPアドレスを構成する方法

私は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の回答も役に立ちます...

18
twblamer

これはほぼ正しいですが、次のような行が欠落しています。

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を通過する必要があります。

13
derobert

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 /ロードバランサ/プロキシ/などに。

多分このセットアップはとにかく助けになるかもしれません。

6
M1-Serverz

私はまだLXCをプレイしていませんが、この記事は役に立ちます: イーサネットブリッジを使用したネットワーク構成 (方法2を確認してください)。

設定についてのヒントを与えるために(私はすでにbr0が適切に設定されていると思います):

  1. ip link add type vethを使用してvethデバイスのペアを作成する必要があります
  2. 前のコマンドは2つの仮想インターフェイスを作成しました:veth0とveth1
  3. 次に、仮想インターフェースveth0をブリッジに追加します:brctl addif br0 veth0
  4. lxcシェルで、次のように入力します:ns_exec -nm -- /bin/bash
  5. 次に、lxcシェルのネットワーク名前空間に他の仮想ifを設定する必要があります:ip link set veth1 netns PID_OF_LXC_Shell
  6. Lxcシェルでveth1を必要なIPアドレス(例:192.168.56.201)に構成することで、すべて設定できます。
1
Huygens

LXDクライアントCLIのlxcでは、ネットワークインターフェイスタイプを設定できます。 macvlanプロファイルの場合はdefaultに設定します。

lxc profile device set default eth0 nictype macvlan

defaultプロファイルを使用するコンテナにはLAN IPがあります。

0
moazzem