QEMUブリッジネットワーク接続環境(Fedora 20 QEMU/KVM編)

Fedora 20におけるQEMU環境でのネットワーク接続タイプには大きく分けて次の3種類あります。
・ユーザーモード(userモード) ※ゲスト側IPアドレスは10.0.2.x(userモード使用のWindows 3.1)
・TAPモード
・Bridgeモード

QEMU仮想マシンをホスト側の物理ネットワークと同じネットワークアドレス体系にするネットワーク接続をここでは「QEMUブリッジ接続」と呼ぶことにします。
このQEMUブリッジ接続はBridgeモードとTAPモードの両方で実現できます。
ここではFedora 20のQEMU-KVM環境でQEMU仮想マシンをホスト(Fedora 20実機)側の物理ネットワークと同じネットワークアドレス体系にする「QEMUブリッジ接続」手順を紹介します。


1.マシン環境


2.ホストOS側でのQEMU/KVM導入

以下のコマンドでQEMU/KVMをインストールします。
様々なネットワーク接続オプション確認のためにvirt-manager(仮想マシンマネジャ)も導入しておきます。
# yum install kvm qemu-kvm virt-install virt-manager libvirt qemu
# reboot


3.ホストOS側でのQEMUブリッジ接続環境準備


4.QEMUのBridgeモード利用によるQEMUブリッジ接続

QEMU仮想マシンの起動パラメタで以下の指定を行います。
qemu-system-i386 -net nic,model=ne2k_pci -net bridge,br=br0 他のパラメタ
※model値は任意です。
※bridge指定を行うと/usr/libexec/qemu-bridge-helperが内部実行されます。

QEMU仮想マシン側のDHCPでのIPアドレス取得ではホスト側物理ネットワーク上にあるDHCPサーバからIPアドレスが割り当てられます。
またQEMU仮想マシン側で物理ネットワーク上のスタティックなIPアドレスを使用することもできます。


5.QEMUのTAPモード利用によるQEMUブリッジ接続

QEMU仮想マシンの起動パラメタで以下の指定を行います。
qemu-system-i386 -net nic,model=ne2k_pci -net tap,ifname=tap0,script=/etc/myqemubr-ifup 他のパラメタ
※model値は任意です。

QEMU仮想マシン側のDHCPでのIPアドレス取得ではホスト側物理ネットワーク上にあるDHCPサーバからIPアドレスが割り当てられます。
またQEMU仮想マシン側で物理ネットワーク上のスタティックなIPアドレスを使用することもできます。


・実寸画像はこちらです。


7.QEMUブリッジ接続環境の永続手順

QEMUブリッジ接続環境を永続させるには以下のコマンドを実行すればOKです。
# systemctl disable NetworkManager.service
# cp /root/ifcfg-p4p1.back /etc/sysconfig/network-scripts/ifcfg-p4p1 ※上書きコピー
# cp /root/ifcfg-br0 /etc/sysconfig/network-scripts/ifcfg-br0
# systemctl enable network.service
# reboot


8.QEMUブリッジ接続環境の消滅手順

QEMUブリッジ接続環境を消滅させるには以下のコマンドを実行すればOKです。
# systemctl stop network.service
# systemctl disable network.service
# cp /root/ifcfg-p4p1.back /etc/sysconfig/network-scripts/ifcfg-p4p1 ※上書きコピー
# rm -f /etc/sysconfig/network-scripts/ifcfg-br0 ※ifcfg-br0の削除
# systemctl enable NetworkManager.service
# systemctl start NetworkManager.service


9.補足

(1)QEMUブリッジ接続が使用できる環境で仮想マシンマネジャで仮想マシンを定義する際、仮想マシン設定の詳細なオプションでネットワークのホストデバイスとして「p4p1(Bridge 'br0'」を選択するとその仮想マシンはQEMUブリッジ接続型となります。
(2)QEMU仮想マシンでのQEMUブリッジ接続ではホストOS側の物理ネットワーク上の他のマシンからそのQEMU仮想マシンに制限なくネットワーク接続することもできます。
(3)QEMUブリッジ接続はKVMハイパバイザが存在しなければ実現できません。
KVMハイパバイザが存在しない環境(例えばKVM以外のハイパバイザとしてHyper-Vハイパバイザ上のHyper-V仮想マシン環境)では、
「-net bridge,br=br0」や「-net tap,ifname=tap0,script=/etc/myqemubr-ifup」は機能しません。
例えばHyper-Vハイパバイザ上のHyper-V仮想マシン環境(Fedora 20)でbr0を活性化させてQEMU仮想マシンで「-net bridge,br=br0」を使用したとしても、
DHCPでのIPアドレス割り当ては「0.0.0.0」となります。
(4)libvirtを導入するとvirbr0という仮想ブリッジデバイスが標準で活性化されますがQEMUブリッジ接続を実現させるものではありません。
virbr0の使用は「-net bridge,br=virbr0」という指定となりますが、virbr0のネットワーク特性は以下のようになります。
・デバイス名:virbr0
・IPv4アドレス:192.168.122.1
・ネットワークアドレス体系:192.168.122.0/24
・DHCPの範囲:192.168.122.2-192.168.122.254
・フォワーディング:NAT
・virbr0は仮想マシンマネジャで仮想マシンを作成した場合のdefaultの仮想ネットワークとなります。
・virbr0はKVMハイパバイザが存在しない環境でも利用可能です。