Warum Ubuntu immer schlechter wird
Ich habe hier IPv6 auf Vodafone zum laufen gebracht und wollte mal schnell was in einer Lubuntu 16.04.3 VM testen (noch nicht auf dem neuen Server, da fehlt immernoch das RAM). Dabei fiel mir auf, dass folgendes Kommando funktioniert:
dig -6 heise.de a @2a02:810c:c83f:d6f0:20d:b9ff:fe45:ce7a
aber dieses nicht:
dig -6 heise.de a
Das war sehr verwunderlich, da "2a02:810c:c83f:d6f0:20d:b9ff:fe45:ce7a" mein lokaler Nameserver ist und dieser Ubuntu auch bekannt ist.
Das Kommando versucht den A Record für heise.de zu resolven. "-6" gibt an, dass es dazu nur IPv6 benutzen soll. "@IP" gibt an, dass eben dieser Nameserver gefragt werden soll.
Dass der Nameserver dem System wirklich bekannt ist, weiß ich durch folgendes Kommando:
nmcli -t device show enp0s3 | grep IP6.DNS
Die Ausgabe davon ist:
IP6.DNS[1]:2a02:810c:c83f:d6f0:20d:b9ff:fe45:ce7a
Das passt also.
Warum funktioniert es dann nicht?
Ganz einfach, die Spezialexperten von Ubuntu konnten natürlich nicht einfach die ermittelten Nameserver nach /etc/resolv.conf schreiben, sondern mussten das abstrahieren. In /etc/resolv.conf steht jetzt nur noch "nameserver 127.0.1.1" was eine Localhost Addresse ist. Und auf Localhost lauscht dieser Prozess hier:
cbubel@lubuntu-vm:~$ sudo netstat -tulpn | grep 53
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 919/dnsmasq
udp 0 0 127.0.1.1:53 0.0.0.0:* 919/dnsmasq
Und damit hätten wir auch schon das Problem gefunden.
Natürlich kann dig nicht IPv6 benutzen, wenn der verdammte dnsmasq nur auf dem IPv4 Localhost lauscht. Damit das funktioniert müsste noch ein ::1/128 in die resolv.conf und dnsmasq müsste natürlich auch darauf hören. Einfach mal ne Config ändern reicht hier nicht, da muss man erstmal die Config anlegen, da das alles hard gecoded ist. Wers nicht glaubt, möge mal die Stelle suchen, an der dnsmasq gesagt wird, dass er auf localhost hören soll.
Ob das Problem auch in 17.04 besteht, weiß ich nicht. Aber schlimm genug, dass es keinem im LTS aufgefallen ist.
Update: Ja auch 17.04 ist kaputt, etwas anders zwar, aber kaputt. Dnsmasq scheint durch systemd ersetzt worden zu sein, aber da bin ich mir nicht absolut sicher.