KVMで始めるプライベート・クラウドへの第一歩

第3回KVMのネットワーク構成

仮想ネットワークの全体像

今回はKVMの仮想ネットワークについて解説します。KVMではホストLinuxの仮想ブリッジ機能を利用して仮想ネットワークを構成します。仮想ブリッジは、ホストLinux上に仮想的なL2スイッチを構成する機能です。複数の仮想ブリッジを構成することも可能です。

図1は、仮想NICと仮想ブリッジの接続を表します。

図1 KVM仮想ネットワークの構成
図1 KVM仮想ネットワークの構成

仮想NICは、ホストLinux内部のTAPデバイスを経由して仮想ブリッジに接続されます。TAPデバイスは、Linuxがユーザプロセスと通信するための仮想的なNICを提供する機能です。KVMの環境では、ホストLinuxと仮想マシン・プロセスが通信するためのインターフェースとして機能します。ゲストOSが仮想NICで送受信するパケットは、ホストLinux側のTAPデバイスから送受信されることになります。同じ仮想ブリッジに接続された仮想マシンどうしは、仮想ブリッジを経由して通信することが可能です。

仮想ブリッジの状態を確認する際は、brctlコマンドを利用するのが一般的です。仮想ブリッジに接続された仮想マシンを確認するツールも公開されています。

Linux at IBM - KVMの仮想ネットワーク接続状態を表示するスクリプト
http://www.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-00314E5B

仮想マシンを外部ネットワークに接続するには、2種類の方法があります。1つは、ホストLinuxの物理NICを仮想ブリッジに接続する方法です図1の①⁠⁠。これは、L2スイッチを経由して仮想マシンを外部ネットワークに接続することと同じです。仮想マシンには、外部ネットワークと同じサブネットのIPアドレスをアサインする必要があります。

もう1つは、iptablesのNAT(IPマスカレード)機能を利用する方法です。この場合は、仮想ブリッジに対してIPアドレスをアサインして、仮想マシンのゲストOSでは、これをデフォルトゲートウェイに指定します。このゲートウェイに到達したパケットについては、送信元IPアドレスを物理NICのIPアドレスに変換して外部ネットワークに送出します図1の②⁠⁠。仮想ブリッジに接続された仮想マシン全体は、外部のネットワークとは独立したプライベート・ネットワークを構成します。仮想マシンから外部のサーバに接続することは可能ですが、仮想マシン上のサーバ・アプリケーションに外部から接続することはできません。

①と②では仮想ブリッジの構成手順が異なります。

libvirtdサービスによる仮想ネットワーク構成

KVMを導入した環境では、サーバ起動時に自動的にlibvirtdサービスが起動するように設定されます。②の仮想ブリッジはlibvirtdサービスが管理しており、virt-managerから追加/削除などの管理作業が行えます。デフォルトでは、仮想ブリッジvirbr0を持った「default」という名称の仮想ネットワークが構成されます。

virt-managerで「ホスト詳細」のウィンドウを開いて[仮想ネットワーク]のタブを選択すると、図2のような仮想ネットワークの管理画面が表示されます。

図2 virt-managerの仮想ネットワーク管理画面
図2 virt-managerの仮想ネットワーク管理画面

新規の仮想ネットワークを追加するには、画面左下の「+」マークのボタンをクリックします。また、既存の仮想ネットワークを選択して「×」マークのボタンをクリックすると、仮想ネットワークが停止します。この時「ゴミ箱」マークのボタンがクリックできるようになり、これをクリックすると、仮想ネットワークの定義が削除されます。

この方法で作成した仮想ネットワークについては、ホストLinux上で稼働するdnsmasqプロセスにより、DHCPサーバとDNSサーバの機能が提供されます。ゲストOSのIPアドレスをDHCPで自動設定することが可能です。また、外部ネットワークとの接続に必要なiptablesの設定は、libvirtdサービスが起動したタイミングで自動的に行われます。

物理NICを仮想ブリッジに接続する構成

①の仮想ブリッジを構成する際は、ホストLinuxのネットワーク設定ファイルを直接に編集する必要があります。次は仮想ブリッジbr0を作成して、物理NICのeth0を接続する設定例です。

/etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
NM_CONTROLLED=no
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=00:14:5E:16:1A:E4
BOOTPROTO=none
BRIDGE=br0
NM_CONTROLLED=no

ホストLinuxは、ネットワーク・アドレスが192.168.1.0/24の外部ネットワークに接続されており、IPアドレス192.168.1.10を使用する前提です。MACアドレス(HWADDR)は環境に応じて書き換えて下さい。ifcfg-br0では、仮想ブリッジbr0を作成してIPアドレスをアサインしています。ifcfg-eth0では、eth0をbr0に接続する指定を行います。Red Hat Enterprise Linux 6.0ではデフォルトでNetworkManagerサービスが起動していますが、仮想ブリッジはNetworkManagerで管理することができません。NW_CONTROLLED=noは、NetworkManagerの管理外にするという指定です。

サーバを再起動すると、仮想ブリッジbr0が構成されて物理NICのeth0が接続されます。

仮想マシンの仮想ネットワーク接続

最後に、作成した仮想ネットワークに仮想マシンを接続する方法を説明します。virt-managerで新規の仮想マシンを作成する時は、仮想マシンに対して、仮想NICが1つだけアサインされます。これを接続する仮想ネットワークをウィザード画面で選択します。複数の仮想NICが必要な場合は、仮想マシンの作成が完了した後に、virt-managerから新規の仮想NICの追加を行います。仮想NICを接続する仮想ネットワークを選択するウィザード画面では、⁠仮想ネットワーク」「共有物理装置」のどちらかを選択します。それぞれ、②の仮想ネットワークと①の仮想ネットワークに対応しています。

今回は、KVMの仮想ネットワーク構成についてやや駆け足で説明しました。KVMの仮想ネットワークについては、技術評論社より発行の書籍『プロのためのLinuxシステム・ネットワーク管理技術(中井悦司・著⁠⁠』でも徹底的に解説しています。ぜひ参考にしてください。

おすすめ記事

記事・ニュース一覧

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy