mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-18 02:48:40 +00:00
![Jonathan Nobels](/assets/img/avatar_default.png)
Update tailscale/corp#20677 While hunting down DNS issues, it was observed that on apple platforms, w attempt to rebind to interfaces before they're completely configured by the system. The AF_ROUTE messages aren't lying, they're just not taking into account other setup that has to happen, notably the system setting the interface nameservers. When we react based on the route updates, it's often too quickly. This happens frequently on wakes-from-sleep. This replumbs netmon so that (optionally) rather than reacting to every system message by checking for interesting changes, we use that only to update our state, and recheck for interesting network changes when we get a poke from the upper layers indicating that a network change has 'completed'. Notably on Apple, NWPathMonitor seems to call us back at the correct time(s) to check for potentially interesting interface changes that have been observed via AF_ROUTE and to react to them. This seems to reduce thrashing during network transitions, and avoids some of the bad states we were previously ending up in. This is entirely opt in during the construction of the netmon and will have no effect until/unless a specific client chooses to use it. Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>