Add fallback DNS resolvers to all nodes
All nodes now list 1.1.1.1 and 8.8.8.8 as fallback nameservers after MCNS. When MCNS is down, internal names (.svc.mcp.metacircular.net) fail but external DNS (google.com, github.com, etc.) keeps working. Lesson from 2026-04-03 incident: without fallbacks, MCNS failure caused total DNS blackout including external services, forcing Tailscale to be disabled to restore any DNS resolution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,8 +17,8 @@
|
|||||||
networking.firewall.allowedTCPPorts = [ 53 443 8443 9443 8080 9090 ];
|
networking.firewall.allowedTCPPorts = [ 53 443 8443 9443 8080 9090 ];
|
||||||
networking.firewall.allowedUDPPorts = [ 53 ];
|
networking.firewall.allowedUDPPorts = [ 53 ];
|
||||||
|
|
||||||
# Route internal Metacircular zones to rift's own CoreDNS.
|
# DNS: MCNS for internal zones, public resolvers as fallback.
|
||||||
networking.nameservers = [ "192.168.88.181" "100.95.252.120" ];
|
networking.nameservers = [ "192.168.88.181" "100.95.252.120" "1.1.1.1" "8.8.8.8" ];
|
||||||
services.resolved.domains = [ "~mcp.metacircular.net" ];
|
services.resolved.domains = [ "~mcp.metacircular.net" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
networking.firewall.allowedTCPPorts = [ 53 443 8443 9443 8080 9090 ];
|
networking.firewall.allowedTCPPorts = [ 53 443 8443 9443 8080 9090 ];
|
||||||
networking.firewall.allowedUDPPorts = [ 53 ];
|
networking.firewall.allowedUDPPorts = [ 53 ];
|
||||||
|
|
||||||
# Route internal Metacircular zones to rift's own CoreDNS.
|
# DNS: MCNS for internal zones, public resolvers as fallback.
|
||||||
networking.nameservers = [ "192.168.88.181" ];
|
networking.nameservers = [ "192.168.88.181" "1.1.1.1" "8.8.8.8" ];
|
||||||
services.resolved.domains = [ "~mcp.metacircular.net" ];
|
services.resolved.domains = [ "~mcp.metacircular.net" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,12 +7,12 @@
|
|||||||
../../configs/mcpkg.nix
|
../../configs/mcpkg.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Route internal Metacircular zones to rift's CoreDNS (MCNS precursor).
|
# DNS: MCNS for internal zones, public resolvers as fallback.
|
||||||
# Uses systemd-resolved domain routing so rift handles only *.mcp.metacircular.net
|
|
||||||
# while DHCP/Tailscale DNS handles everything else.
|
|
||||||
networking.nameservers = [
|
networking.nameservers = [
|
||||||
"192.168.88.181"
|
"192.168.88.181"
|
||||||
"100.95.252.120"
|
"100.95.252.120"
|
||||||
|
"1.1.1.1"
|
||||||
|
"8.8.8.8"
|
||||||
];
|
];
|
||||||
services.resolved.domains = [
|
services.resolved.domains = [
|
||||||
"~mcp.metacircular.net"
|
"~mcp.metacircular.net"
|
||||||
|
|||||||
@@ -44,12 +44,16 @@
|
|||||||
# which hijacks all DNS queries through systemd-resolved.
|
# which hijacks all DNS queries through systemd-resolved.
|
||||||
services.tailscale.extraUpFlags = ["--accept-dns=false"];
|
services.tailscale.extraUpFlags = ["--accept-dns=false"];
|
||||||
|
|
||||||
# Route internal Metacircular zones to rift's CoreDNS (MCNS precursor).
|
# DNS: MCNS for internal zones, public resolvers as fallback.
|
||||||
# Uses systemd-resolved domain routing so rift handles only *.mcp.metacircular.net
|
# When MCNS is down, internal names (.svc.mcp.metacircular.net) fail
|
||||||
# while DHCP/Tailscale DNS handles everything else.
|
# but external DNS keeps working via 1.1.1.1/8.8.8.8.
|
||||||
|
# Lesson from 2026-04-03 incident: without fallbacks, MCNS failure
|
||||||
|
# causes total DNS blackout including external services.
|
||||||
networking.nameservers = [
|
networking.nameservers = [
|
||||||
"192.168.88.181"
|
"192.168.88.181" # MCNS (LAN)
|
||||||
"100.95.252.120"
|
"100.95.252.120" # MCNS (Tailnet)
|
||||||
|
"1.1.1.1" # Cloudflare (fallback)
|
||||||
|
"8.8.8.8" # Google (fallback)
|
||||||
];
|
];
|
||||||
services.resolved.domains = [
|
services.resolved.domains = [
|
||||||
"~mcp.metacircular.net"
|
"~mcp.metacircular.net"
|
||||||
|
|||||||
Reference in New Issue
Block a user