Re: IPv6 prefix management
Geoff Steckel <[email protected]> Thu, 11 Jun 2026 16:17:43 -0400
| Newsgroups | gmane.os.openbsd.misc |
|---|---|
| Message-ID | <[email protected]> |
On 6/11/26 5:07 AM, Stuart Henderson wrote: > On 2026-06-10, Geoff Steckel<[email protected]> wrote: >> I have systems where I want to assign permanent host parts (lower 64 bits) >> with ifconfig or hostname.xxx >> My upstream provider occasionally renumbers my network. >> >> Is there any combination of utilities/configurations which will >> monitor prefix information handed down from a router >> update interface prefix(es) -only- >> >> RTFM pointers appreciated as always. >> thanks >> geoff steckel > if you don't mind _what_ the lower 64 bits are, as long as they're > consistent over time, just turn off temporary addresses.. I do care what the lower 64 bits are for the global address. (messy reasons). > if you want to specify them, I'm pretty sure you'll need DHCPv6, which > is more of a pain to configure, as the default on most client devices is > to use some form of SLAAC (either the original form based on MAC, or > temporary addresses, or SOII) - there is no support for this in OpenBSD > base (only for DHCPv6-PD, which is different, as a client; nothing for > aerver side). > > you know you can have multiple prefixes advertised on a network? so you > can have a ULA (pick your own from fc00::/7) and a globally routable > (i.e. from your ISP) - then you'll have a stable address (all bits) > for local connections. (or you can manually configure ULA on machines > but also run autoconf for a globally routable address). DHCP6 and SLAAC seem to fight. ULAs? (see below). Right now I run dhcp6leased(8). It always assigns ::1 to the router interface. When I notice IPv6 doesn't work I poke dhcp6leased then manually reconfigure the rest of the router and all the clients Superficial scanning of slaacd(8) code suggests setting -soii and -temporary then autoconf6on an interface after dhcp6leased finishes negotiating might preserve low order bits. It's a surprise. I'll set up spare systems and try this. I saw comments about "64 bits of host address". That could cause problems with a /56. I didn't look to see what it would do if it found addresses e.g. ULA already configured. dhcp6leased(8) doesn't set a default IPv6 route using my configuration. Manually setting a default route works. I can investigate further if anyone asks (verbose logging etc.) I'll scan the source but I don't know if I'll see anything useful. Handling global configuration changes automatically when an IPv6 prefix changes is a separate problem. A grotesque solution would be to wrap tcpdump(8) to monitor RA messages or read route(9) to trigger a monstrous script. ULAs seem to cause source address choice to do unexpected things. Host with global & local addresses sending to a local address: Source address used is global. Perhaps harmless? Perhaps a configuration error on my part? An issue to investigate. I use link level addresses for local servers (hack). thanks, geoff steckel Configuration: router:$ cat /etc/dhcp6leased.conf request prefix delegation on cnmac2 for { cnmac0/56 } router:$ cat /etc/hostname.cnmac0 inet 192.168.x.x 255.255.255.0 inet alias 192.168.y.x 255.255.255.0 inet alias 192.168.z.x 255.255.255.0 up inet6 up router:$ cat /etc/hostname.cnmac2 group extern inet6 up dhcp grep dhcp6leased /etc/rc.conf.local dhcp6leased_flags= router:$ ifconfig cnmac0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr f0:xx:e7 index 1 priority 0 llprio 3 media: Ethernet autoselect (1000baseT full-duplex) status: active inet 192.168.x.x netmask 0xffffff00 broadcast 192.168.2.255 inet6 fe80::fxxx:9ee7%cnmac0 prefixlen 64 scopeid 0x1 inet6 2xxx:xxxx:xxxx::1 prefixlen 56 pltime 4655 vltime 4655 cnmac1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr f0:xx:e8 index 2 priority 0 llprio 3 media: Ethernet autoselect (none) status: no carrier cnmac2: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500 lladdr f0:xx:e9 index 3 priority 0 llprio 3 groups: extern egress media: Ethernet autoselect (1000baseT full-duplex,master) status: active inet6 fe80:::xxxx;cnmac2 prefixlen 64 scopeid 0x3 inet x.x.x.x netmask 0xffffff00 broadcast x.x.x.255