

In IPv6, a /64 is only supposed to be used for a single subnet. If you have a subnet smaller than /64, things will break. SLAAC needs a /64, which means Android phones for example can’t use IPv6 on a subnet smaller than /64.
/64 might seem huge but that’s just how IPv6 works. The entire 64-bit host ID is used for encoding MAC addresses into the IP address, or creating randomized privacy addresses. It needs to be huge so that it can do that statelessly.
Editing the systemd services seems a neat solution here. Rather than editing the package-provided service files directly, you can create overrides using
systemctl edit
.Another more hacky option would be to use the PostUp directive but account for the case there’s no tailscale0 device yet. Write a simple shell script or something.