仮想マシンのネットワーク関連

デフォルトで「default」という仮想ネットワークが構成されており、仮想ブリッジ「virbr0」が設定されている。 仮想ブリッジも`libvirtd`サービスが管理します。

「brctl」コマンドでブリッジの管理が可能。

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.52540097b907       yes             virbr0-nic

Linux KVM環境で物理NICに仮想ブリッジを接続する

通常だと、ホストマシンを通してNATにより仮想マシンは外部と通信する。これではプログラミングの検証など何かと不便なので 仮想マシンを直接、同セグメントに接続するために、物理NICに仮想ブリッジを接続する。

  • 仮想ブリッジインターフェースの作成
# brctl addbr br0
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
virbr0          8000.525400b745d4       yes             virbr0-nic
                                                        vnet0
  • 仮想ブリッジに物理NICを接続する
# brctl addif br0 eth0
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.001f2966513c       no              eth0
virbr0          8000.525400b745d4       yes             virbr0-nic
                                                        vnet0
  • ネットワーク設定を修正する

br0作成する

# vi /etc/sysconfig/network-scripts/ifcfg-br0

[root@dlp ~]# mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0 
[root@dlp ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0

# 変更
DEVICE=br0
HWADDR=00:0C:29:5F:03:42
# 変更
TYPE=Bridge
UUID=c1539085-73d7-4455-ac82-88f26464458a
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.30
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
DNS1=10.0.0.1
IPV6INIT=no
USERCTL=no

※ゲートウェイの設定など必ず記載すること

[root@dlp ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 新規作成
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0

上記でうまくいかなかったら、eth0を修正する

NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0
  • networkを再起動して設定を反映する
# /etc/init.d/network restart

下記は必要ないかも
# chkconfig networkManager off
# service NetworkManager stop

  • 仮想ブリッジの確認
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.001f2966513c       no              eth0
virbr0          8000.525400b745d4       yes             virbr0-nic
                                                        vnet0