<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[How do people handle authoritative DNS redundancy for their self-hosted workloads?]]></title><description><![CDATA[<p dir="auto">I'll just provide my own example: my homelab consists of 6 Kubernetes nodes placed across the country. Some differ by ISP, some are placed in different cities, one is hosted on a cloud provider. Basically it's a very cheap variant of geo-replicating my workloads.</p>
<p dir="auto">Two of these nodes are visible from the Internet and have a static IP address; one node also has an IPv6 address. Each node hosts an authoritative DNS server (CoreDNS) for my personal domain pootis.network; and the <code>.network</code> TLD has glue records which point to IPs of these two nodes. This is a classic "self-hosted DNS" scenario.</p>
<p dir="auto">Here's an excerpt from my zonefile so you can understand the setup better:</p>
<pre><code>$ORIGIN pootis.network.
$TTL 300

@       SOA     ns1.pootis.network. admin.pootis.network. (
  2026082001
  1200
  300
  1209600
  300
)

; Nameservers and glue records
@       NS      ns1.pootis.network.
@       NS      ns2.pootis.network.
ns1     A       178.44.116.85
ns2     A       91.219.150.30
ns2     AAAA    2a06:dd00:1:4::4189
</code></pre>
<p dir="auto">This 5-record block (NS/A/AAAA) is mirrored into the <code>.network</code> zone by my domain registrar (plus DS for DNSSEC but that's another thing).</p>
<p dir="auto">As such, my DNS becomes fully independent - and, in theory, if one of my externally-facing nodes breaks, let's say <code>ns1</code>, then DNS resolvers all over the world (forwarders, recursive, and such) will fall back to <code>ns2</code>, and everything will keep working. Kubernetes will also reorganize the pod placement so all my workloads are available again after a slight downtime.</p>
<p dir="auto">That would have been great, if it worked as described, but apparently, after one nameserver in my zone fails, then the resolvers... just give up? Let's say <code>ns1</code> failed but <code>ns2</code> is working. The parent zone still points to both nameservers. My external resource records (websites and other stuff) at this point would have already been auto-reconfigured by a custom k8s controller to point to the IP addresses of the node that hosts <code>ns2</code>. Simplifying: the entire world basically sees this after <code>ns1</code> fails and after TTL caches expire:</p>
<pre><code>; all of this has very low TTL, 5 minutes or so

@       NS      ns1.pootis.network. ; from .network 
@       NS      ns2.pootis.network. ; from .network

ns1     A       178.44.116.85 ; broken. Either from .network glue or from my auth DNS
ns2     A       91.219.150.30 ; either from .network glue or from my auth DNS
ns2     AAAA    2a06:dd00:1:4::4189 ; same

; my-website     A       178.44.116.85 ; does not appear because ns1 is broken- my LB already removed it from the set
my-website     A       91.219.150.30 ; fronted by a pair of CNAMEs due to loadbalancing but still
my-website     AAAA    2a06:dd00:1:4::4189 ; same
</code></pre>
<p dir="auto">But even if I query 1.1.1.1 directly for <code>my-website</code>'s record, it just doesn't work most of the time because the resolver pins itself to <code>ns1</code> which is currently failing, or it selects <code>ns1</code> and does not even care to try <code>ns2</code>.</p>
<p dir="auto">To be precise: some resolver implementations DO fall back to <code>ns2</code> as expected, but most of them just pin themselves to <code>ns1</code> and then outright refuse to resolve the records in my zone.</p>
<p dir="auto">And there's actually no reasonable way out, as far as I can see:</p>
<ul>
<li>moving my DNS infra somewhere else (CloudFlare, for example) is unacceptable since I would like for my homelab to be as independent as practically possible;</li>
<li>anycasting, or running a fully-fledged BGP AS is also impossible because that costs a lot of money and I'd like for my homelab to fit into a $10/month budget with room to spare;</li>
<li>"live-patching" the NS and glue records in the parent zone (<code>.network</code>), to keep up with the set of my working nodes, is possible, but very unwieldy and somewhat hard to accomplish.</li>
</ul>
<p dir="auto">There's a lot of custom machinery that keeps my workloads running and accessible after a node failure, but all of this becomes completely moot when authoritative DNS is the bottleneck.</p>
<p dir="auto">Has anyone been running a similar stack and encountered this problem? I'm aware that the answer is usually "host your DNS at CloudFlare" or "use the registrar's DNS infra" but still...</p>
]]></description><link>https://forum.ieu.app/topic/fdea8aae-90a7-4a4d-9c7d-b65aabf03389/how-do-people-handle-authoritative-dns-redundancy-for-their-self-hosted-workloads</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 20:11:25 GMT</lastBuildDate><atom:link href="https://forum.ieu.app/topic/fdea8aae-90a7-4a4d-9c7d-b65aabf03389.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Sep 2026 11:04:59 GMT</pubDate><ttl>60</ttl></channel></rss>