web-dev-qa-db-ja.com

KVM:VLAN化されたインターフェースを共有するには複数の仮想マシンが必要

ネットワークにブリッジしたい多数の仮想マシンをサポートするために、単一のVLAN接続インターフェイスを備えたLinuxサーバーを構成する方法がわかりません(すべてのサービスが上の多数の実マシンから提供されているように見えます)。私のネットワーク)。既存のVLAN化されたデバイスに関連付けられた単一のブリッジネットワークインターフェイスbr0を作成し、すべてのVMにそのインターフェイスを使用させるだけですか?または、VMごとにbr0br1br2などを設定する必要がありますか?これらのブリッジインターフェイスをVLAN化されたインターフェイスに接続することもできますか?ブリッジのifcfgファイルでVLAN="yes"と言う必要があると思いますか?

確かに、私はそれを試して見ることができましたが、現時点では、すべてがどのように組み合わされるのかわからないため、サニティレックを取得する前にサニティチェックを実行したいと思います:-)。

CentOS7ホストを設定しました。

# uname -a
Linux cha028 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

VLANを備えた単一のインターフェースを備えています。したがって、ハードウェアインターフェイスem1には次のものがあります。

# cat ifcfg-em1
NAME="em1"
DEVICE="em1"
ONBOOT="yes"
TYPE="Ethernet"
BOOTPROTO="none"
HWADDR=14:fe:b5:d6:07:cc
NM_CONTROLLED=no

...そして、すべてのIPアドレスなどを含むifcfg-em1.144があります。ボックスに複数のVMをインストールしました。次に、ネットワークを機能させる必要があります。

どうすればいいのですか? https://www.banym.de/linux/centos/setup-bridge-device-on-centos (独自のIPアドレスを使用)に従ってifcfg-br0を作成し、 BRIDGE=br0と書かれたifcfg-em1.144ファイルへの行?

そして、そうしたら、すべてのVMをbr0デバイスに接続できますか?

あなたの耽溺とあなたの助けに感謝します。

これが私のifcfg-em1.144ファイルです。 /etc/sysconfig/networkにはGATEWAY行が含まれていることに注意してください。

VLAN="yes"
DEVICE="em1.144"
PHYSDEV="em1"
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
ONBOOT="yes"
IPADDR="10.144.101.28"
PREFIX="24"
NM_CONTROLLED=no
1
Mike S

(ハードウェアインターフェイスではなく)vlanインターフェイスにブリッジする場合、VMからのブリッジされたパケットは、ワイヤにブリッジされるときにタグ付けされます。ハードウェアインターフェイスにブリッジする場合、タグに関係なくすべてのトラフィックがブリッジされ、vlanインターフェイスをブリッジから外すように移動する必要があります(ベースインターフェイスvlanは無意味になりました)。任意の数のVMがブリッジを共有できます。

通常、ゲストがVLANを手動で構成する必要がないように、ホストでVLANを処理します。これの多くの異なる順列は、それらがあなたのために働くように聞こえます。

3
Andrew Domaszek

ブリッジネットワークをVLAN経由でホストマシンにセットアップするために行ったことは次のとおりです。

  1. 物理デバイス-本物です。それが知っている唯一のことは、それがイーサネットデバイスであり、MACアドレスを持っているということです。ああ、そしてその気のネットワークマネージャーをその顔から外してください:

    (ファイル==/etc/sysconfig/network-scripts/ifcfg-em1)

    DEVICE="em1"
    TYPE=Ethernet
    HWADDR=14:fe:b5:d6:07:cc
    BOOTPROTO=none
    ONBOOT="yes"
    NM_CONTROLLED=no
    
  2. VLANデバイス-ここのVLANの番号は144です。YMMV。 CentOS/Redhatのネットワークにこれを伝えるには、デバイス名の末尾にドットと数字を付けます。 ifupスクリプトはそれを探し、文字列からVLANIDを抽出します。そして、VLAN=yesディレクティブを使用して、それがVLANであることを伝えます。

    (ファイル== /etc/sysconfig/network-scripts/ifcfg-em1.144)

    DEVICE=em1.144
    TYPE=Ethernet
    BOOTPROTO=none
    ONBOOT=yes
    VLAN=yes
    BRIDGE=br0
    NM_CONTROLLED=no
    
  3. ブリッジデバイス-ブリッジはIP(tm)のキーパーです。これは、レイヤー3(IPアドレス)情報(DNS、ネットマスクなど)を保持します。私にとっては、デフォルトゲートウェイを/ etc/sysconfig/networkに配置するのが好きです。そして、そのZEROCONF(169.254.x.y)IPアドレスをルーティングテーブルから除外するのが好きです。だから私たちは持っています:

    (ファイル==/etc/sysconfig/network-scripts/br0)

    DEVICE="br0"
    TYPE="Bridge"
    BOOTPROTO="static"
    DEFROUTE="yes"
    ONBOOT="yes"
    IPADDR="10.144.1.12"
    NETMASK=255.255.255.0
    DNS1="10.144.1.101"
    DOMAIN="example.com"
    NM_CONTROLLED=no
    DELAY=0
    

    (ファイル==/etc/sysconfig/network):

    GATEWAY=10.144.1.1
    NOZEROCONF=true
    

ネットワークが開始された後、スイッチが実際にパケットを受け入れるまでに30〜60秒かかる場合があることに注意してください(つまり、Ciscoはこれを行うように設定されている場合があります)。したがって、ゲートウェイにpingを実行したときに「宛先ホストに到達できません」と表示された場合は、1分待ちます。表示されるまでに少し時間がかかる場合があります。

ホストがセットアップされて機能するようになったら(つまり、ローカルゲートウェイ、ネットワーク上の他のホスト、インフラストラクチャ内の他のホストにpingを実行できます...すべてIPを使用してください... into-port-22 by hostname)、これでVM上にネットワークを作成する準備が整いました。

これは簡単です。ネットワークデバイスとしてbr0を使用していることを確認する必要があります。私が行ったようにvirt-installを使用する場合は、次のことができます。

virt-install --name monitor0 --memory 2048 --disk /dev/vm_group0/thin_lv_monitor0  --cdrom ./CentOS-7-x86_64-Everything-1511.iso --network bridge=br0

--network bridge=br0に注意してください。

Qemuを使用していて、ネットワークなしで、またはNATを使用して仮想ホストを構築する場合は、それを修正できます。ホストを停止するだけです。次に、/etc/libvirt/qemu/<vm name>.xmlを編集します。 interfaceというセクションを探します。この例に従うように変更します。

<interface type='bridge'>
  <mac address='52:54:00:22:29:cc'/>
  <source bridge='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

...つまり、おそらく最初のinterface行とsource行のみを変更する必要があります(ネットワークを指定せずにマシンを構築した後、私が行ったことです[セットアップNATデフォルト])。

ファイルを保存してから、お好みの方法でlibvirtdを再起動します:systemctl restart libvirtd

virsh start <vm name>を使用してVMを再起動します。コンソールを使用してVMに移動し、必要に応じてネットワークを編集します。 VMがネットワークの真正なメンバーになったことを忘れないでください。そのため、ブリッジインターフェースbr0と同じサブネット内のIPアドレスをネットワークに付与します。

VLAN付きのbr0を共有する2つのVMをセットアップしたので、私は幸せなキャンピングカーです!

2
Mike S