Windows Guest VM no internet on Ubuntu KVM host

kvm-virtualizationnetworkingUbuntuvirtual-machineswindows

I installed Windows 7 as a guest in KVM running on Ubuntu 12. Windows seems to be running fine with the exception that it can't access any external domains or IPs.

The guest can ping the host's IP and the host can ping the guest's IP, but that's it.

I used the default NAT setup, which others have reported should work. What can I do to fix this?

Edit: I also have VirtualBox running on the same host, also running a Windows VM, and it's internet works just fine.

Edit: The Ubuntu host's routing table:

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

The virbr0 is some old bridge leftover from when I tried setting up bridging in Virtualbox, but it's no longer used since Virtualbox works find with NAT. I did try using it with KVM, but had no success.

Best Answer

After some discussion on the oftc-channel #virt, @laine pointed me to the solution.

Apparently, the resolv.conf file is missing on ubuntu 12.04 (at least on my installation of linux mint 13). It is replaced by some resolvconf directory tree.

To enable internet on the guests: I had to

  1. sudo iptables --flush => on the host, might be obsolete, I don't know that. It cleared some rules.
  2. add "nameserver8.8.8.8" to /etc/resolv.conf
  3. reboot

After that, it worked

EDIT: note that step 2 was also performed on the host. I think it was linux mint (ubuntu 12.04), which was missing the /etc/resolv.conf file.