qemu-system-x86_64: ipv6 and dns is broken with netdev user
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Expired
|
Undecided
|
Unassigned |
Bug Description
Hi,
dhcp inside qemu returns an ipv6 address as dns-server. However this is not
working. If i replace it with the ipv4 address '10.0.0.2' dns is working
again. I would expect that the qemu emulated dhcp server responds either an
ipv4 configuration that is working or its dns server/forwarder listens on the
ipv6 address returned by the emulated dhcp server.
I used latest qemu from git ( b0bcc86d2a87456
$ ./qemu-
virtio-
-no-reboot -netdev user,id=
-m 1024 -usb -nographic -smp 4
buildenv.img is a debian jessie amd64 installation.
Inside qemu the network is configured to use dhcp:
$ cat /etc/network/
allow-hotplug eth0
iface eth0 inet dhcp
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::5054:
inet6 addr: fec0::5054:
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:3215 (3.1 KiB) TX bytes:3638 (3.5 KiB)
$ cat /etc/resolv.conf
nameserver fec0::3
$ arp google.de
google.de: Host name lookup failure
$ strace -f arp google.de
...
socket(PF_INET6, SOCK_DGRAM|
connect(4, {sa_family=
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
sendto(4, "\17\320\
poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout)
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
sendto(4, "\17\320\
poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout)
close(4) = 0
...
$ echo nameserver 10.0.0.2 > /etc/resolv.conf
$ arp google.de
google.de (216.58.208.35) -- no entry
Note: I reported this bug also to debian: https:/
Regards,
Manuel
I have a similar issue with qemu 2.7 from current Debian amd64 unstable/sid. Starting qemu with:
kvm -m 640 -hda debian- 8-amd64. qcow2 -net nic,model=rtl8139 -net user,hostfwd= tcp:127. 0.0.1:5005- :22
I tested DNS resolution in the host and in the guest.
The conclusions are:
When the host's /etc/resolv.conf has, as the only line, a ipv6 nameserver like fd2d:[...]::1 or a ipv6 link-local address with a scope like fe80::[...]%wlan0 then:
In the host, DNS resolution works ok in Debian sid. In Debian 8 'host' and 'dig' fail in the case of link-local address and work otherwise, and 'ping' works anyway.
In the guest, DNS resolution does not work at all (but access to IPv4 addresses directly works).
In this case there is not global ipv6 connectivity, but some combinations of routers and network managers in the host lead to /etc/resolv.conf with only nameserver line a ipv6 or ipv6 link-local with scope address. This breaks DNS resolution in the guests. In this same configuration VirtualBox works ok.
An old (2007) patch from glibc for the ipv6 link-local with scope case is at:
https:/ /sourceware. org/bugzilla/ show_bug. cgi?id= 5475