3vo // notes

A small note on IPv6 ULAs and the good life

RFC 4193 gives you, free of charge, a forty-bit random prefix in fc00::/7 that nobody else on Earth will ever use. You generate it once, you write it down somewhere you will not lose it, and you move on with your life. The first time I did this I felt vaguely guilty, like I was getting away with something. Years later I have come to think of ULAs as the most quietly civilised feature of IPv6.

The official recipe — take the current EUI-64 of an interface, fold in an NTP timestamp, hash with SHA-1, keep the bottom forty bits — is fine, but I have never met anyone who actually runs it. Most people open /dev/urandom, grab five bytes, and call it a day. The probability of collision with the next person doing the same is somewhere around one in a trillion. I will take those odds.

$ head -c 5 /dev/urandom | xxd -p
b1d36f0a47

→ prefix: fdb1:d36f:0a47::/48

Once you have your prefix, every device in your house can have a stable address that does not change when your ISP renumbers you. DHCPv6 reservations work. DNS works. SSH config works. The router can lose its lease on the global prefix at three in the morning and your Prometheus server still scrapes the printer at fdb1:d36f:a47:1::5 without complaint. There is something deeply satisfying about a network whose internal topology survives the outside world having a bad day.

The objection I sometimes hear is that ULAs are not routable on the public internet, which is true, and entirely the point. The whole reason RFC 1918 was a quiet success in the IPv4 era is that it admitted that most addresses do not need to be globally reachable. ULAs do the same for IPv6, without the NAT.

There is a related pleasure: writing the prefix on a sticky note and leaving it next to your router. A real, physical sticky note. The address space is yours forever and has nothing to do with any contract you have signed. You can take it with you when you move. You can give it to your future self, who will read this note in five years and be grateful that 2026-you wrote down what the bytes meant.

That, I think, is the good life. Not enormous prefixes, not BGP, not announcing your own /48 to the world. Just five random bytes, written carefully, and a network that quietly does what you told it to.