-
Notifications
You must be signed in to change notification settings - Fork 4
Description
My ISP did maintenance today. That essentially broke internal communication in my homenet. I'll try to explain what happened below.
Background: My ISP provides native dual-stack. So normally, a host is assigned with a total of four addresses (ignoring link-locals and privacy extensions):
- An DHCPv6 IA_NA-assigned address from the ISP prefix (let's assume 2001:db8::547)
- A SLAAC-assigned address from the ISP prefix
- A SLAAC-assigned ULA address
- A private IPv4 address out of 10.0.0.0/8
In the normal situation, the host's host.port1.rtr1.home. name resolves to two of the above (1 and 4).
However, when the uplink to the ISP goes away, things start happening. The ISP-assigned IPv6 prefix is deprecated, and IPv4 stops working completely. Furthermore, the AAAA record of host.port1.rtr1.home. changes from 2001:db8::547 to an ULA address like fd00::547 - which isn't assigned to any local interface on the host at all. I assume that this address is the one the host would end up receiving if it were to restart its DHCPv6 client, but this doesn't happen automatically just because the ISP was disconnected.
This means that any attempt to contact host.port1.rtr1.home. from another host somewhere else in the homenet ends up failing while the ISP link is down.
I assume avoiding this situation is precisely the reason why ULAs are used in the first place. However, I think that in order for this to actually work, the IA_NA handed out by the DHCPv6 server probably needs to be from the ULA prefix even though the ISP connection is up, so that it will continue working after an ISP is down.