How to access hosts with ULA in a different subnet?

Upon first boot OpenWrt generates a random ULA /48 prefix. I distribute portions of that prefix to downstream interfaces. Local hosts configure themselves using SLAAC.

Assume that I have 2 subnets:

  • fd00:aaaa:bbbb:1::/64, with the router being fd00:aaaa:bbbb:1::1/64 and my computer being fd00:aaaa:bbbb:1::2/64
  • fd00:aaaa:bbbb:2::/64, with the router being fd00:aaaa:bbbb:2::1/64 and another computer being fd00:aaaa:bbbb:2::2/64

I just realize that I am not able to access the other computer from my computer, because my computer does not have a default gateway for IPv6. It does not know which router has access to subnet fd00:aaaa:bbbb:2::/64.

Manually configuring static routes on my computer is not an option. How do I configure the OpenWrt router to allow internal network access? I do not know how hosts behave if I set the OpenWrt router as gateway -- I cannot guarantee that I have IPv6 Internet access, and internal hosts may try to access the Internet using IPv6 (because they now have a gateway) and fail.

  • Why doesn't it have a default gateway?
  • Can we see your configs?
cat /etc/config/network
cat /etc/config/dhcp

As long as the firewall is set to allow Forwarding between zone, this should work by default

Can you dump the routing table on "my computer"? I think it should contain a route to fd00:aaaa:bbbb::/48 via your router that's received on RA. Maybe it's missing.

On Linux you can dump all default IPv6 and ULA routes with:

ip -6 r|grep -e "^\(default\|fd\)"

This is mitigated by Happy Eyeballs. In a nutshell, clients simultaneously try both IPv4 and IPv6 addresses, then use the one that answers first. Both Firefox and Chrome implement Happy Eyeballs. The command line tool curl also implement it.

Most endpoint OS do not consider having only a ULA as being connected to the v6 Internet. They insist on holding a GUA to originate an IPv6 Internet request.

As for the original question, the last router connected to an endpoint should advertise itself as the gateway to at least the entire ULA /48 (if not the whole Internet, which is technically correct but seldom works in practice as I said above). When a request for a subnet of that /48 not held on one of its LANs comes in, the router will use a static route to direct it to the next router toward the destination, just as IPv4 works.