Ubunut20.04 KVMでプライベートクラウドを構築しよう ~その3 KVMと仮想環境

 本記事では、KVMをインストールしたときにホストマシンの内部に自動作成される、「KVMデフォルトネットワーク」の構成について説明します。
 KVMのインストール方法については、前の記事を参照してください。

関連記事
 インストールするパッケージについて
 KVMのインストールと仮想マシンの作成
 KVMの仮想環境(この記事)
 サーバ接続用仮想ネットワークの作成

1.KVMのデフォルトネットワーク

 図1は、KVMインストール初期状態の仮想環境の構成図です。
 後ろの記事で図1の補足説明をしていますので、図を見ながら記事を読むと良いと思います。

 前提条件として、ホストマシン(物理PC)には、enp89s0という名前のイーサネットのネットワークインタフェースカード(NIC)が1枚あるものとします。このNICは192.168.0.0/24の物理LANに接続されており、192.168.0.101のIPアドレスが設定されているものとします。

画像1

図1 KVMデフォルトネットワークの構成

 KVMをインストールすると、内部にvirbr0という名前の仮想ブリッジ(スイッチングハブ)が自動で作成されます。この仮想ブリッジは、内部に192.168.123.1/24のIPアドレスが付与されています。仮想ブリッジvirbr0のIPネットワークアドレスの範囲は、192.168.123.0/24(192.168.123.1 ~ 192.168.123.254)であり、virbr0に接続される仮想マシンへは、このネットワーク範囲に含まれるIPアドレスを付与します。
 virbr0-nicは、仮想ブリッジvirbr0の内部に作成された仮想NICです。virbr0-nicは、仮想ブリッジvirbr0に接続された仮想マシンからは、IPアドレス192.168.123.1をもつ、デフォルトゲートウェイルータのポートに見えます。

KVMデフォルトネットワークのIPアドレスの第3オクテットの"123"はKVMのインストール環境によって変わることがあるようです。

 以下、仮想マシンの作成手順に沿って、仮想マシンへのネットワーク設定について説明します。
 ここで作成する仮想マシンを、仮に「仮想マシン1」とします。仮想マシン1作成時、どの仮想ブリッジに接続するか聞かれますので、ここで仮想ブリッジvirbr0(デフォルトネットワーク:NAT)に接続するよう指定します。このタイミングで、仮想ブリッジvirbr0には、vnetx(xは数字の通し番号)の名前で接続ポートが自動作成され、仮想マシン1のNICと自動接続されます。

 つづいて、仮想マシン1にOSをインストールして仮想マシン1を完成させます。

 作成した仮想マシン1を起動すると、仮想マシン1のネットワーク接続に必要な項目が自動設定され、仮想マシン1はそのまま外部ホストと通信ができるようになります。これは、仮想ブリッジvirbr0が、KVMデフォルトネットワーク(192.168.123.0/24)のDHCPサーバを兼ねているからです。KVMのデフォルトネットワークに接続する仮想マシンについては、ネットワーク設定をする必要がありません。

3.KVMデフォルトネットワークと外部物理ネットワークの接続方式

 上記で説明したKVMデフォルトネットワーク(仮想ブリッジvirbr0のネットワーク)と外部物理ネットワークの接続方式について補足します。

 KVMのデフォルトネットワーク(192.168.123.0/24)に接続された仮想マシンから、外部ネットワーク向きのサービスリクエスト通信は、物理NICのIPアドレス(192.168.0.101)でソースNAT(IPマスカレード)されます。

 仮想マシンのネットワーク設定が不要で、便利なデフォルトネットワークですが、仮想環境にサーバを構築したい場合は困ったことになります。IPマスカレードでは、外部ホストから仮想マシン(192.168.123.0/24)宛のサービスリクエストをルーティングすることができないためです。

 ルーティング以外の方法で解決する策もあるのですが、ネットワークやアプリケーションの設定が面倒になります。仮想環境にサーバを構築したい場合は、KVMのデフォルトネットワークとは別の仮想ネットワークを作ることをおすすめします
 次の記事では、サーバ接続用の仮想ネットワークの構成と作成方法について説明をします。KVM環境にサーバを構築したい方は、是非参考にしてください。

 KVMインストール直後のホストマシンのipコマンド(ip addrとip route)の出力です。上記図1を使って説明したホストマシンの各仮想NICや仮想ブリッジは、linux OSからは以下のように確認することができます。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: enp89s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
   link/ether 1c:69:7a:a2:21:45 brd ff:ff:ff:ff:ff:ff
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 52:54:00:00:4e:c0 brd ff:ff:ff:ff:ff:ff
   inet 192.168.123.1/24 brd 192.168.123.255 scope global virbr0
      valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
   link/ether 52:54:00:00:4e:c0 brd ff:ff:ff:ff:ff:ff
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
   link/ether fe:54:00:a6:01:ad brd ff:ff:ff:ff:ff:ff
   inet6 fe80::fc54:ff:fea6:1ad/64 scope link 
      valid_lft forever preferred_lft forever
$ ip route
default via 192.168.0.1 dev br0 proto static 
192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.101 
192.168.123.0/24 dev virbr0 proto kernel scope link src 192.168.123.1 
ogs-digilife@HomeGW-NUC11i5$

 仮想ブリッジvirbr0に接続された「仮想マシン1」のipコマンド(ip addrとip route)の出力です。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
   link/ether 52:54:00:a6:01:ad brd ff:ff:ff:ff:ff:ff
   inet 192.168.123.2/24 brd 192.168.123.255 scope global dynamic noprefixroute enp1s0
      valid_lft 3368sec preferred_lft 3368sec
   inet6 fe80::75e7:7329:9aa6:3fce/64 scope link noprefixroute 
      valid_lft forever preferred_lft forever
$ ip route
default via 192.168.123.1 dev enp1s0 proto dhcp metric 100 
169.254.0.0/16 dev enp1s0 scope link metric 1000 
192.168.123.0/24 dev enp1s0 proto kernel scope link src 192.168.123.23 metric 100 

次の記事


この記事が気に入ったらサポートをしてみませんか?