KVM ゲストにネットワーク接続を提供するにはどうすればいいですか?

KVM ゲストにネットワーク接続を提供するにはどうすればいいですか?

私は KVM と仮想化の考え方にまったく不慣れですが、ここ数日それについて読み、ここ数時間はそれをいじってみました。

作成、インストール、クローン作成など、すべてうまくいっているように見えます。しかし、作成したゲストは、8.8.8.8 に ping しようとすると、「ネットワークに到達できません」というエラーになります。

ホストとゲストの両方に CentOS 6.5 を使用しています。

ゲスト上の ifconfig:

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: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)

おそらくこれが問題の原因だと思います。eth0 デバイスがあるはずですが、なぜないのでしょうか?

インストールコード:

virt-install \
--virt-type kvm \
--name sebweb2 \
--ram 16384 \
--cdrom /var/ISOs/CentOS-6.5-x86_64-minimal.iso \
--disk /var/lib/libvirt/images/sebweb2.img,format=qcow2 \
--network bridge=br0 \
--nographics \
--os-type linux \
--os-variant rhel6 \
--vcpus 12

ホストのifconfig:

br0   Link encap:Ethernet  HWaddr 16:AC:2D:A6:98:40
      inet addr:xxx.yyy.zzz.217  Bcast:xxx.yyy.zzz.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:92172 errors:0 dropped:0 overruns:0 frame:0
      TX packets:58463 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:5428257 (5.1 MiB)  TX bytes:71953860 (68.6 MiB)

eth0  Link encap:Ethernet  HWaddr 16:AC:2D:A6:98:40
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:117592 errors:0 dropped:0 overruns:0 frame:0
      TX packets:79097 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:8766798 (8.3 MiB)  TX bytes:73073312 (69.6 MiB)
      Memory:fbc00000-fbd00000

lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:92 errors:0 dropped:0 overruns:0 frame:0
      TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:8172 (7.9 KiB)  TX bytes:8172 (7.9 KiB)

virbr0 Link encap:Ethernet  HWaddr 51:54:00:39:CA:A7
      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:2 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:128 (128.0 b)  TX bytes:0 (0.0 b)

vnet0 Link encap:Ethernet  HWaddr 54:FE:00:F1:31:95
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:256 errors:0 dropped:0 overruns:1 carrier:0
      collisions:0 txqueuelen:500
      RX bytes:0 (0.0 b)  TX bytes:20835 (20.3 KiB)

vnet1 Link encap:Ethernet  HWaddr 54:FE:00:CD:CD:C4
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:11 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1307 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:500
      RX bytes:2722 (2.6 KiB)  TX bytes:110215 (107.6 KiB)

他に提供すべき関連情報はありますか?

ありがとう!

答え1

ゲスト上で「ifconfig -a」を実行しても eth0 が表示されない場合は、コマンド ラインで実行するのではなく、ホスト上で「virt-manager」を実行して、仮想マシンのパラメータを編集するための便利な GUI を入手します。必要に応じて、その GUI を通じてネットワーク インターフェイスを追加できます。

ゲストに eth0 を設定したら、ファイル /etc/sysconfig/network-scripts/ifcfg-eth0 でインターフェイスのパラメータを指定する必要があります。必ず「GATEWAY」キーワードでデフォルト ゲートウェイを指定してください。以下は、パラメータを手動で指定するためのサンプル ifcfg スクリプトです (DHCP を使用せずに)。もちろん、ネットワークの IPADDR、NETWORK、NETMASK、GATEWAY の正しい値を指定する必要があります。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.110
NETWORK=192.168.1.0
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

ifcfg-eth0 への変更を有効にするには、「service network restart」を実行します。

答え2

ホスト上で「brctl show」を実行する

VM がブリッジ br0 に接続されていることを確認します。また、br0 にはパブリック IP があるため (コメントされているのでそう推測します)、適切なゲートウェイを使用してゲスト VM にパブリック IP を割り当てます。

または

br0 から仮想インターフェースを削除し、virbr0 に追加します。

ホスト上

brctl delif br0 vifname 

brctl addif virbr0 vifname 

ゲストでDHCPを有効にするには、ブートプロトコル=dhcp

libvirt によって正しい NAT ルールが作成されていれば、192.168.122.0 の IP アドレスが取得され、外部にアクセスできるはずです。

関連情報