如何为我的 KVM 客户机提供网络连接?

如何为我的 KVM 客户机提供网络连接?

我对 KVM 和整个虚拟化概念完全陌生,但我已经阅读了几天的相关信息并在过去的几个小时里一直在玩它。

创建、安装、克隆等……一切似乎都很棒。但是当我尝试 ping 8.8.8.8 时,我创建的访客最终出现“网络不可达”的情况

我对主机和客户机均使用 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”关键字指定默认网关。以下是用于手动指定参数(而不是使用 DHCP)的 ifcfg 脚本示例。当然,您需要为您的网络提供正确的 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”

验证您的虚拟机是否已连接到网桥 br0,并且由于您的 br0 具有公共 IP(我假设因为您已对其进行评论),请使用适当的网关为您的客户虚拟机分配公共 IP。

或者

从 br0 中删除虚拟接口,并将其添加到 virbr0。

在主机上

brctl delif br0 vifname 

brctl addif virbr0 vifname 

通过设置来启用客户端的 dhcpBOOTPROTO=dhcp

您将获得一个 192.168.122.0 的 IP 地址,并且您应该能够访问外部,前提是您拥有由 libvirt 创建的正确的 NAT 规则。

相关内容