Alternative-DNS fallback is one-way: resolved sticks on the second server #95
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found live while verifying #34's recipe. systemd-resolved switches away from a failed server but never returns while the substitute keeps answering — and re-applying an identical server list (which set_dns does on every reconnect) does not reset its selection, only a changed list does.
Observed twice in one afternoon: a ping-restart reconnect blipped queries to the primary for about a second, resolved rotated to the fallback, and the system silently served public answers for split-horizon names from then on. The user-visible failure is nasty precisely because nothing looks broken — e.g. LAN Jellyfin resolves to its public address and streams transcode over the WAN for no apparent reason, with no obvious way to notice or fix it.
For a primary/fallback pair the second slot must be a true fallback: used while the primary is down, abandoned as soon as it answers again.
Fix shape:
CurrentDNSServer— no text parsing), and when it is not the primary, probe the primary directly with one UDP query; if it answers, force re-selection (set the primary alone, then the pair) and flush caches so the fallback's answers don't linger. Bounded staleness of one check interval instead of forever.--strict-orderfor the bypass dnsmasq, which otherwise has its own favour-the-working-server stickiness.