freebsd ipv6-only virtualbox


FreeBSD supports IPv6/IPv4 dual stack since March 2000 when the KAME stack was merged into the 4.0 release. I have done some experimenting with v6-only jails in FreeBSD and I thought it would be time to try installing a new base FreeBSD system without knowledge of the »old« IPv4 world.

With FreeBSD's recent 20th anniversary I, again, came to regret that I am not using FreeBSD on my desktop productivity workstation anymore. Since it had indeed been some time (2007'ish I think) I thought I might as well add a long-time component to that experiment, getting a feel for the end-user experience of IPv6-only networking while I use the newly installed system to Get Things Done™.

Network Environment and Setup

I didn't install the system on bare metal hardware but used Virtualbox to host a VM (the host system was Mac OS X 10.7 »Lion«). The install media, FreeBSD-9.1-RELEASE-amd64-bootonly.iso, was downloaded with the host system from a IPv6-enabled mirror site.

My router was a AVM Fritz!Box 7270 (FW v74.05.50) with 6to4 tunneling and router advertisement enabled (in fact, the Fritz!Box seems to be using DHCPv6 but SLAAC works, too).

Bjoern A. Zeeb gave a talk at EuroBSDcon 2011 about FreeBSD and the World IPv6 Day 2011, detailing that they used a custom kernel without AF_INET (ie. v4) configured. I didn't go that route and decided to just omit v4 configuration. However, my system will still maintain a lo0 device and thus the term »IPv6-only« is technically not correct. Yet, let me stick with it for the rest of the article.

Virtualbox and Bridged Wifi Networking

Booting FreeBSD, not configuring IPv4 when prompted, getting a v6 address, a default router and a nameserver via SLAAC went easy enough. I chose a IPv6 enabled FTP server from the list (see below for more on v6 mirrors).

Problems would arise as soon as bsdinstall(8) tried to connect to the network: it would simply time out and complain about not being able to resolve whatever FTP-server I chose from the list, yet I knew that my router's DNS resolver wasn't misbehaving and was well available via v6.

A tcpdump on the host system revealed lots of unanswered ICMP6 neighbor solicitation request. Exiting the installer and going to the shell, I realised I couldn't ping anything but the globally unique address of the host system, eventually raising suspicions that it might have something to do with the virtual network layer: indeed, there is a ticket in Virtualbox that has been open for four years already, describing that IPv6 via bridged wifi networking is currently not working on Linux and Mac OS X.

Installation … at last

After that hour-long intermezzo and having plugged in a cable, installation worked like a bliss. Well, almost: my Fritz!Box DNS resolver still wouldn't resolve names and so I ended up pointing the system to Google's public DNS at 2001:4860:4860::8888.

Another word on DNS: out of the 9 listed IPv6 enabled mirrors, two couldn't be reached (that's 22%). One didn't even have an AAAA address, the other closed the connection immediately (might have been a temporary issue, though). There are more IPv6 enabled mirror sites than documented: I ended up using which isn't shown as being v6-enabled in the bsdinstaller overview.

Conclusion: Success

The virtualbox issue sure was a damper. Not only did it cost me two hours to isolate the problem. It also means I won't be able to use the installed system with wifi networking on the host system (which is what I normally use).

Still, it is safe to say that the IPv6-only net-installation of FreeBSD 9.1 was successful.

comments powered by Disqus