SL6: KVMによる仮想マシン:ブリッジによるネットワーク構成

May 18, 2011 – 11:53 am

以前、「KVMで仮想マシンを作成してみた」を書いた。そこでは、仮想マシンをホストマシンに接続させるための2種類のネットワーク「仮想ネットワーク」と「物理デバイス共有」(ブリッジネットワーキング)のうち、比較的設定が容易な「仮想ネットワーク」を用いた。

今回は、もうひとつの方法、「物理デバイス共有」によりネットワークを構成した。この方法を採用することにより、複数の仮想マシン(ゲストOS)を起動し、外部ノードからそれら仮想マシンにアクセスが可能になる。

ブリッジネットワーキングに必要な前準備
: SL6を導入した直後には、ネットワークの制御はNetworkManagerにより行われる。しかし、ブリッジネットワーキングによりネットワークを構成しようとすると、NetworkManagerがブリッジをサポートしないことから、まずサービスNetworkManagerを無効にし、これに代えサービスnetworkを有効にしておくことが必要になる。

これをおこなうため、サービス NetworkMangerの起動スクリプトをoff にするとともに、起動中のサービスを停止してやる。一方、サービス network の起動スクリプトを off にし、これを起動してやればよい:

 # chkconfig NetworkManager off
 # chkkonfig network on
 # service NetworkManger stop
 # service network start

network initscript編集によるブリッジの追加: ネットワーク用のデバイス個々の設定・定義は /etc/sysconfig/network-scriptsディレクトリの配下に置かれるファイル ifcfg-[device-name] に書かれる。ここで、[device-name]は、デバイスの名前に対応し、物理NICがひとつだけある場合にはeth0となり、この物理NICの設定内容はifcfg-eht0に記録・保存されている。

今、この物理NIC eth0を仮想マシンにつなぐためのブリッジ br0に追加する。

このために、/etc/sysconfig/network-scriptsディレクトリ上にifcfg-br0を新たにつくり、ifcfg-eth0、ifcfg-br0をそれぞれ以下のように設定する:

     ifcfg-eth0:

          DEVICE=eth0
          HWADDR=xx:xx:xx:xx:xx:xx   // NIC eth0のMACアドレス
          ONBOOT=yes        // 起動時に設定を有効にするかどうか(yes/no)
          BRIDGE=br0                 // eth0 をつなぐブリッジ名
   ifcfg-br0:

          DEVICE=br0
          TYPE=Bridge
          ONBOOT=yes
          DELAY=0

以上の設定が終了したところで、サービスnetworkを再起動し、上記の設定内容をホストマシン上に反映する:

     # service network restart

なお、上記設定ではホストOSには外部との通信を行なえない。これを可能にするには、ブリッジbr0にIPアドレスなどネットワークの設定を付け加えておけばよい。すなわち、

     ifcfg-br0:

          DEVICE=br0
          TYPE=Bridge
          IPADD=192.168.0.102     // 追加
          NETMASK=255.255.255.0   // 追加
          GATEWAY=192.168.0.1     // 追加
       ONBOOT=yes
          DELAY=0

iptables の設定: ブリッジを作ったところで、すべてのネットワークトラフィックがこのブリッジを渡って転送されるようにiptablesを設定する:

    # iptables –I FORWARD –m pysdev –physdev-is-bridged –j ACCEPT
    # service iptables save
    # service iptables restart

guest OS側の設定: guest OSを上記したブリッジbr0に接続するには、個々のguestOSを定義しているXMLファイルのインタフェース部を編集してやればよい。

ブリッジ br0 にtap0を介して接続する例を以下に示す:


<devices>

  <interface type='bridge'>
     <source bridge='br0'/>
     <target dev='tap0'/>
     <mac address="00:11:22:33:44:55"/>
  </interface>
</device>

なお、virsh edit によるXMLファイルの編集においては、mac address部は編集時に省略すると、自動的に設定・挿入される。

個々のゲストOSのネットワーク(IPアドレスなど)の設定は、ゲストOSにログインし、夫々のOSの様式に沿って行えばよい。

参考にしたサイト


  1. 1 Trackback(s)

  2. Oct 28, 2011: 自宅サーバー構築・覚書きリスト | Yama's Memorandum

Post a Comment