
私は 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 アドレスが取得され、外部にアクセスできるはずです。