第11章 ネットワークの設定

この章では、libvirt ベースのゲスト仮想マシンが使用する一般的なネットワーク設定について説明します。詳細な情報については、libvirt ネットワークアーキテクチャー資料 (http://libvirt.org/intro.html) を参照してください。
Red Hat Enterprise Linux 6 は以下の仮想化ネットワーク設定に対応しています。
  • Network Address Translation (NAT) を使用した仮想ネットワーク
  • PCI デバイス割り当てを使用して直接割り当てられた物理デバイス
  • PCIe SR-IOV を使用して直接割り当てられた仮想機能
  • ブリッジネットワーク
ゲスト仮想マシン上のネットワークサービスに外部ホストがアクセスするには、NAT またはネットワークブリッジングを有効にするか、または PCI デバイスを直接割り当てる必要があります。

11.1. libvirt による Network Address Translation (NAT)

ネットワーク接続共有の最も一般的な方法の 1 つは、Network Address Translation (NAT) 転送 (別名、仮想ネットワーク) です。
ホスト設定

標準的な libvirt インストールはすべて、デフォルトの仮想ネットワークで仮想マシンへの NAT ベースの接続を提供します。virsh net-list --all コマンドでこれが利用可能であること確認します。

# virsh net-list --all
Name                 State      Autostart 
-----------------------------------------
default              active     yes
存在しない場合は、サンプルのXML 設定ファイルを再度読み込んで、アクティブ化します。
# virsh net-define /usr/share/libvirt/networks/default.xml
デフォルトのネットワークは /usr/share/libvirt/networks/default.xml で定義されています。
デフォルトのネットワークが自動的に開始するようマークします。
# virsh net-autostart default
Network default marked as autostarted
デフォルトのネットワークを開始します。
# virsh net-start default
Network default started
libvirt デフォルトのネットワークが実行されると、分離されたブリッジデバイスがあることが分かります。このデバイスには、物理インターフェースが追加されて いません 。新規デバイスは、NAT および IP 転送を使用して物理ネットワークに接続します。新規インターフェースを追加しないでください。
# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.000000000000       yes
libvirtiptables ルールを追加します。このルールは、INPUTFORWARDOUTPUTPOSTROUTING チェーンで virbr0 デバイスにアタッチされたゲスト仮想マシンから/へのトラフィックを可能にするものです。次に libvirt は、ip_forward パラメーターの有効化を試みます。一部のアプリケーションが ip_forward を無効にする場合もあるので、/etc/sysctl.conf に以下を追加することが最善の選択肢です。
 net.ipv4.ip_forward = 1
ゲスト仮想マシンの設定

ホスト設定が完了したら、ゲスト仮想マシンはその名前をベースにした仮想ネットワークに接続可能になります。ゲストをデフォルトの仮想ネットワークに接続するには、ゲストの (/etc/libvirtd/qemu/myguest.xml などの) XML 設定ファイルで以下を使用します。

<interface type='network'>
   <source network='default'/>
</interface>

注記

MAC アドレスの定義はオプションです。定義されない場合、MAC アドレスは自動生成され、ネットワークが使用するブリッジデバイスの MAC アドレスとして使用されます。MAC アドレスの手動設定は、ご使用の環境内での一貫性や容易に参照できる状態を維持し、可能性は非常に低いものの競合を回避するのに役立ちます。
<interface type='network'>
  <source network='default'/>
  <mac address='00:16:3e:1a:b3:4a'/>
</interface>