第6章 ネットワーク設定

本章では、libvirt ベースのゲスト仮想マシンによって使用される一般的なネットワーク設定を紹介します。
Red Hat Enterprise Linux 7 は以下の仮想化ネットワーク設定に対応しています。
  • Network Address Translation (NAT) を使用した仮想ネットワーク
  • PCI デバイス割り当てを使用して直接割り当てられた物理デバイス
  • PCIe SR-IOV を使用して直接割り当てられた仮想機能
  • ブリッジネットワーク
ゲスト仮想マシン上のネットワークサービスに外部ホストがアクセスできるようにするには、NAT またはネットワークブリッジングを有効にするか、または PCI デバイスを直接割り当てる必要があります。

6.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 設定ファイル (/etc/libvirtd/qemu/myguest.xml など) で使用できます。
# ll /etc/libvirt/qemu/
total 12
drwx------. 3 root root 4096 Nov  7 23:02 networks
-rw-------. 1 root root 2205 Nov 20 01:20 r6.4.xml
-rw-------. 1 root root 2208 Nov  8 03:19 r6.xml
デフォルトのネットワークは /etc/libvirt/qemu/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 ルールを追加します。このルールは、virbr0INPUTFORWARDOUTPUT チェーンで POSTROUTING デバイスに割り当てられたゲスト仮想マシンから/へのトラフィックを可能にするものです。次に libvirt は、ip_forward パラメーターの有効化を試みます。別のアプリケーションが ip_forward を無効にする場合もあるので、/etc/sysctl.conf に以下を追加することが最善の選択肢です。
 net.ipv4.ip_forward = 1
ゲスト仮想マシンの設定

ホスト設定が完了したら、ゲスト仮想マシンはその名前をベースにした仮想ネットワークに接続できます。ゲストを「デフォルト」の仮想ネットワークに接続するには、ゲストの XML 設定ファイル (/etc/libvirtd/qemu/myguest.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>