IPv6: announce only ULA prefix to clients

Currently I'm on a ISP without native IPv6 connectivity. I have a tunnel running with a static /48 prefix, which I manually configure on the few Linux clients, which need global IPv6 connectivity.

However I don't want to have this prefix announced via SLAAC or DHCPv6, as it messes up CDN routing and generally lowers the QoS due to IPv6 being preferred over IPv4 and everything ending up in the tunnel. This isn't relevant to the few IPv6 Linux clients, but for everything else.

Currently I simply turn of SLAAC and DHCPv6 on my OpenWrt router, but this way my LAN completely loses IPv6 (except link-local addresses). The only workaround is having another OpenWrt machine announce the ULA prefix on its own, but this comes with another bunch of issues.

So I'm looking for a way to have my OpenWrt gateway announce only its ULA prefix as if it is without IPv6 WAN connectivity (which is kinda true with only a tunnel), while still routing the public prefix for clients, which know it and use it on their own.

I'm not looking for stopgap measure, even when I get back to Native DualStack long term I'm still looking for a way to keep the static tunnel prefix unannounced but routed for use by special clients and only announce the dynamic prefix assigned to wan6 for general use.

Read about ip6class "Define the IPv6 prefix-classes this interface will accept".


1 Like

Doesn't work. While ip6class allows assigning specific prefixes to specific logical interfaces, enabling RA announces all public and private prefixes it can find on a certain physical interface.

I just tried it and if you set

uci set network.INTERFACE.ip6class=local
uci commit

Only the ULA prefix is announced in the RA.
If it doesn't work for you you can switch off the SLAAC and DHCP6 and use static only for the hosts that need ipv6.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.