2014年6月16日月曜日

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

  • このエントリーをはてなブックマークに追加


今日は、KVM環境での仮想ネットワークの構成について、自分なりの理解を書いておきます。
コマンドの実行は、CentOS 6.5での操作です。

KVM環境で仮想ネットワークの種類としては、2種類あります。(個人的な見解で間違っている可能性がある)

1
2
プライベートネットワーク 
外部ネットワーク  

プライベートネットワーク


外部に接続されないブリッジを構成し、プライベートネットワークを構成することで、仮想マシン同士、仮想マシンとホストが通信できるようになります。
KVM環境を構成すると、既定ではlibvirtdデーモンが管理するvirbr0という仮想ブリッジが作成されます。192.168.122.0/24ネットワークが構成されます。
以下のような感じです。

■複数の仮想マシン(VM1~N)に192.168.122.0のネットワークのIPを割り当てる。仮想マシン同士で通信できる。
■virbr0に192.168.122.1が設定されている。仮想マシンとホストで通信できる。
■仮想マシンが外部に接続するには、ホスト側でiptablesを設定する必要がある。
■仮想マシンが増えるごとに、Tapデバイスも増える。仮想マシンが起動されると、ifconfigを実行してvnet0,...vnetNが表示されることを確認できる。

TAP は、イーサネットデバイスをシミュレートし、データリンク層の操作を行う。TUN はネットワーク層をシミュレートするもので、IPパケットなどを操作する。TAPはブリッジ生成に使われ、TUNはルーティングに使われる。

外部ネットワーク


物理NICをブリッジに接続することで、複数の仮想マシンが物理NICを共有物理装置として外部に接続します。

■複数の仮想マシン(VM1~N)に外部IPを割り当てる。外部ネットワークに接続できる。
■物理NICがIPを持っていない。代わりにbr0にIPを割り当てる。

実践してみよう


  • KVMをインストールして、eth0にアドレスを設定します。ifconfigを実行すると、以下のようになります。
  [root@centos01 network-scripts]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:15:5D:01:03:19
          inet addr:10.10.3.102  Bcast:10.10.7.255  Mask:255.255.248.0
          inet6 addr: fe80::215:5dff:fe01:319/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:29935 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3681 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2566351 (2.4 MiB)  TX bytes:379902 (370.9 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:206 (206.0 b)  TX bytes:206 (206.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:A7:95:B1
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)  
  • 物理NICをブリッジ化します。
1.brctl showコマンドでブリッジの情報を確認します。virbr0しか表示されません。
[cye@centos01 network-scripts]$ brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400a795b1       yes             virbr0-nic  
2./etc/sysconfig/network-scripts/ifcfg-eth0ファイルを下記のように書き換えます。
DEVICE=eth0
HWADDR=00:15:5D:01:03:19
TYPE=Ethernet
UUID=668ece27-3426-4b48-a2ee-d67b4f5bf282
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.10.3.102
NETMASK=255.255.248.0
GATEWAY=10.10.0.1  
 ↓↓
DEVICE=eth0
HWADDR=00:15:5D:01:03:19
UUID=668ece27-3426-4b48-a2ee-d67b4f5bf282
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
3./etc/sysconfig/network-scriptsの下に、ifcfg-br0ファイルを作成し、以下のように記述します。
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.10.3.102
NETMASK=255.255.248.0
GATEWAY=10.10.0.1
ONBOOT=yes  
※注意:Typeのところで、小文字大文字を区別するので、必ずBridgeを記述する必要があります。そうでない(例:BRIDGE)とNetworkサービスを再起動するときに、evice br0 does not seem to be present, delaying initializationというエラーが発生します。

4.ネットワークサービスを再起動します。
  # service network restart  
5.ブリッジ情報を再度確認します。
  [root@centos01 network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.00155d010319       no              eth0
virbr0          8000.525400a795b1       yes             virbr0-nic  
6.ifconfigを実行し、br0などの情報が表示されます。
  [root@centos01 network-scripts]# ifconfig
br0       Link encap:Ethernet  HWaddr 00:15:5D:01:03:19
          inet addr:10.10.3.102  Bcast:10.10.7.255  Mask:255.255.248.0
          inet6 addr: fe80::215:5dff:fe01:319/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2424 errors:0 dropped:0 overruns:0 frame:0
          TX packets:245 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:158386 (154.6 KiB)  TX bytes:21910 (21.3 KiB)

eth0      Link encap:Ethernet  HWaddr 00:15:5D:01:03:19
          inet6 addr: fe80::215:5dff:fe01:319/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:76513 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6378357 (6.0 MiB)  TX bytes:717361 (700.5 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:206 (206.0 b)  TX bytes:206 (206.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:A7:95:B1
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)  
7.仮想マシンを作って、起動したら、ifconfigの結果にvnet0などの情報も確認できます。

この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿