我在运行于 Ubuntu 12 的 KVM 中安装了 Windows 7 作为客户机。Windows 似乎运行良好,只是它无法访问任何外部域或 IP。
客户机可以 ping 通主机的 IP,主机也可以 ping 通客户机的 IP,但仅此而已。
我使用了默认 NAT 设置,其他人报告说该设置应该可以正常工作。我该怎么做才能解决这个问题?
编辑:我也在同一个主机上运行 VirtualBox,也运行 Windows VM,并且它的互联网运行良好。
编辑:Ubuntu 主机的路由表:
user@localhost:~$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
virbr0 是我尝试在 Virtualbox 中设置桥接时留下的一些旧桥,但由于 Virtualbox 可以使用 NAT,因此不再使用它。我曾尝试将它与 KVM 一起使用,但没有成功。
答案1
在 oftc-channel #virt 上进行一些讨论之后,@laine 向我指出了解决方案。
显然,ubuntu 12.04 上缺少 resolv.conf 文件(至少在我安装的 linux mint 13 上)。它被一些 resolvconf 目录树取代。
要为客人启用互联网:我必须
- sudo iptables --flush => 在主机上,可能已经过时了,我不知道。它清除了一些规则。
- 将“nameserver8.8.8.8”添加到 /etc/resolv.conf
- 重启
之后,它起作用了
编辑:请注意,步骤 2 也在主机上执行。我认为是 Linux Mint (ubuntu 12.04),缺少 /etc/resolv.conf 文件。
答案2
有什么原因导致你不能使用桥接网络?总是当虚拟机需要访问互联网时,以桥接模式运行,我一般推荐这种模式(您没有给出桥接模式不是一个好主意的任何理由)。就网络连接而言,虚拟机将被视为一等公民。
答案3
您在虚拟机上使用的 NIC 错误。我曾经在 Oracle virtualbox 上的 ubuntu 12.04 上运行 xp/7/8,没有任何问题。不要使用 nat host only 类型的 NIC。使用在网络上为您提供物理地址的选项,这样您就可以单次跳转到网关。