I'm looking for a tool, very much like rdisc6, that will, having received the RA, will configure the v6 address(es) on an interface using a static IID. This is a server that needs to be at a known address within a ULA. (No, I can't use mDNS and SLAAC, as there are certificates bound to names involved, and mDNS may not even work until this interface is configured).
If I have to, I'll extend rdisc6, but I'm hoping not to replicate something someone already did.
This will be running on Linux (armv7) inside an LXC container.
You should be able to use an IPv6 token for this. The IPv6 token is a manually set IID which remains the same regardless of the IPv6 prefix assigned via SLAAC. Use of IPv6 tokens requires SLAAC.
You can configure the token persistently by setting interface properties in NetworkManager.
Now with a subnet prefix of
2001:db8:dead:beef::/64
the interface will have the IPv6 address2001:db8:dead:beef:deca:fbad:c0:ffee
.To remove the token, set it to an empty value. You can then reset the addr-gen-mode to its default.
With systemd-networkd, set the
IPv6Token=
property in the[Network]
section of your configuration.You can also run the
ip token
command manually. For use in configuring a container, this is probably what you will end up doing.If you need multiple IIDs on a single interface, then you're going to have to set them up manually. Nothing else will help you.
The key to using "ip token" turned out that the interface has to be down.