今日は、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しか表示されません。
2./etc/sysconfig/network-scripts/ifcfg-eth0ファイルを下記のように書き換えます。
[cye@centos01 network-scripts]$ brctl show bridge name bridge id STP enabled interfaces virbr0 8000.525400a795b1 yes virbr0-nic
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 件のコメント:
コメントを投稿