I’m running some sort of an experimental KVM guest with IPv6 connectivity only. Since it still had Ubuntu Server 13.10 installed I tried to run a
do-release-upgrade on it to upgrade it to the latest Ubuntu Server release – which at the time of this writing is 14.10. However, the
do-release-upgrade command kept saying that no new release could be found:
root@ipv6lab:~# do-release-upgrade Checking for a new Ubuntu release No new release found
I verified the
/etc/update-manager/release-upgrades configuration file but it already contained the
Prompt=normal line. After doing some digging I found out that the
do-release-upgrade tries to connect to http://changelogs.ubuntu.com but there is no AAAA DNS record for this host. Essentially, this means that an Ubuntu server can’t be upgraded to a newer release over IPv6 because it can’t connect to the update info site over IPv6.
root@ipv6lab:~# dig +short changelogs.ubuntu.com A 126.96.36.199 root@ipv6lab:~# dig +short changelogs.ubuntu.com AAAA root@ipv6lab:~#
Interestingly, the Ubuntu APT repository update site is accessible over IPv6, which is why something like
apt-get update runs fine on IPv6-only Ubuntu servers.
I solved the problem by creating an IPv6 to IPv4 HTTP proxy using HAProxy on a IPv4/IPv6 dual stack server. The proxy listens on an IPv6 address and “tunnels” all requests to changelogs.ubuntu.com using the IPv4 address of the changelogs server. I was able to upgrade to a newer Ubuntu release this way on an IPv6-only Ubuntu server. Continue reading