Linode: IPv6 Pools on FreeBSD
Well, we abandoned the Slackware experiment, and I started configuring a de-systemd’d Debian installation, when my co-admin Avi admitted defeat: “I’d rather you used FreeBSD than Debian if you can’t run Slackware”. We went back and forth about how Slackware was a “man’s distro”, and how “real men” don’t need dependency tracking and somesuch, but my objective in this is to lower the administrative burden (Debian was pretty low to start with) so I just installed FreeBSD, because it’s what I know (it’s worth noting that around the time of making this decision, I upgraded my own IRC box, and everything on it, from 10.3 to 11.0 with nary a hitch - I had some minor downtime because I upgraded PostgreSQL and forgot how to do it, and also got bit by a bug in DigitialOcean’s networking scripts).
Everything was going swimmingly, barring a few hangups like Atheme services seemingly no longer supporting Hybrid IRCd in the upgraded version (looks like it’s been a while, whoops!). I swapped the IPs over, and discovered that the IPv6 wouldn’t go with it. Filed a ticket and found out that no, auto-configured IPv6 couldn’t be transferred, even by support. Damn it. Oh well, we hardly use that, I don’t even think there are any AAAA records, so not much of a workload to change it around.
They suggested they assign me a /116 pool, that I could route between my Linodes in the same DC as I see fit. That sounds like exactly what I want, so we pulled the trigger. I set it up by loosely translating Linode’s documentation for several Linux distros to FreeBSD, and… nothing. Couldn’t route packets either direction. Upon inspection, I note that it’s trying to route the packets via
fe80::1, which is only bound to localhost. IPv6 is mostly voodoo to me, but I don’t see that working.
Configured the interface to accept router solicitations, started rtsold and watched, turns out I need to specify the interface on the router on FreeBSD, so the magic source in
ifconfig_vtnet0_ipv6="inet6 2600::1/116" ipv6_defaultrouter="fe80::1%vtnet0"
2600::1/116 with your IPv6 address and prefixlen)
After a reboot, everything came up and functioned correctly.
Update: Functioned correctly for a few hours anyway. I clearly need to hit some books on IPv6 - it seems like
rtsold advertised my VM to the router, and when I killed it, that advertisement expired.
rtsold appears to have to continue running? I’ll have to investigate further.