<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kishore Bhavnanie</title>
    <description>The latest articles on DEV Community by Kishore Bhavnanie (@dnsassistant).</description>
    <link>https://dev.to/dnsassistant</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3927520%2F894e5f13-0658-4f7e-ab23-83770cbfe315.png</url>
      <title>DEV Community: Kishore Bhavnanie</title>
      <link>https://dev.to/dnsassistant</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dnsassistant"/>
    <language>en</language>
    <item>
      <title>DNS Rebinding and NXDOMAIN Hijacking: Two Overlooked DNS Attacks</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Fri, 19 Jun 2026 13:39:48 +0000</pubDate>
      <link>https://dev.to/dnsassistant/dns-rebinding-and-nxdomain-hijacking-two-overlooked-dns-attacks-32oc</link>
      <guid>https://dev.to/dnsassistant/dns-rebinding-and-nxdomain-hijacking-two-overlooked-dns-attacks-32oc</guid>
      <description>&lt;p&gt;Most DNS attacks people know about involve changing where a domain points: cache poisoning, hijacking, subdomain takeover. But two of the more insidious DNS attack techniques work differently. DNS rebinding turns a victim's own browser into a tool for reaching systems it should never be able to touch. NXDOMAIN hijacking exploits the moment when a domain doesn't exist, turning "not found" into an opportunity for manipulation. Neither is as widely understood as it should be, and both remain relevant threats.&lt;/p&gt;

&lt;p&gt;These attacks are worth understanding because they exploit legitimate DNS behavior rather than breaking it. They don't require compromising your nameservers or stealing credentials. They abuse the way DNS and browsers are designed to work, which makes them harder to spot and defend against.&lt;/p&gt;

&lt;p&gt;This guide explains both attacks, how they work, who they target, and what defends against them.&lt;/p&gt;





&lt;h2&gt;DNS Rebinding: Turning a Browser Against Its Own Network&lt;/h2&gt;

&lt;p&gt;DNS rebinding is an attack that lets a malicious website bypass the browser's same-origin policy to interact with devices and services on the victim's local network, the very systems a remote attacker normally can't reach.&lt;/p&gt;

&lt;h3&gt;The Problem It Exploits&lt;/h3&gt;

&lt;p&gt;Browsers enforce a same-origin policy: a script from &lt;code&gt;evil.com&lt;/code&gt; can't read responses from &lt;code&gt;yourcompany-internal.local&lt;/code&gt; or &lt;code&gt;192.168.1.1&lt;/code&gt;. This is a fundamental web security boundary. But the same-origin policy is based on the &lt;em&gt;hostname&lt;/em&gt;, not the IP address. DNS rebinding exploits the gap between the two.&lt;/p&gt;

&lt;h3&gt;How the Attack Works&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The victim visits a malicious site.&lt;/strong&gt; They load &lt;code&gt;attacker.com&lt;/code&gt;, perhaps through an ad, a link, or a compromised page. The attacker controls the DNS for this domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The first DNS response is legitimate.&lt;/strong&gt; When the browser resolves &lt;code&gt;attacker.com&lt;/code&gt;, the attacker's nameserver returns the attacker's real server IP, with a very short TTL (a few seconds). The malicious JavaScript loads and runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The attacker "rebinds" the domain.&lt;/strong&gt; After the page loads, the short TTL expires. The malicious script makes another request to &lt;code&gt;attacker.com&lt;/code&gt;. This time, the attacker's nameserver responds with a &lt;em&gt;different&lt;/em&gt; IP, an internal address like &lt;code&gt;192.168.1.1&lt;/code&gt; (the victim's router) or &lt;code&gt;127.0.0.1&lt;/code&gt; (their own machine).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The browser now talks to the internal target.&lt;/strong&gt; As far as the browser's same-origin policy is concerned, the script is still talking to &lt;code&gt;attacker.com&lt;/code&gt;, the origin hasn't changed. But the requests now go to the internal IP. The attacker's script can now interact with the victim's router admin panel, local services, internal APIs, or IoT devices, reading responses and sending commands.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The attack effectively uses the victim's browser as a proxy into their own private network, defeating the network boundary that would normally protect those internal systems from the internet.&lt;/p&gt;

&lt;h3&gt;What DNS Rebinding Targets&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Router and gateway admin interfaces&lt;/strong&gt; (often at predictable IPs like 192.168.1.1 with default or weak credentials)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IoT and smart home devices&lt;/strong&gt; with local web interfaces and little authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internal services and APIs&lt;/strong&gt; that assume "if you can reach me, you're trusted" because they're not exposed to the internet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local development servers and admin tools&lt;/strong&gt; running on the victim's own machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core danger is that many internal services have weak or no authentication precisely because they rely on network isolation for protection. DNS rebinding breaks that isolation.&lt;/p&gt;

&lt;h3&gt;Defending Against DNS Rebinding&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNS rebinding protection in resolvers:&lt;/strong&gt; Many resolvers and DNS filtering services can block responses where an external domain resolves to a private/internal IP address. This is the most effective network-level defense. Some routers and resolvers (and tools like a configured Pi-hole or NextDNS) offer this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Host header validation:&lt;/strong&gt; Internal services should validate the &lt;code&gt;Host&lt;/code&gt; header and reject requests that don't match their expected hostname. Since the rebinding attack sends requests with the attacker's domain in the Host header, strict validation blocks them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication on internal services:&lt;/strong&gt; Never rely solely on network isolation. Internal admin panels, routers, and APIs should require authentication, so reaching them isn't enough to control them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTPS on internal services:&lt;/strong&gt; TLS certificate validation adds another barrier the attack must overcome.&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;NXDOMAIN Hijacking: Exploiting "Does Not Exist"&lt;/h2&gt;

&lt;p&gt;NXDOMAIN is the DNS response code meaning "this domain does not exist." NXDOMAIN hijacking (also called NXDOMAIN substitution or redirection) is the practice of intercepting these "does not exist" responses and replacing them with something else, usually a page the interceptor controls.&lt;/p&gt;

&lt;h3&gt;How It Works&lt;/h3&gt;

&lt;p&gt;When you type a domain that doesn't exist, you should get an NXDOMAIN response and your browser shows an error. In NXDOMAIN hijacking, an intermediary, often an ISP or a resolver, intercepts that NXDOMAIN and instead returns an IP address pointing to their own server, typically showing a search page, ads, or a "did you mean?" page.&lt;/p&gt;

&lt;p&gt;This was historically common among ISPs, who monetized typos and mistyped domains by redirecting NXDOMAIN responses to ad-laden search pages. While it might seem like a minor annoyance, it has real security implications.&lt;/p&gt;

&lt;h3&gt;Why It's a Security Problem&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It breaks the expected "does not exist" signal.&lt;/strong&gt; Applications and security tools that rely on NXDOMAIN to detect non-existent domains get a false "this exists" answer, which can mask problems or break functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It creates an injection point.&lt;/strong&gt; An intermediary substituting DNS responses is, by definition, manipulating your traffic. If that intermediary is malicious or compromised, the same mechanism used for ad redirection can be used to redirect real traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It interferes with security mechanisms.&lt;/strong&gt; Some security and anti-malware systems use NXDOMAIN responses as signals. Substituting them can blind these systems or cause false results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It can expose user behavior.&lt;/strong&gt; The intermediary sees every mistyped or non-existent domain a user queries, a privacy concern.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;NXDOMAIN and Attack Detection&lt;/h3&gt;

&lt;p&gt;There's an important defensive flip side. Monitoring NXDOMAIN patterns is actually a useful security signal. A sudden spike in NXDOMAIN responses from inside a network can indicate malware using a domain generation algorithm (DGA), where malware algorithmically generates many candidate domains to find its command-and-control server. Most generated domains don't exist (NXDOMAIN), so a flood of NXDOMAIN responses is a red flag. NXDOMAIN hijacking that masks these responses can hide this signal, which is another reason it's problematic.&lt;/p&gt;

&lt;h3&gt;Defending Against NXDOMAIN Hijacking&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use a trustworthy resolver.&lt;/strong&gt; Reputable public resolvers (and properly configured private ones) return honest NXDOMAIN responses rather than substituting them. Choosing a resolver that doesn't hijack NXDOMAIN is the first step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use encrypted DNS (DoH/DoT).&lt;/strong&gt; DNS over HTTPS and DNS over TLS prevent on-path intermediaries from seeing and modifying your DNS queries and responses, blocking the interception that NXDOMAIN hijacking relies on. We cover these in our &lt;a href="https://dnsassistant.com/blog/doh-vs-dot" rel="noopener noreferrer"&gt;DoH vs DoT guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC for your own domains.&lt;/strong&gt; While DNSSEC doesn't directly stop NXDOMAIN substitution for domains you query, it does cryptographically authenticate responses for signed domains, including authenticated denial of existence (proving a name really doesn't exist), which prevents forged NXDOMAIN-related manipulation for your zones.&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;What These Attacks Have in Common&lt;/h2&gt;

&lt;p&gt;DNS rebinding and NXDOMAIN hijacking both share a defining characteristic: they exploit DNS as a manipulation layer rather than attacking DNS records directly. They don't change your A record or compromise your nameserver. Instead, they abuse the resolution process itself, the short-TTL re-resolution in rebinding, the response substitution in NXDOMAIN hijacking.&lt;/p&gt;

&lt;p&gt;This makes them different from the attacks much of DNS security focuses on. They're a reminder that DNS security isn't only about protecting your own records from unauthorized change; it's also about the integrity of the resolution process that connects users to your domain, and the systems that process DNS responses.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Fits In&lt;/h2&gt;

&lt;p&gt;DNS Assistant focuses on monitoring the security posture of your own domains, the authoritative side of DNS. While rebinding and NXDOMAIN hijacking are primarily resolver-side and client-side attacks, strong posture on your own domains is part of the broader defense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation monitoring&lt;/strong&gt; ensures your domains are properly signed, enabling authenticated denial of existence and protecting against forged responses for your zones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record monitoring&lt;/strong&gt; ensures your legitimate records are correct and unchanged, so the authoritative answers feeding resolvers are trustworthy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous validation&lt;/strong&gt; of your DNS configuration, with alerting via email, Slack, Microsoft Teams, webhooks, and SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Defending against rebinding and NXDOMAIN hijacking primarily involves resolver choice, encrypted DNS, internal service authentication, and host-header validation, but maintaining strong DNSSEC and record integrity on your own domains is the authoritative-side contribution to a healthy DNS ecosystem.&lt;/p&gt;





&lt;h2&gt;Check Your DNS Posture&lt;/h2&gt;

&lt;p&gt;Verify your domains are properly signed with DNSSEC and your records are correct using the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt;, or run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive view including DNSSEC status.&lt;/p&gt;

&lt;p&gt;For continuous monitoring of your DNS security posture with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article describes attack techniques for educational and defensive purposes, to help you understand and protect against them. The information reflects publicly documented security research on DNS rebinding and NXDOMAIN manipulation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dns</category>
      <category>beginners</category>
      <category>learning</category>
      <category>security</category>
    </item>
    <item>
      <title>How to Read DNS Lookup Output (dig, nslookup, and What It All Means)</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Fri, 19 Jun 2026 13:13:47 +0000</pubDate>
      <link>https://dev.to/dnsassistant/how-to-read-dns-lookup-output-dig-nslookup-and-what-it-all-means-4hdp</link>
      <guid>https://dev.to/dnsassistant/how-to-read-dns-lookup-output-dig-nslookup-and-what-it-all-means-4hdp</guid>
      <description>&lt;p&gt;You run a DNS lookup, and a wall of text scrolls past: ANSWER SECTION, flags, TTLs, record types, a status code, some numbers you don't recognize. Most people glance at the IP address they were looking for and ignore the rest. But that "rest" is full of useful information: whether the answer is authoritative, how long it will be cached, whether DNSSEC validated, and clues about why something isn't resolving the way you expect.&lt;/p&gt;

&lt;p&gt;Learning to read DNS lookup output turns these tools from black boxes into precise diagnostic instruments. Whether you use &lt;code&gt;dig&lt;/code&gt; on the command line, &lt;code&gt;nslookup&lt;/code&gt;, or a web-based lookup tool, the underlying information is the same, and once you can read it, troubleshooting DNS becomes far less mysterious.&lt;/p&gt;

&lt;p&gt;This guide walks through what each part of DNS lookup output means, using &lt;code&gt;dig&lt;/code&gt; as the primary example since it's the most detailed, then covering &lt;code&gt;nslookup&lt;/code&gt; and what to look for when things go wrong.&lt;/p&gt;





&lt;h2&gt;A Complete dig Output, Annotated&lt;/h2&gt;

&lt;p&gt;Here's a typical &lt;code&gt;dig&lt;/code&gt; command and its full output. We'll break down every section.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ dig example.com A

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.1 &amp;lt;&amp;lt;&amp;gt;&amp;gt; example.com A
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 14823
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;example.com.                   IN      A

;; ANSWER SECTION:
example.com.            3600    IN      A       93.184.216.34

;; Query time: 24 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Jun 19 10:15:42 UTC 2026
;; MSG SIZE  rcvd: 56&lt;/code&gt;&lt;/pre&gt;





&lt;h2&gt;The Header Line&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 14823&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is the most important line for diagnosing problems. The key field is &lt;strong&gt;status&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NOERROR&lt;/strong&gt; means the query succeeded. (Note: NOERROR doesn't always mean you got the record you wanted, it can also mean "the name exists but has no record of this type.")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NXDOMAIN&lt;/strong&gt; means the domain name does not exist. If you see this for a domain you expect to work, the name is wrong, the domain is unregistered or expired, or there's a delegation problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SERVFAIL&lt;/strong&gt; means the server failed to complete the query. This often indicates a DNSSEC validation failure, a broken delegation, or a problem at the authoritative server. SERVFAIL is one of the most common symptoms of DNSSEC misconfiguration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REFUSED&lt;/strong&gt; means the server refused to answer, often a permissions or configuration issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;opcode: QUERY&lt;/code&gt; is the operation type (almost always QUERY), and &lt;code&gt;id&lt;/code&gt; is a transaction identifier matching the query to its response.&lt;/p&gt;





&lt;h2&gt;The Flags&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The flags tell you about the nature of the response:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;qr&lt;/strong&gt; (query response): this is a response, not a query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;aa&lt;/strong&gt; (authoritative answer): the responding server is authoritative for this domain. If you query an authoritative nameserver directly, you'll see &lt;code&gt;aa&lt;/code&gt;. If you query a recursive resolver that fetched the answer on your behalf, you won't, the answer came from cache or recursion, not from authority. This distinction matters, and we cover it fully in our &lt;a href="https://dnsassistant.com/blog/authoritative-vs-recursive-dns" rel="noopener noreferrer"&gt;authoritative vs recursive DNS guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rd&lt;/strong&gt; (recursion desired): the query asked the server to recurse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ra&lt;/strong&gt; (recursion available): the server is willing to recurse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ad&lt;/strong&gt; (authenticated data): DNSSEC validation succeeded. If you see &lt;code&gt;ad&lt;/code&gt;, the resolver cryptographically validated the answer. Its absence on a signed domain can indicate a validation problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The counts (&lt;code&gt;QUERY: 1, ANSWER: 1, ...&lt;/code&gt;) tell you how many records are in each section of the response.&lt;/p&gt;





&lt;h2&gt;The Question Section&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;;; QUESTION SECTION:
;example.com.                   IN      A&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This simply echoes back what you asked: the name (&lt;code&gt;example.com.&lt;/code&gt;), the class (&lt;code&gt;IN&lt;/code&gt; for Internet), and the record type (&lt;code&gt;A&lt;/code&gt;). It confirms the server understood your query. The trailing dot on the name indicates it's fully qualified.&lt;/p&gt;





&lt;h2&gt;The Answer Section&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;;; ANSWER SECTION:
example.com.            3600    IN      A       93.184.216.34&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is what you came for. Reading left to right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;example.com.&lt;/strong&gt; is the name that was queried.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3600&lt;/strong&gt; is the &lt;strong&gt;TTL&lt;/strong&gt; in seconds, how long this record can be cached. If you query a recursive resolver repeatedly, you'll see this number counting down as the cached entry ages, which is a handy way to tell you're getting a cached answer. We explain TTL behavior in our &lt;a href="https://dnsassistant.com/blog/dns-ttl-best-practices" rel="noopener noreferrer"&gt;TTL best practices guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IN&lt;/strong&gt; is the class (Internet).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt; is the record type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;93.184.216.34&lt;/strong&gt; is the actual data, the IP address.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a domain has multiple A records (round-robin), you'll see multiple lines here. For other record types, the data column changes accordingly: an MX record shows a priority and mail server, a TXT record shows quoted text, a CNAME shows the alias target.&lt;/p&gt;





&lt;h2&gt;The Authority and Additional Sections&lt;/h2&gt;

&lt;p&gt;When present, the &lt;strong&gt;AUTHORITY SECTION&lt;/strong&gt; lists the authoritative nameservers for the domain (NS records). The &lt;strong&gt;ADDITIONAL SECTION&lt;/strong&gt; provides extra helpful records, often the IP addresses (glue records) of the nameservers mentioned in the authority section, saving an extra lookup.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;OPT PSEUDOSECTION&lt;/strong&gt; you may see relates to EDNS (Extension Mechanisms for DNS), which enables features like larger UDP packet sizes and DNSSEC. It's not a real record, just protocol-level information.&lt;/p&gt;





&lt;h2&gt;The Footer: Timing and Server Info&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;;; Query time: 24 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Jun 19 10:15:42 UTC 2026
;; MSG SIZE  rcvd: 56&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Query time&lt;/strong&gt; is how long the lookup took. A high value can indicate a slow resolver or a distant authoritative server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SERVER&lt;/strong&gt; is which resolver answered, and the port (&lt;code&gt;53&lt;/code&gt; is standard DNS). This tells you whether you queried your local resolver, a public one, or an authoritative server directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WHEN&lt;/strong&gt; is the timestamp of the query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MSG SIZE&lt;/strong&gt; is the response size in bytes.&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;Useful dig Variations&lt;/h2&gt;

&lt;p&gt;A few common &lt;code&gt;dig&lt;/code&gt; commands and what they're for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dig example.com&lt;/code&gt;  → defaults to an A record lookup.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig example.com MX&lt;/code&gt;  → look up mail servers. Swap MX for any type (TXT, NS, SOA, CAA, AAAA).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig example.com ANY&lt;/code&gt;  → request all record types (though many servers now limit ANY responses).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig +short example.com&lt;/code&gt;  → just the answer data, no surrounding detail. Good for scripts.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig +trace example.com&lt;/code&gt;  → trace the resolution from the root servers down, showing each delegation step. Excellent for diagnosing delegation problems.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig @8.8.8.8 example.com&lt;/code&gt;  → query a specific resolver (here, Google's), useful for comparing answers across resolvers.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig +dnssec example.com&lt;/code&gt;  → request DNSSEC records, showing RRSIG signatures and the &lt;code&gt;ad&lt;/code&gt; flag if validation succeeds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;+trace&lt;/code&gt; and &lt;code&gt;@resolver&lt;/code&gt; variations are especially powerful for troubleshooting, which we cover more in our &lt;a href="https://dnsassistant.com/blog/dns-troubleshooting-guide" rel="noopener noreferrer"&gt;DNS troubleshooting guide&lt;/a&gt;.&lt;/p&gt;





&lt;h2&gt;Reading nslookup Output&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;nslookup&lt;/code&gt; is available on Windows, macOS, and Linux, and is often more familiar to Windows users. Its output is simpler but conveys similar core information:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ nslookup example.com

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   example.com
Address: 93.184.216.34&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Key things to read:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server / Address&lt;/strong&gt; at the top is the resolver that answered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-authoritative answer&lt;/strong&gt; means the response came from a recursive resolver's cache or recursion, not directly from an authoritative server. (If it were authoritative, this line would be absent.) This is the &lt;code&gt;nslookup&lt;/code&gt; equivalent of the missing &lt;code&gt;aa&lt;/code&gt; flag in &lt;code&gt;dig&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name / Address&lt;/strong&gt; is the result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;nslookup&lt;/code&gt; can also query specific types (&lt;code&gt;nslookup -type=MX example.com&lt;/code&gt;) and specific servers (&lt;code&gt;nslookup example.com 8.8.8.8&lt;/code&gt;), similar to &lt;code&gt;dig&lt;/code&gt;. While &lt;code&gt;dig&lt;/code&gt; gives more detail, &lt;code&gt;nslookup&lt;/code&gt; is perfectly capable for everyday checks.&lt;/p&gt;





&lt;h2&gt;Diagnosing Common Problems From the Output&lt;/h2&gt;

&lt;p&gt;Here's how to read the output when something is wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;status: NXDOMAIN&lt;/strong&gt;: the name doesn't exist. Check for typos, verify the domain is registered and not expired, and confirm the delegation is correct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;status: SERVFAIL&lt;/strong&gt;: commonly a DNSSEC validation failure or a broken authoritative server. Try &lt;code&gt;dig +cd&lt;/code&gt; (checking disabled) to bypass DNSSEC validation; if it works with &lt;code&gt;+cd&lt;/code&gt; but fails without, you've found a DNSSEC problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NOERROR but empty ANSWER section&lt;/strong&gt;: the name exists but has no record of the type you asked for. For example, querying an AAAA (IPv6) record for a domain that only has IPv4 returns NOERROR with no answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing &lt;code&gt;aa&lt;/code&gt; flag when querying an authoritative server&lt;/strong&gt;: you may not be querying the server you think you are, or the server isn't authoritative for that zone (possible lame delegation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TTL counting down on repeated queries&lt;/strong&gt;: you're hitting a cache. Query the authoritative server directly (find it via the NS records) to see the true current value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different answers from different resolvers&lt;/strong&gt;: could indicate propagation in progress (a recent change still spreading) or, more concerningly, a problem. We explain propagation in our &lt;a href="https://dnsassistant.com/blog/dns-propagation-explained" rel="noopener noreferrer"&gt;DNS propagation guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;Using a Web-Based Lookup Tool&lt;/h2&gt;

&lt;p&gt;Command-line tools are powerful, but a web-based DNS lookup gives you the same core information without needing terminal access, and queries from a neutral external vantage point rather than your local network. This external perspective matters: your local resolver might have a cached or different answer than what the rest of the world sees.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; lets you query any record type for any domain and see the results clearly, including the values, types, and TTLs, without parsing raw &lt;code&gt;dig&lt;/code&gt; output. It's an easy way to check what your domain is actually serving from outside your own network.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Helps&lt;/h2&gt;

&lt;p&gt;Reading lookup output is essential for one-off troubleshooting, but it's a manual snapshot. You only see what's happening at the moment you run the command. DNS Assistant performs these lookups continuously and interprets the results for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Continuous monitoring&lt;/strong&gt; runs the equivalent of these lookups around the clock, so you don't have to manually check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection&lt;/strong&gt; alerts you when any record's value changes, catching the things a one-time lookup would only reveal if you happened to run it at the right moment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation&lt;/strong&gt; automatically checks the &lt;code&gt;ad&lt;/code&gt;-flag equivalent and the full chain of trust, catching the SERVFAIL-causing problems before they affect users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-vantage perspective&lt;/strong&gt; with alerting via email, Slack, Microsoft Teams, webhooks, and SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of manual lookups as the diagnostic tool you reach for when investigating, and DNS Assistant as the continuous monitor that tells you when you need to investigate in the first place.&lt;/p&gt;





&lt;h2&gt;Try It Yourself&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to query your domain's records and practice reading the results. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive interpreted view of your DNS configuration.&lt;/p&gt;

&lt;p&gt;For continuous monitoring that reads your DNS for you and alerts on changes, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>beginners</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Multi-Provider DNS: Why and How to Use Secondary DNS</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Wed, 17 Jun 2026 22:52:25 +0000</pubDate>
      <link>https://dev.to/dnsassistant/multi-provider-dns-why-and-how-to-use-secondary-dns-2dl4</link>
      <guid>https://dev.to/dnsassistant/multi-provider-dns-why-and-how-to-use-secondary-dns-2dl4</guid>
      <description>&lt;p&gt;In October 2016, a massive DDoS attack against the DNS provider Dyn took down a huge swath of the internet. Twitter, Reddit, Spotify, GitHub, Netflix, and countless other major sites became unreachable, not because their own infrastructure failed, but because the single DNS provider they all relied on was overwhelmed. Sites that used a second DNS provider stayed up. Sites that didn't went dark.&lt;/p&gt;

&lt;p&gt;That event was a wake-up call for an uncomfortable truth: if all your DNS lives with one provider, that provider is a single point of failure for your entire online presence. No matter how resilient your own infrastructure is, a DNS provider outage takes you offline, and there's nothing you can do but wait for them to recover.&lt;/p&gt;

&lt;p&gt;Multi-provider DNS, often implemented as secondary DNS, solves this. By serving your zone from two independent DNS providers, your domain stays resolvable even if one provider fails completely. This guide explains how it works, the different models, the tradeoffs, and how to set it up.&lt;/p&gt;





&lt;h2&gt;The Single-Provider Risk&lt;/h2&gt;

&lt;p&gt;When you use one DNS provider, your domain's resolution depends entirely on that provider's nameservers being available and answering correctly. This creates a dependency that sits above all your other infrastructure. Your servers can be perfectly healthy, your application flawless, your database replicated across regions, and none of it matters if the DNS that points to it stops resolving.&lt;/p&gt;

&lt;p&gt;Single-provider failures happen for several reasons: large-scale DDoS attacks against the provider, provider infrastructure outages, BGP routing problems, or operational errors on the provider's side. These are outside your control, and when they happen, your only option with a single provider is to wait.&lt;/p&gt;

&lt;p&gt;For many organizations, the risk is acceptable. Major providers are highly reliable, and occasional rare outages may be tolerable. But for businesses where downtime is costly, where DNS availability is mission-critical, multi-provider redundancy is the architectural answer.&lt;/p&gt;





&lt;h2&gt;How Multi-Provider DNS Works&lt;/h2&gt;

&lt;p&gt;The foundation of multi-provider DNS is that a domain can be served by nameservers from more than one provider simultaneously. Your nameserver delegation at the registrar lists nameservers from both providers. When a resolver looks up your domain, it can query any of the listed nameservers, and as long as one provider's nameservers respond correctly, resolution succeeds.&lt;/p&gt;

&lt;p&gt;For this to work, both providers must serve the same records. If they disagree, resolvers get inconsistent answers depending on which provider they happen to query. Keeping the two providers synchronized is the central challenge of multi-provider DNS, and there are two main approaches.&lt;/p&gt;





&lt;h2&gt;Primary-Secondary (Zone Transfer) Model&lt;/h2&gt;

&lt;p&gt;This is the traditional model, and it's where the term "secondary DNS" comes from.&lt;/p&gt;

&lt;p&gt;In this setup, one provider is the &lt;strong&gt;primary&lt;/strong&gt; (also called the master / hidden primary), holding the authoritative copy of your zone where you make changes. The other provider is the &lt;strong&gt;secondary&lt;/strong&gt; (or slave), which automatically pulls a copy of the zone from the primary.&lt;/p&gt;

&lt;p&gt;The synchronization happens through zone transfers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AXFR (full zone transfer)&lt;/strong&gt; copies the entire zone from primary to secondary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IXFR (incremental zone transfer)&lt;/strong&gt; copies only the changes since the last transfer, which is more efficient.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NOTIFY&lt;/strong&gt; messages let the primary tell the secondary "the zone changed, come get the update," so changes propagate quickly rather than waiting for the secondary's refresh interval.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You make all your changes at the primary. The secondary detects the change (via NOTIFY or its refresh schedule), pulls the updated zone via zone transfer, and begins serving the new records. Both providers then answer queries with identical data.&lt;/p&gt;

&lt;p&gt;The SOA record's serial number drives this: the secondary compares its serial against the primary's, and when the primary's is higher, it knows to transfer. This is one of the practical reasons the SOA serial matters, as we covered in our &lt;a href="https://dnsassistant.com/blog/what-is-a-zone-file" rel="noopener noreferrer"&gt;zone file guide&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Hidden Primary&lt;/h3&gt;

&lt;p&gt;A common variation is the "hidden primary," where the primary nameserver isn't listed in your delegation at all. It exists only to feed the secondaries via zone transfer. The publicly visible nameservers are all secondaries pulling from the hidden primary. This keeps your authoritative source private and lets you treat the public-facing providers uniformly.&lt;/p&gt;





&lt;h2&gt;Multi-Primary (Dual Provider) Model&lt;/h2&gt;

&lt;p&gt;The newer model, increasingly common with modern managed DNS providers, is multi-primary, where both providers are independently authoritative and you push the same configuration to both.&lt;/p&gt;

&lt;p&gt;Instead of one provider pulling from another via zone transfer, you manage both providers directly, typically through automation. A change is pushed to both providers' APIs simultaneously, keeping them in sync. Each provider operates independently as a primary, with no zone transfer dependency between them.&lt;/p&gt;

&lt;p&gt;This model has advantages: there's no zone transfer link that can break, no dependency of one provider on another, and each provider can use its own advanced features. The challenge is that you're responsible for keeping the two in sync through your own tooling, since they don't talk to each other. Configuration management and infrastructure-as-code tools (like Terraform with DNS providers) are commonly used to push identical records to both.&lt;/p&gt;

&lt;p&gt;A complication: provider-specific features don't always translate. If one provider offers a proprietary record type or routing feature the other doesn't, you can't keep them perfectly identical. Multi-primary works best when you stick to standard record types that both providers support.&lt;/p&gt;





&lt;h2&gt;Comparing the Models&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Primary-Secondary (AXFR)&lt;/th&gt;
&lt;th&gt;Multi-Primary (Dual)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sync method&lt;/td&gt;
&lt;td&gt;Zone transfer (AXFR/IXFR)&lt;/td&gt;
&lt;td&gt;Push to both via API/automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider dependency&lt;/td&gt;
&lt;td&gt;Secondary depends on primary&lt;/td&gt;
&lt;td&gt;Fully independent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where you make changes&lt;/td&gt;
&lt;td&gt;Primary only&lt;/td&gt;
&lt;td&gt;Both (via tooling)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider-specific features&lt;/td&gt;
&lt;td&gt;Limited (standard records)&lt;/td&gt;
&lt;td&gt;Limited (must support both)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup complexity&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Higher (needs automation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Traditional redundancy&lt;/td&gt;
&lt;td&gt;Modern IaC-driven setups&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;





&lt;h2&gt;The DNSSEC Complication&lt;/h2&gt;

&lt;p&gt;DNSSEC and multi-provider DNS interact in tricky ways, and it's the most common stumbling block.&lt;/p&gt;

&lt;p&gt;The problem: DNSSEC signing involves private keys. In a multi-provider setup, both providers need to serve validly signed records, but they each have their own signing keys. There are a few approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One provider signs, transfers signed zone:&lt;/strong&gt; In primary-secondary, the primary signs the zone and transfers the already-signed records to the secondary. The secondary serves the pre-signed data. This works but ties signing to the primary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Both providers sign with coordinated keys:&lt;/strong&gt; A more complex multi-signer setup (defined in RFC 8901) where both providers sign independently but their keys are cross-published so validation works regardless of which provider answers. This is powerful but operationally complex.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disable DNSSEC:&lt;/strong&gt; Some organizations forgo DNSSEC to simplify multi-provider setups, trading one security property for availability redundancy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use both DNSSEC and multi-provider DNS, plan the signing strategy carefully. A misconfigured multi-provider DNSSEC setup can cause validation failures, the same fail-closed outage mode we've discussed. Both providers must present a coherent chain of trust.&lt;/p&gt;





&lt;h2&gt;How to Set Up Secondary DNS&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Choose your providers.&lt;/strong&gt; Select two independent DNS providers. Independence matters: two providers that share underlying infrastructure don't give you true redundancy. Pick providers with separate networks and operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide on a model.&lt;/strong&gt; Primary-secondary (zone transfer) or multi-primary (dual push). Zone transfer is simpler if both providers support AXFR/IXFR; multi-primary suits automated, infrastructure-as-code environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure the zone on both.&lt;/strong&gt; For primary-secondary, set up the primary with your zone and configure the secondary to transfer from it (with NOTIFY and appropriate access controls on the transfer). For multi-primary, create the identical zone on both and establish your sync tooling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure zone transfers.&lt;/strong&gt; If using AXFR/IXFR, restrict transfers to authorized secondaries (by IP and ideally TSIG authentication) so attackers can't pull your entire zone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update your delegation.&lt;/strong&gt; At your registrar, list the nameservers from both providers in your NS delegation. This is what makes resolvers able to query either provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify both providers serve identical records.&lt;/strong&gt; Query each provider's nameservers directly and confirm they return the same answers. Any discrepancy means inconsistent resolution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test failover.&lt;/strong&gt; Confirm that resolution still works if one provider is unavailable. This is the whole point, so verify it actually functions.&lt;/li&gt;
&lt;/ol&gt;





&lt;h2&gt;The Synchronization Risk&lt;/h2&gt;

&lt;p&gt;Multi-provider DNS introduces its own failure mode: the two providers drifting out of sync. If a change is made at one provider but not the other (a failed zone transfer, a sync tool error, a manual change at one provider), the two start serving different records. Resolvers then get different answers depending on which provider they query, causing inconsistent and confusing behavior that can be harder to diagnose than a simple outage.&lt;/p&gt;

&lt;p&gt;This is why monitoring is essential in a multi-provider setup. You need to verify not just that your DNS resolves, but that both providers are serving the same, correct records. Drift between providers is a silent problem that monitoring catches and manual checking usually misses.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Helps With Multi-Provider DNS&lt;/h2&gt;

&lt;p&gt;Multi-provider DNS adds resilience but also adds the complexity of keeping providers synchronized and correct. DNS Assistant supports multi-provider setups by monitoring what's actually being served:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record monitoring&lt;/strong&gt; verifies the records resolving for your domain are correct, catching drift or unexpected changes regardless of which provider serves them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS delegation monitoring&lt;/strong&gt; confirms your delegation correctly lists both providers' nameservers and alerts if it changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation&lt;/strong&gt; checks that your chain of trust validates, which is especially important in multi-provider DNSSEC setups where signing coordination is complex and failure-prone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection&lt;/strong&gt; alerts you to any modification, helping you confirm that changes propagated correctly to your DNS and catching the case where one provider updated but another didn't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel alerting&lt;/strong&gt; via email, Slack, Microsoft Teams, webhooks, and SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Multi-provider DNS is a powerful resilience measure, and pairing it with continuous monitoring ensures the redundancy actually delivers, both providers serving correct, consistent records, with any drift caught immediately. This complements the broader resilience strategy we outlined in our &lt;a href="https://dnsassistant.com/blog/dns-disaster-recovery" rel="noopener noreferrer"&gt;DNS disaster recovery guide&lt;/a&gt;.&lt;/p&gt;





&lt;h2&gt;Get Started&lt;/h2&gt;

&lt;p&gt;Check your current DNS setup with the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to see your nameservers and records. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive view of your DNS configuration.&lt;/p&gt;

&lt;p&gt;For continuous monitoring across all your DNS providers with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>beginners</category>
      <category>learning</category>
      <category>security</category>
    </item>
    <item>
      <title>Anycast vs Unicast DNS: Why It Matters for Performance</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Tue, 16 Jun 2026 12:48:05 +0000</pubDate>
      <link>https://dev.to/dnsassistant/anycast-vs-unicast-dns-why-it-matters-for-performance-pkc</link>
      <guid>https://dev.to/dnsassistant/anycast-vs-unicast-dns-why-it-matters-for-performance-pkc</guid>
      <description>&lt;p&gt;When a user in Tokyo and a user in London both query the same domain, where does their request actually go? With unicast DNS, both queries travel to the same physical server, wherever it happens to be, even if that means crossing an ocean. With anycast DNS, each query is automatically routed to the nearest server out of many that share the same address. That difference shapes how fast your domain resolves, how well it survives traffic spikes, and how resilient it is against attacks.&lt;/p&gt;

&lt;p&gt;Anycast is one of the main reasons major DNS providers can offer low latency worldwide and absorb massive denial-of-service attacks. Understanding how it differs from unicast explains a lot about why managed DNS performs the way it does, and why it matters for your domain.&lt;/p&gt;

&lt;p&gt;This guide explains both routing methods, how anycast works, the advantages it provides, and where each fits.&lt;/p&gt;





&lt;h2&gt;Unicast: One Address, One Destination&lt;/h2&gt;

&lt;p&gt;Unicast is the standard, traditional model of network addressing. Each IP address corresponds to exactly one network interface on one server in one location. When traffic is sent to a unicast address, it travels to that specific server, wherever in the world it physically sits.&lt;/p&gt;

&lt;p&gt;For DNS, this means a unicast nameserver has an IP address that maps to a single machine. A query from anywhere in the world is routed across the internet to that one machine. If your nameserver is in a data center in Virginia, a user in Australia querying it sends their request all the way to Virginia and waits for the response to travel all the way back.&lt;/p&gt;

&lt;p&gt;Unicast is simple and predictable. You know exactly which server handles a request. But it has inherent limitations for global services: latency depends on distance, capacity depends on that single server (or a manually load-balanced set), and resilience depends on that one location staying online.&lt;/p&gt;





&lt;h2&gt;Anycast: One Address, Many Destinations&lt;/h2&gt;

&lt;p&gt;Anycast breaks the one-address-one-server assumption. With anycast, the same IP address is announced from multiple locations simultaneously. Many physically separate servers, potentially hundreds, all share the identical IP address.&lt;/p&gt;

&lt;p&gt;When a user sends a query to that anycast address, the internet's routing system (BGP, the Border Gateway Protocol) directs the query to the topologically nearest instance, meaning the one with the shortest network path. A user in Tokyo reaches the Tokyo instance. A user in London reaches the London instance. Both used the exact same IP address, but the network delivered each to a different physical server based on proximity.&lt;/p&gt;

&lt;p&gt;This is the key insight: with anycast, the network itself handles the routing to the closest server, transparently, without the user or the DNS query doing anything special. The same destination address yields different physical destinations depending on where the request originates.&lt;/p&gt;





&lt;h2&gt;How Anycast Actually Works&lt;/h2&gt;

&lt;p&gt;Anycast relies on BGP, the protocol that routers use to exchange information about how to reach different parts of the internet. Here's the mechanism:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Multiple servers announce the same IP prefix.&lt;/strong&gt; An operator places servers in many locations (points of presence, or PoPs) around the world. Each location announces, via BGP, that it can reach the anycast IP address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routers learn multiple paths to the same address.&lt;/strong&gt; Internet routers receive these announcements and see that the anycast address is reachable through several different paths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Each router picks the best (shortest) path.&lt;/strong&gt; Using BGP's path-selection logic, each router forwards traffic for the anycast address along the shortest path it knows, which leads to the nearest announcing server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queries naturally distribute to the closest PoP.&lt;/strong&gt; The result is that queries from any given region are delivered to the nearest server, with no central coordination required. The routing fabric of the internet does the work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If one PoP goes offline, it stops announcing the route, and routers automatically redirect traffic to the next-nearest PoP. This failover is automatic and fast, which is a major resilience benefit.&lt;/p&gt;





&lt;h2&gt;Why Anycast Matters for DNS&lt;/h2&gt;

&lt;h3&gt;Lower Latency Worldwide&lt;/h3&gt;

&lt;p&gt;DNS resolution is latency-sensitive. Every web page load involves multiple DNS lookups, and each one adds to the time before content appears. With unicast, users far from your nameserver experience high DNS latency. With anycast, queries reach a nearby PoP, dramatically reducing resolution time for a global audience. A query that might take 200ms round-trip to a distant unicast server could take 10-20ms to a nearby anycast PoP.&lt;/p&gt;

&lt;h3&gt;DDoS Resilience&lt;/h3&gt;

&lt;p&gt;This is one of anycast's most important benefits. In a &lt;a href="https://dnsassistant.com/blog/dns-amplification-ddos-attack" rel="noopener noreferrer"&gt;DNS-based DDoS attack&lt;/a&gt;, attack traffic floods your nameservers. With unicast, all that traffic converges on a single server, which is quickly overwhelmed. With anycast, attack traffic is distributed across all the PoPs based on where it originates. A botnet in Asia hits the Asian PoPs; a botnet in Europe hits the European PoPs. The attack is naturally spread across the entire anycast network rather than concentrated on one target, dramatically increasing the capacity available to absorb it.&lt;/p&gt;

&lt;h3&gt;Automatic Failover&lt;/h3&gt;

&lt;p&gt;If a PoP fails or is taken offline for maintenance, BGP automatically reroutes queries to the next-nearest PoP. There's no manual intervention, no DNS change, no waiting for TTLs to expire. The failover happens at the routing layer in seconds. This provides a level of resilience that's difficult to achieve with unicast.&lt;/p&gt;

&lt;h3&gt;Load Distribution&lt;/h3&gt;

&lt;p&gt;Query load is naturally spread across all PoPs by geography. No single server handles the entire world's queries. This distribution means each individual server handles a manageable portion of traffic, improving performance and reducing the risk of any one server being overwhelmed by legitimate load.&lt;/p&gt;





&lt;h2&gt;Anycast and the DNS Root Servers&lt;/h2&gt;

&lt;p&gt;The clearest real-world demonstration of anycast is the DNS root server system. There are 13 root server identities (named A through M), but there aren't just 13 physical machines. Through anycast, those 13 addresses are served by over 1,000 physical server instances distributed around the globe.&lt;/p&gt;

&lt;p&gt;This is how the root of the entire DNS hierarchy stays fast and resilient despite handling enormous query volumes and being a constant target for attacks. When you query a root server, you reach the nearest instance via anycast, which is why root server queries are fast no matter where you are. The root system's use of anycast is a big part of why DNS as a whole is so robust.&lt;/p&gt;





&lt;h2&gt;Comparing the Two&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Unicast&lt;/th&gt;
&lt;th&gt;Anycast&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IP-to-server mapping&lt;/td&gt;
&lt;td&gt;One address, one server&lt;/td&gt;
&lt;td&gt;One address, many servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency for global users&lt;/td&gt;
&lt;td&gt;Depends on distance&lt;/td&gt;
&lt;td&gt;Low (nearest PoP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DDoS resilience&lt;/td&gt;
&lt;td&gt;Traffic concentrates&lt;/td&gt;
&lt;td&gt;Traffic distributes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failover&lt;/td&gt;
&lt;td&gt;Manual / DNS-based&lt;/td&gt;
&lt;td&gt;Automatic (BGP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity to operate&lt;/td&gt;
&lt;td&gt;Lower&lt;/td&gt;
&lt;td&gt;Higher (BGP, multiple PoPs)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical use&lt;/td&gt;
&lt;td&gt;Small / regional setups&lt;/td&gt;
&lt;td&gt;Global DNS, CDNs, root servers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;





&lt;h2&gt;When Each Makes Sense&lt;/h2&gt;

&lt;h3&gt;Anycast Is the Right Choice When&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You serve a global audience and want low DNS latency everywhere&lt;/li&gt;
&lt;li&gt;DDoS resilience matters (and for most public-facing domains, it does)&lt;/li&gt;
&lt;li&gt;You want automatic failover without manual intervention&lt;/li&gt;
&lt;li&gt;You're using a managed DNS provider (most major ones use anycast by default)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Unicast Can Be Sufficient When&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Your audience is concentrated in one region near your server&lt;/li&gt;
&lt;li&gt;You're running a small or internal DNS setup where global performance isn't a concern&lt;/li&gt;
&lt;li&gt;You don't have the infrastructure or expertise to operate an anycast network (which requires multiple PoPs, BGP, and the ability to announce IP prefixes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For most organizations, the practical path to anycast is simply using a managed DNS provider. Operating your own anycast network requires significant infrastructure: multiple points of presence, BGP peering arrangements, and provider-independent IP space. This is why anycast is a major advantage of managed DNS, as we discussed in our &lt;a href="https://dnsassistant.com/blog/self-hosted-vs-managed-dns" rel="noopener noreferrer"&gt;self-hosted vs managed DNS guide&lt;/a&gt;. Managed providers have already built global anycast networks, and you benefit from them automatically just by using the service.&lt;/p&gt;





&lt;h2&gt;Anycast Doesn't Replace Monitoring&lt;/h2&gt;

&lt;p&gt;Anycast improves performance and resilience, but it doesn't guarantee your DNS is correct or secure. An anycast network will faithfully serve whatever records it's configured with, including misconfigured or maliciously altered ones, to users worldwide, quickly. The speed and reach of anycast mean that a bad record propagates to your entire global audience just as efficiently as a good one.&lt;/p&gt;

&lt;p&gt;This is where monitoring remains essential regardless of your routing model. DNS Assistant monitors what your nameservers actually return to queries, catching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unauthorized record changes&lt;/strong&gt; that anycast would otherwise serve globally without question&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation issues&lt;/strong&gt; across your domains&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS delegation problems&lt;/strong&gt; including lame delegation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution failures or unexpected answers&lt;/strong&gt;, with real-time alerting via email, Slack, Microsoft Teams, webhooks, and SMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether your DNS is served via unicast or a global anycast network, what matters for security is whether the right records are being served, and that requires continuous monitoring.&lt;/p&gt;





&lt;h2&gt;Check Your DNS&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to query your domain's records and nameservers. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive view of your DNS configuration.&lt;/p&gt;

&lt;p&gt;For continuous monitoring of your DNS regardless of how it's routed, with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>beginners</category>
      <category>infrastructure</category>
      <category>tooling</category>
    </item>
    <item>
      <title>DNS Disaster Recovery: Building a Resilient DNS Strategy</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Tue, 16 Jun 2026 12:44:12 +0000</pubDate>
      <link>https://dev.to/dnsassistant/dns-disaster-recovery-building-a-resilient-dns-strategy-566</link>
      <guid>https://dev.to/dnsassistant/dns-disaster-recovery-building-a-resilient-dns-strategy-566</guid>
      <description>&lt;p&gt;When DNS fails, everything fails. Your website becomes unreachable, email stops flowing, APIs go dark, and every service that depends on name resolution breaks at once. DNS is the single most critical dependency in your infrastructure, and yet it's often the least planned-for in disaster recovery strategies. Teams build elaborate failover for applications and databases while leaving the DNS that points to all of it as a single point of failure.&lt;/p&gt;

&lt;p&gt;DNS disaster recovery is about ensuring that name resolution survives the failures that will eventually happen: a provider outage, a DDoS attack, an expired domain, a botched configuration change, or a registrar problem. A resilient DNS strategy anticipates these and builds in redundancy, monitoring, and recovery procedures before disaster strikes.&lt;/p&gt;

&lt;p&gt;This guide covers the failure modes that take DNS down, the architectural patterns that make it resilient, and the operational practices that let you recover quickly when something goes wrong.&lt;/p&gt;





&lt;h2&gt;Why DNS Is the Ultimate Single Point of Failure&lt;/h2&gt;

&lt;p&gt;Most infrastructure components, if they fail, cause partial or degraded service. A failed application server might be one of many behind a load balancer. A database failure might trigger failover to a replica. But DNS sits above all of it. If users can't resolve your domain name, none of your redundant, highly available backend infrastructure matters, because nothing can reach it.&lt;/p&gt;

&lt;p&gt;This makes DNS resilience disproportionately important. The blast radius of a DNS failure is total: it doesn't degrade service, it eliminates it. And because DNS failures often stem from configuration or provider issues rather than your own servers, they can happen even when all your infrastructure is perfectly healthy.&lt;/p&gt;





&lt;h2&gt;The Failure Modes&lt;/h2&gt;

&lt;p&gt;Effective DNS disaster recovery starts with understanding what actually goes wrong.&lt;/p&gt;

&lt;h3&gt;DNS Provider Outage&lt;/h3&gt;

&lt;p&gt;Your managed DNS provider experiences an outage, and your domain stops resolving. This has happened to every major provider at some point. If all your DNS is hosted with a single provider, their outage is your outage, with no way to fix it on your end except to wait.&lt;/p&gt;

&lt;h3&gt;DDoS Attack&lt;/h3&gt;

&lt;p&gt;Your nameservers are flooded with attack traffic and can't respond to legitimate queries. Without sufficient capacity or DDoS protection, your domain becomes unreachable for the duration of the attack.&lt;/p&gt;

&lt;h3&gt;Domain Expiration&lt;/h3&gt;

&lt;p&gt;The domain registration lapses, often due to an expired payment method or a missed renewal notice, and the domain stops resolving entirely. We covered this preventable disaster in depth in our &lt;a href="https://dnsassistant.com/blog/domain-expiration-silent-risk" rel="noopener noreferrer"&gt;domain expiration guide&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Misconfiguration&lt;/h3&gt;

&lt;p&gt;A well-intentioned change introduces an error: a typo in a record, a deleted entry, a broken DNSSEC configuration, or an incorrect nameserver delegation. Configuration mistakes are one of the most common causes of DNS outages, and they're entirely self-inflicted.&lt;/p&gt;

&lt;h3&gt;DNSSEC Failures&lt;/h3&gt;

&lt;p&gt;An expired DNSSEC signature or a botched key rollover causes validating resolvers to reject your domain entirely. This is a particularly nasty failure mode because the domain works for non-validating resolvers but fails for validating ones, making it hard to diagnose. The &lt;a href="https://dnsassistant.com/blog/how-a-routine-key-rollover-took-down-germany-s-internet-the-de-dnssec-outage" rel="noopener noreferrer"&gt;.de TLD DNSSEC outage&lt;/a&gt; showed how this can take down DNS at national scale.&lt;/p&gt;

&lt;h3&gt;Registrar or Account Compromise&lt;/h3&gt;

&lt;p&gt;An attacker gains access to your DNS provider account or registrar and alters your records or nameserver delegation, redirecting traffic. This is both a security incident and a disaster recovery scenario.&lt;/p&gt;





&lt;h2&gt;Building a Resilient DNS Architecture&lt;/h2&gt;

&lt;h3&gt;1. Use Multiple DNS Providers (Secondary DNS)&lt;/h3&gt;

&lt;p&gt;The single most effective DNS resilience measure is using more than one DNS provider. With secondary DNS, your zone is served by nameservers from two independent providers. If one provider has an outage, the other continues answering queries, and your domain stays up.&lt;/p&gt;

&lt;p&gt;This works because you can list nameservers from both providers in your delegation. Resolvers will try them, and as long as one set responds correctly, resolution succeeds. The providers stay synchronized either through zone transfers (AXFR/IXFR) or through both being fed from a common source.&lt;/p&gt;

&lt;p&gt;Multi-provider DNS protects against the failure mode you can't otherwise control: your provider's infrastructure failing. It's the DNS equivalent of multi-region redundancy, and for critical domains, it's worth the added complexity.&lt;/p&gt;

&lt;h3&gt;2. Ensure Geographic and Network Diversity&lt;/h3&gt;

&lt;p&gt;Your nameservers should be distributed across multiple locations and network paths. Anycast (which we cover in our &lt;a href="https://dnsassistant.com/blog/anycast-vs-unicast-dns" rel="noopener noreferrer"&gt;anycast vs unicast guide&lt;/a&gt;) provides this within a single provider, but combining anycast with multiple providers gives you both intra-provider and inter-provider diversity.&lt;/p&gt;

&lt;h3&gt;3. Use Appropriate TTLs&lt;/h3&gt;

&lt;p&gt;TTL strategy is a disaster recovery tool. Lower TTLs let you reroute traffic faster during an incident by reducing how long resolvers cache records. Higher TTLs provide a buffer during nameserver outages because resolvers keep serving cached records even if your nameservers are temporarily unreachable. Balancing these is a deliberate decision, covered in our &lt;a href="https://dnsassistant.com/blog/dns-ttl-best-practices" rel="noopener noreferrer"&gt;TTL best practices guide&lt;/a&gt;. For disaster recovery, knowing your TTLs in advance tells you how quickly you can react and how much cache buffer you have.&lt;/p&gt;

&lt;h3&gt;4. Protect the Registrar Layer&lt;/h3&gt;

&lt;p&gt;Your domain registration and nameserver delegation live at the registrar, above your DNS provider. Protect this layer: enable registrar lock (client transfer prohibited), use strong authentication with MFA on the registrar account, register domains for multi-year terms to reduce expiration risk, and ensure renewal contact information is monitored. A registrar-level problem (expiration, unauthorized transfer, account compromise) bypasses all your DNS provider redundancy.&lt;/p&gt;

&lt;h3&gt;5. Maintain DNSSEC Carefully&lt;/h3&gt;

&lt;p&gt;If you use DNSSEC, treat key rollovers and signature refreshes as high-risk operations. Automate signature refresh so signatures never expire. Test key rollovers carefully. Monitor the chain of trust continuously. DNSSEC adds security but introduces a failure mode that can take your domain completely offline, so it requires disciplined operational practices.&lt;/p&gt;





&lt;h2&gt;Operational Practices for Recovery&lt;/h2&gt;

&lt;p&gt;Architecture reduces the chance of failure. Operational practices determine how fast you recover when failure happens anyway.&lt;/p&gt;

&lt;h3&gt;Maintain a Complete DNS Inventory&lt;/h3&gt;

&lt;p&gt;You can't recover what you haven't documented. Maintain a current record of every domain, every DNS record, every provider, and every registrar account. When disaster strikes, you need to know exactly what your DNS should look like to restore it. This inventory is also your reference for detecting unauthorized changes.&lt;/p&gt;

&lt;h3&gt;Keep Backups of Your Zone Data&lt;/h3&gt;

&lt;p&gt;Export and back up your zone files regularly. If a provider loses your configuration, an account is compromised and records are deleted, or a migration goes wrong, a recent zone backup lets you restore quickly rather than reconstructing records from memory. Store backups independently of the provider.&lt;/p&gt;

&lt;h3&gt;Document Recovery Procedures&lt;/h3&gt;

&lt;p&gt;Write down the steps to recover from each failure mode before you need them. Who has access to the registrar account? How do you fail over to the secondary provider? How do you roll back a bad change? How do you respond to a suspected compromise? Having these documented turns a panicked scramble into a calm procedure.&lt;/p&gt;

&lt;h3&gt;Monitor Continuously&lt;/h3&gt;

&lt;p&gt;The faster you detect a DNS problem, the faster you can respond, and with DNS, detection speed directly determines impact. A misconfiguration caught in seconds is a non-event; the same misconfiguration discovered an hour later when customers complain is an outage. Continuous monitoring is the foundation of fast recovery.&lt;/p&gt;

&lt;h3&gt;Test Your Recovery Plan&lt;/h3&gt;

&lt;p&gt;A recovery plan you've never tested is a hypothesis, not a plan. Periodically verify that your secondary DNS actually works, that your backups can be restored, that your team knows the procedures, and that your registrar access is current. Discover the gaps during a test, not during a real incident.&lt;/p&gt;





&lt;h2&gt;The Detection Gap&lt;/h2&gt;

&lt;p&gt;Most DNS disasters share a common characteristic: they're invisible until someone notices the symptoms. A DNSSEC signature expires, but nothing alerts you until validating resolvers start failing. A record is changed, but you don't know until traffic goes to the wrong place. A domain approaches expiration, but the only warning is a renewal email that went to an unmonitored inbox.&lt;/p&gt;

&lt;p&gt;This detection gap is where most of the damage happens. The technical failure might last seconds, but the time to notice it can stretch to hours, and that's the duration your users actually experience as an outage. Closing the detection gap is the highest-leverage improvement most organizations can make to their DNS resilience.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Supports DNS Disaster Recovery&lt;/h2&gt;

&lt;p&gt;DNS Assistant is built to close the detection gap and provide the visibility that fast recovery depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Continuous record monitoring:&lt;/strong&gt; Every DNS record is checked continuously, and any change triggers an immediate alert. Unauthorized modifications, accidental deletions, and misconfigurations are caught in real time rather than discovered through user complaints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation:&lt;/strong&gt; The chain of trust is validated continuously, catching expiring signatures and broken key rollovers before they take your domain offline for validating resolvers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WHOIS and expiration monitoring:&lt;/strong&gt; Domain expiration dates are tracked independently of registrar emails, providing a safety net against the preventable disaster of an expired domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS delegation monitoring:&lt;/strong&gt; Nameserver changes and delegation problems are detected, catching both unauthorized changes and lame delegation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel alerting with escalation:&lt;/strong&gt; Alerts reach your team via email, Slack, Microsoft Teams, webhooks, and SMS, with escalation so critical issues don't get missed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A baseline for recovery:&lt;/strong&gt; Continuous monitoring maintains an accurate picture of your DNS, giving you the reference you need to detect deviations and restore correct configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monitoring doesn't replace architectural resilience like multi-provider DNS, but it's the layer that turns a potential disaster into a quickly-resolved incident. The combination of resilient architecture and continuous detection is what keeps DNS available through the failures that will inevitably come.&lt;/p&gt;





&lt;h2&gt;Get Started&lt;/h2&gt;

&lt;p&gt;Begin by understanding your current DNS posture. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; to review your configuration, DNSSEC status, and email authentication, or use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool&lt;/a&gt; to inspect specific records and nameservers.&lt;/p&gt;

&lt;p&gt;For continuous monitoring that closes the detection gap and supports fast recovery, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>learning</category>
      <category>beginners</category>
      <category>security</category>
    </item>
    <item>
      <title>Wildcard DNS Records: Uses, Risks, and Best Practices</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Mon, 15 Jun 2026 12:23:48 +0000</pubDate>
      <link>https://dev.to/dnsassistant/wildcard-dns-records-uses-risks-and-best-practices-4nh9</link>
      <guid>https://dev.to/dnsassistant/wildcard-dns-records-uses-risks-and-best-practices-4nh9</guid>
      <description>&lt;p&gt;A single DNS record can answer for an unlimited number of subdomains. Add one wildcard entry, and suddenly &lt;code&gt;anything.yourcompany.com&lt;/code&gt;, &lt;code&gt;literally-anything.yourcompany.com&lt;/code&gt;, and every other name you never explicitly created all resolve to the same place. Wildcard DNS records are powerful, convenient, and genuinely necessary for certain architectures. They're also a frequent source of security problems and confusing misconfigurations.&lt;/p&gt;

&lt;p&gt;Understanding when wildcards help, when they hurt, and how they interact with the rest of your DNS is essential for using them safely. This guide covers what wildcard records are, their legitimate uses, the real risks they introduce, and best practices for managing them.&lt;/p&gt;





&lt;h2&gt;What Is a Wildcard DNS Record?&lt;/h2&gt;

&lt;p&gt;A wildcard DNS record uses an asterisk (&lt;code&gt;*&lt;/code&gt;) as the leftmost label to match any subdomain that doesn't have its own explicit record. It looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;*.yourcompany.com.    3600    IN    A    203.0.113.50&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;With this record in place, any query for a subdomain of &lt;code&gt;yourcompany.com&lt;/code&gt; that doesn't have a specific record returns &lt;code&gt;203.0.113.50&lt;/code&gt;. So &lt;code&gt;foo.yourcompany.com&lt;/code&gt;, &lt;code&gt;bar.yourcompany.com&lt;/code&gt;, and &lt;code&gt;anything-at-all.yourcompany.com&lt;/code&gt; all resolve to that IP, even though you never created records for any of them.&lt;/p&gt;

&lt;p&gt;Wildcards work with various record types, not just A records. You can have wildcard CNAME, MX, TXT, and other record types, though A and CNAME are the most common.&lt;/p&gt;





&lt;h2&gt;How Wildcards Actually Match (The Rules)&lt;/h2&gt;

&lt;p&gt;Wildcard matching is more nuanced than it first appears, and misunderstanding the rules leads to surprises.&lt;/p&gt;

&lt;h3&gt;Explicit Records Always Win&lt;/h3&gt;

&lt;p&gt;A wildcard only answers for names that don't have their own record. If you have both:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;*.yourcompany.com.      IN  A  203.0.113.50
api.yourcompany.com.    IN  A  203.0.113.99&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then &lt;code&gt;api.yourcompany.com&lt;/code&gt; resolves to &lt;code&gt;203.0.113.99&lt;/code&gt; (the explicit record), while &lt;code&gt;anything-else.yourcompany.com&lt;/code&gt; resolves to &lt;code&gt;203.0.113.50&lt;/code&gt; (the wildcard). The explicit record takes precedence.&lt;/p&gt;

&lt;h3&gt;Wildcards Only Match One Level&lt;/h3&gt;

&lt;p&gt;A wildcard like &lt;code&gt;*.yourcompany.com&lt;/code&gt; matches &lt;code&gt;foo.yourcompany.com&lt;/code&gt; but does NOT match &lt;code&gt;foo.bar.yourcompany.com&lt;/code&gt; (two levels deep). The asterisk represents exactly one label, not multiple. To match deeper levels, you'd need additional wildcards like &lt;code&gt;*.bar.yourcompany.com&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;The Subtle Trap: Wildcards and Existing Names&lt;/h3&gt;

&lt;p&gt;Here's a rule that catches people: a wildcard does not match a name if that name (or something below it) exists in the zone for any record type. If &lt;code&gt;blog.yourcompany.com&lt;/code&gt; has an MX record but no A record, a query for the A record of &lt;code&gt;blog.yourcompany.com&lt;/code&gt; will NOT fall through to the wildcard, because the name &lt;code&gt;blog.yourcompany.com&lt;/code&gt; exists in the zone. This behavior, defined in the DNS specifications, surprises administrators who expect the wildcard to fill in any missing record type.&lt;/p&gt;





&lt;h2&gt;Legitimate Uses of Wildcard Records&lt;/h2&gt;

&lt;p&gt;Wildcards exist for good reasons. Here are the scenarios where they're the right tool.&lt;/p&gt;

&lt;h3&gt;Multi-Tenant SaaS Applications&lt;/h3&gt;

&lt;p&gt;The classic use case. A SaaS platform gives each customer their own subdomain: &lt;code&gt;customer1.app.com&lt;/code&gt;, &lt;code&gt;customer2.app.com&lt;/code&gt;, and so on. Creating an explicit DNS record for every customer would be impractical, especially with thousands of customers signing up dynamically. A wildcard (&lt;code&gt;*.app.com&lt;/code&gt;) points all of them to the application, which then routes based on the hostname. This is the standard pattern for multi-tenant architectures.&lt;/p&gt;

&lt;h3&gt;Dynamic or Ephemeral Subdomains&lt;/h3&gt;

&lt;p&gt;Applications that generate subdomains on the fly, preview environments for pull requests, per-user spaces, dynamically provisioned services, benefit from wildcards so the DNS doesn't need updating every time a new subdomain is created.&lt;/p&gt;

&lt;h3&gt;Catch-All Behavior&lt;/h3&gt;

&lt;p&gt;Sometimes you want any subdomain to resolve somewhere sensible rather than returning an error, perhaps to a landing page or a catch-all handler. A wildcard provides this.&lt;/p&gt;

&lt;h3&gt;Wildcard TLS Certificate Pairing&lt;/h3&gt;

&lt;p&gt;Wildcard DNS often pairs with wildcard TLS certificates (&lt;code&gt;*.yourcompany.com&lt;/code&gt;), allowing any subdomain to serve HTTPS without provisioning individual certificates. The DNS wildcard and certificate wildcard work together to support a flexible subdomain architecture.&lt;/p&gt;





&lt;h2&gt;The Risks of Wildcard Records&lt;/h2&gt;

&lt;p&gt;The same flexibility that makes wildcards useful also makes them risky. Here's what to watch for.&lt;/p&gt;

&lt;h3&gt;They Mask Missing Records and Errors&lt;/h3&gt;

&lt;p&gt;With a wildcard in place, every subdomain resolves to something, even typos and mistakes. If someone mistypes a subdomain in a configuration, instead of getting a clear "this doesn't exist" error, they get the wildcard's answer, which may route them somewhere unexpected. This masking makes troubleshooting harder because nothing ever appears to be "missing."&lt;/p&gt;

&lt;h3&gt;They Expand the Attack Surface&lt;/h3&gt;

&lt;p&gt;A wildcard means every possible subdomain resolves to your infrastructure. If that infrastructure has a vulnerability, or if the wildcard points to a service that can be manipulated, the entire infinite namespace of subdomains becomes a potential vector. This is exactly the dynamic that made the &lt;a href="https://dnsassistant.com/blog/borrowed-trust-abandoned-dns-delegations" rel="noopener noreferrer"&gt;Borrowed Trust campaign&lt;/a&gt; so damaging: attackers who took over abandoned cloud DNS zones added a single wildcard record that exposed an unlimited subdomain namespace, each entry inheriting the victim's trusted domain authority.&lt;/p&gt;

&lt;h3&gt;They Complicate Dangling DNS Detection&lt;/h3&gt;

&lt;p&gt;Wildcards make it harder to detect &lt;a href="https://dnsassistant.com/blog/dangling-dns-subdomain-takeover" rel="noopener noreferrer"&gt;dangling DNS and subdomain takeover risks&lt;/a&gt;. Normally, you can audit your explicit subdomain records and check each target. But a wildcard resolves everything, so a randomized nonsense hostname will return a result whether or not it's legitimately configured. As we noted in the Borrowed Trust analysis, security researchers specifically test wildcard resolution with random hostnames precisely because an unexpected resolution is a strong signal of a compromised or misconfigured zone.&lt;/p&gt;

&lt;h3&gt;They Can Enable Email and Phishing Abuse&lt;/h3&gt;

&lt;p&gt;If a wildcard covers MX or interacts with email authentication, it can create openings for abuse. More commonly, a wildcard A record combined with a permissive application can let attackers serve content under arbitrary subdomains of your trusted domain, useful for phishing that leverages your brand's reputation.&lt;/p&gt;

&lt;h3&gt;They Interact Unexpectedly with SPF and Subdomains&lt;/h3&gt;

&lt;p&gt;Wildcards and email authentication don't always combine cleanly. A wildcard doesn't automatically extend your SPF, DKIM, and DMARC protection to every subdomain, which can leave generated subdomains spoofable even though they resolve. Subdomain email security requires explicit DMARC subdomain policies (&lt;code&gt;sp=&lt;/code&gt;), not wildcard coverage.&lt;/p&gt;





&lt;h2&gt;Best Practices for Wildcard Records&lt;/h2&gt;

&lt;h3&gt;Use Explicit Records When You Can&lt;/h3&gt;

&lt;p&gt;If you know the specific subdomains you need, create explicit records for them rather than relying on a wildcard. Explicit records are auditable, each one represents a deliberate decision, and they don't mask errors. Reserve wildcards for cases where the set of subdomains is genuinely dynamic or unbounded.&lt;/p&gt;

&lt;h3&gt;Scope Wildcards as Narrowly as Possible&lt;/h3&gt;

&lt;p&gt;Instead of a broad wildcard at your apex (&lt;code&gt;*.yourcompany.com&lt;/code&gt;), scope it to a specific subdomain branch where dynamic naming actually happens (&lt;code&gt;*.apps.yourcompany.com&lt;/code&gt; or &lt;code&gt;*.tenants.yourcompany.com&lt;/code&gt;). This limits the wildcard's reach to where it's needed and keeps the rest of your namespace explicit and auditable.&lt;/p&gt;

&lt;h3&gt;Pair Wildcards With Application-Level Validation&lt;/h3&gt;

&lt;p&gt;If a wildcard routes all subdomains to an application, that application should validate the hostname and reject ones it doesn't recognize, rather than serving content for any arbitrary name. The DNS wildcard resolves the name; the application decides whether to actually honor it. This prevents the wildcard from being abused to serve content under unrecognized subdomains.&lt;/p&gt;

&lt;h3&gt;Monitor for Unexpected Wildcard Behavior&lt;/h3&gt;

&lt;p&gt;Because wildcards resolve everything, you need monitoring that can detect when a wildcard appears that shouldn't exist, or when wildcard behavior changes. An unexpected wildcard is a strong indicator of compromise, as the Borrowed Trust campaign demonstrated at scale.&lt;/p&gt;

&lt;h3&gt;Audit Wildcards During Decommissioning&lt;/h3&gt;

&lt;p&gt;When you tear down a project or environment that used a wildcard, removing the wildcard record is critical. An orphaned wildcard pointing at decommissioned infrastructure is exactly the kind of dangling configuration attackers look for. Make wildcard cleanup an explicit step in your decommissioning checklist.&lt;/p&gt;

&lt;h3&gt;Don't Use Wildcards to Avoid DNS Management&lt;/h3&gt;

&lt;p&gt;Sometimes wildcards are used as a shortcut to avoid the work of managing individual records. That convenience comes at the cost of visibility and security. If you're using a wildcard purely to avoid creating records, reconsider, the explicit records are usually worth the small effort.&lt;/p&gt;





&lt;h2&gt;How to Check for Wildcards&lt;/h2&gt;

&lt;p&gt;Testing for a wildcard is simple: query a randomized, nonsense hostname that you've definitely never created. If it resolves, you have a wildcard (or, more concerningly, a compromised zone).&lt;/p&gt;

&lt;p&gt;Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to query a random subdomain like &lt;code&gt;random-test-12345.yourcompany.com&lt;/code&gt;. If it returns an answer, a wildcard is in play. If you didn't intentionally configure one, that's a red flag worth investigating immediately.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Helps&lt;/h2&gt;

&lt;p&gt;Wildcards require careful monitoring precisely because they resolve everything and can mask both errors and compromise. DNS Assistant supports safe wildcard management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record change detection&lt;/strong&gt; alerts you when a wildcard record is added, modified, or removed, so an unexpected wildcard (a strong compromise signal) doesn't go unnoticed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dangling DNS detection&lt;/strong&gt; across 22+ cloud providers helps identify when records, including wildcards, point to decommissioned infrastructure vulnerable to takeover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous monitoring&lt;/strong&gt; catches the moment a wildcard's behavior changes, which is exactly when problems and compromises surface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full record visibility&lt;/strong&gt; across all your domains helps you maintain an accurate picture of where wildcards exist and what they point to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel alerting&lt;/strong&gt; via email, Slack, Microsoft Teams, webhooks, and SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Given how central wildcard records were to the Borrowed Trust campaign and other subdomain takeover attacks, monitoring wildcard behavior is an important part of DNS security hygiene.&lt;/p&gt;





&lt;h2&gt;Get Started&lt;/h2&gt;

&lt;p&gt;Test whether your domains have unexpected wildcards using the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool&lt;/a&gt;, or run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive view of your DNS configuration.&lt;/p&gt;

&lt;p&gt;For continuous monitoring of wildcard records and all your DNS configuration with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>beginners</category>
      <category>security</category>
      <category>learning</category>
    </item>
    <item>
      <title>What Is a Zone File? Understanding DNS Zone Structure</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Mon, 15 Jun 2026 12:12:35 +0000</pubDate>
      <link>https://dev.to/dnsassistant/what-is-a-zone-file-understanding-dns-zone-structure-52p5</link>
      <guid>https://dev.to/dnsassistant/what-is-a-zone-file-understanding-dns-zone-structure-52p5</guid>
      <description>&lt;p&gt;Every domain's DNS records have to live somewhere. That somewhere is a zone file: a text-based blueprint that defines how a domain resolves, where its email goes, which servers are authoritative, and dozens of other instructions that make the domain work. If you've ever managed DNS through a provider's dashboard, you've been editing a zone file without seeing it. The dashboard is just a friendly interface over the underlying structure.&lt;/p&gt;

&lt;p&gt;Understanding the zone file demystifies a lot of DNS. It shows you how records relate to each other, why certain rules exist (like the constraints on CNAMEs), and what's actually happening when you add an A record or change a nameserver. For anyone running self-hosted DNS, the zone file is the thing you edit directly.&lt;/p&gt;

&lt;p&gt;This guide explains what a zone file is, walks through its structure line by line, and covers the records and directives you'll find inside one.&lt;/p&gt;





&lt;h2&gt;What Is a Zone File?&lt;/h2&gt;

&lt;p&gt;A zone file is a plain-text file that contains all the DNS records for a particular zone, which is usually a domain and its subdomains. It lives on the authoritative nameserver for that domain and is the definitive source of truth for how the domain resolves.&lt;/p&gt;

&lt;p&gt;The format is standardized (originally defined in RFC 1035) so that any DNS server software can read it. Whether you use BIND, PowerDNS, Knot, or NSD, the zone file format is broadly the same, which is part of why DNS is so interoperable.&lt;/p&gt;

&lt;p&gt;A "zone" and a "domain" are closely related but not identical. A domain is the name (&lt;code&gt;yourcompany.com&lt;/code&gt;). A zone is the administrative boundary that the nameserver is authoritative for. Usually they line up, but a zone can be split: you might delegate &lt;code&gt;sub.yourcompany.com&lt;/code&gt; to a different nameserver, creating a separate child zone. The parent zone file then contains a delegation pointing to the child's nameservers rather than the child's records directly.&lt;/p&gt;





&lt;h2&gt;The Anatomy of a Zone File&lt;/h2&gt;

&lt;p&gt;Here's a representative zone file for &lt;code&gt;example.com&lt;/code&gt;. We'll break down each part.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$TTL 3600
$ORIGIN example.com.

@   IN  SOA  ns1.example.com. admin.example.com. (
            2026061501  ; Serial
            7200        ; Refresh
            3600        ; Retry
            1209600     ; Expire
            3600 )      ; Minimum TTL

@       IN  NS      ns1.example.com.
@       IN  NS      ns2.example.com.

@       IN  A       203.0.113.10
www     IN  A       203.0.113.10
@       IN  AAAA    2001:db8::10

@       IN  MX  10  mail.example.com.
mail    IN  A       203.0.113.20

@       IN  TXT     "v=spf1 include:_spf.example.com -all"

ftp     IN  CNAME   www.example.com.
ns1     IN  A       203.0.113.2
ns2     IN  A       203.0.113.3&lt;/code&gt;&lt;/pre&gt;





&lt;h2&gt;Directives: $TTL and $ORIGIN&lt;/h2&gt;

&lt;p&gt;Lines starting with &lt;code&gt;$&lt;/code&gt; are directives that control how the rest of the file is interpreted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;$TTL 3600&lt;/code&gt;&lt;/strong&gt; sets the default Time to Live for records that don't specify their own. This is how long resolvers should cache the records, in seconds. Individual records can override it. We covered TTL strategy in depth in our &lt;a href="https://dnsassistant.com/blog/dns-ttl-best-practices" rel="noopener noreferrer"&gt;TTL best practices guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;$ORIGIN example.com.&lt;/code&gt;&lt;/strong&gt; defines the base domain that gets appended to any name not ending in a dot. This is what makes the shorthand in zone files work. When you write &lt;code&gt;www&lt;/code&gt;, it expands to &lt;code&gt;www.example.com.&lt;/code&gt; because of the origin. The trailing dot matters enormously here, which we'll explain next.&lt;/p&gt;





&lt;h2&gt;The Critical Detail: Trailing Dots&lt;/h2&gt;

&lt;p&gt;This is the single most common source of zone file errors, and it trips up even experienced administrators.&lt;/p&gt;

&lt;p&gt;In a zone file, a name that ends with a dot is &lt;strong&gt;fully qualified&lt;/strong&gt;, meaning it's complete and absolute. A name that does NOT end with a dot is &lt;strong&gt;relative&lt;/strong&gt;, and the &lt;code&gt;$ORIGIN&lt;/code&gt; gets appended to it.&lt;/p&gt;

&lt;p&gt;Consider these two lines:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;www     IN  CNAME   example.com.      ← correct: points to example.com
www     IN  CNAME   example.com       ← WRONG: points to example.com.example.com&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The second line is missing the trailing dot, so the origin (&lt;code&gt;example.com.&lt;/code&gt;) gets appended, producing &lt;code&gt;example.com.example.com.&lt;/code&gt;, which is almost certainly not what you intended. This kind of mistake creates broken resolution that can be maddening to debug because the zone file "looks right" at a glance.&lt;/p&gt;

&lt;p&gt;The rule: if you're writing a complete domain name as a record's target, end it with a dot. If you're writing a name relative to your own domain (like &lt;code&gt;www&lt;/code&gt; or &lt;code&gt;mail&lt;/code&gt;), leave the dot off.&lt;/p&gt;





&lt;h2&gt;The SOA Record&lt;/h2&gt;

&lt;p&gt;Every zone file begins with a Start of Authority (SOA) record. It defines the administrative parameters for the zone and is mandatory. There can be only one SOA record per zone.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@   IN  SOA  ns1.example.com. admin.example.com. (
            2026061501  ; Serial
            7200        ; Refresh
            3600        ; Retry
            1209600     ; Expire
            3600 )      ; Minimum TTL&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Breaking it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@&lt;/code&gt;&lt;/strong&gt; is shorthand for the origin (&lt;code&gt;example.com.&lt;/code&gt;). The &lt;code&gt;@&lt;/code&gt; symbol always means "the current origin."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ns1.example.com.&lt;/code&gt;&lt;/strong&gt; is the primary nameserver for the zone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;admin.example.com.&lt;/code&gt;&lt;/strong&gt; is the administrator's email address, with the &lt;code&gt;@&lt;/code&gt; replaced by a dot. So this represents &lt;code&gt;admin@example.com&lt;/code&gt;. This substitution exists because &lt;code&gt;@&lt;/code&gt; already has a special meaning in zone files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serial (2026061501)&lt;/strong&gt; is a version number for the zone. Every time you change the zone, you increment it. Secondary nameservers compare serials to know when to pull updates. A common convention is the date plus a counter (YYYYMMDDnn).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refresh (7200)&lt;/strong&gt; is how often secondary servers check the primary for changes, in seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retry (3600)&lt;/strong&gt; is how long a secondary waits to retry if a refresh fails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expire (1209600)&lt;/strong&gt; is how long a secondary keeps serving the zone if it can't reach the primary, before giving up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimum TTL (3600)&lt;/strong&gt; controls negative caching, which is how long resolvers cache "this record doesn't exist" (NXDOMAIN) responses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The serial number is the field you'll interact with most. If you edit a zone file but forget to increment the serial, secondary nameservers won't realize there's an update and will keep serving the old records. Most managed DNS providers handle serial incrementing automatically, but in self-hosted setups it's a manual step that's easy to forget.&lt;/p&gt;





&lt;h2&gt;NS Records: Declaring the Nameservers&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;@   IN  NS  ns1.example.com.
@   IN  NS  ns2.example.com.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NS records declare which nameservers are authoritative for the zone. A zone should have at least two for redundancy. These records must match the nameserver delegation set at your registrar (the parent zone). A mismatch between the NS records in your zone file and the delegation at the registrar causes "lame delegation," a common DNS misconfiguration where resolvers are sent to nameservers that don't properly serve the zone.&lt;/p&gt;





&lt;h2&gt;The Resource Records&lt;/h2&gt;

&lt;p&gt;The bulk of a zone file is resource records, each defining one piece of DNS information. Every record follows the same general format:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NAME    TTL   CLASS   TYPE   DATA&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In practice, TTL is often omitted (inheriting the &lt;code&gt;$TTL&lt;/code&gt; default), and CLASS is almost always &lt;code&gt;IN&lt;/code&gt; (Internet). So most records read as &lt;code&gt;NAME IN TYPE DATA&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Common Record Types in a Zone File&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt; maps a name to an IPv4 address: &lt;code&gt;www IN A 203.0.113.10&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAAA&lt;/strong&gt; maps a name to an IPv6 address: &lt;code&gt;www IN AAAA 2001:db8::10&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CNAME&lt;/strong&gt; creates an alias to another name: &lt;code&gt;ftp IN CNAME www.example.com.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MX&lt;/strong&gt; defines mail servers, with a priority value: &lt;code&gt;@ IN MX 10 mail.example.com.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TXT&lt;/strong&gt; holds arbitrary text, used for SPF, DKIM, DMARC, and verification: &lt;code&gt;@ IN TXT "v=spf1 ..."&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS&lt;/strong&gt; declares authoritative nameservers (covered above)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SRV&lt;/strong&gt; defines services with port and priority information&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CAA&lt;/strong&gt; restricts which certificate authorities can issue certificates for the domain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PTR&lt;/strong&gt; maps an IP back to a name (used in reverse DNS zones, covered in our &lt;a href="https://dnsassistant.com/blog/understanding-reverse-dns-ptr-records-and-why-email-deliverability-depends-on-it" rel="noopener noreferrer"&gt;reverse DNS guide&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;The @ Symbol and Bare Records&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;@&lt;/code&gt; in records like &lt;code&gt;@ IN A 203.0.113.10&lt;/code&gt; refers to the zone apex, the bare domain itself (&lt;code&gt;example.com&lt;/code&gt; with no subdomain). This is why the apex can have A records but, as we explained in our &lt;a href="https://dnsassistant.com/blog/a-record-vs-cname" rel="noopener noreferrer"&gt;A record vs CNAME guide&lt;/a&gt;, cannot have a CNAME: the apex must hold the SOA and NS records, and a CNAME can't coexist with other records at the same name.&lt;/p&gt;





&lt;h2&gt;Reverse Zone Files&lt;/h2&gt;

&lt;p&gt;The zone file we've discussed is a forward zone, mapping names to IPs. There are also reverse zone files that map IPs back to names using PTR records. These live under the special &lt;code&gt;in-addr.arpa&lt;/code&gt; (IPv4) or &lt;code&gt;ip6.arpa&lt;/code&gt; (IPv6) hierarchy and are typically managed by whoever controls the IP address block, often your hosting provider rather than you. Reverse zones are essential for email deliverability, which we cover in detail in the reverse DNS article linked above.&lt;/p&gt;





&lt;h2&gt;How Zone Files Relate to Managed DNS&lt;/h2&gt;

&lt;p&gt;If you use a managed DNS provider (Cloudflare, Route 53, Google Cloud DNS, etc.), you probably never see a raw zone file. The provider's dashboard presents records as form fields and tables. Behind the scenes, though, the provider maintains the equivalent of a zone file and serves it from their authoritative nameservers.&lt;/p&gt;

&lt;p&gt;This abstraction is convenient, it handles serial incrementing, validates syntax, and prevents trailing-dot errors, but understanding the underlying zone file structure helps you reason about what the dashboard is actually doing. When a provider offers "zone export" or "import via zone file," they're giving you the raw text representation, which is useful for migrations and backups.&lt;/p&gt;

&lt;p&gt;For self-hosted DNS, the zone file is the real, editable artifact. You edit it directly, increment the serial, and reload the zone. This gives maximum control but also means you're responsible for the syntax, the serial, and the correctness that managed providers handle automatically. We compare these approaches in our &lt;a href="https://dnsassistant.com/blog/self-hosted-vs-managed-dns" rel="noopener noreferrer"&gt;self-hosted vs managed DNS guide&lt;/a&gt;.&lt;/p&gt;





&lt;h2&gt;Common Zone File Mistakes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forgetting the trailing dot&lt;/strong&gt; on fully qualified names, causing the origin to be appended incorrectly. The number one zone file error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not incrementing the serial&lt;/strong&gt; after changes, so secondary nameservers never pick up the update.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple records that conflict&lt;/strong&gt;, like a CNAME coexisting with other records at the same name, which violates DNS rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS records not matching the registrar delegation&lt;/strong&gt;, causing lame delegation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax errors&lt;/strong&gt; (missing parentheses in the SOA, malformed records) that prevent the zone from loading at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In self-hosted environments, DNS server software usually validates the zone file when it loads and refuses to serve a zone with syntax errors, which is a useful safety net but can also cause an outage if a bad edit is deployed without testing.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Helps&lt;/h2&gt;

&lt;p&gt;Whether your records live in a hand-edited zone file or a managed provider's system, what matters is what resolvers actually receive when they query your domain. DNS Assistant monitors that, the live, authoritative answers, rather than the configuration source.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record monitoring&lt;/strong&gt; across all the record types found in a zone file (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, and more), with alerts when any value changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOA serial tracking&lt;/strong&gt; so you can see when your zone has been updated, useful for confirming changes propagated or detecting unexpected modifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS delegation validation&lt;/strong&gt; to catch lame delegation where your zone's NS records don't match the registrar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation&lt;/strong&gt; of the chain of trust that protects your zone's authenticity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel alerting&lt;/strong&gt; via email, Slack, Microsoft Teams, webhooks, and SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially valuable for self-hosted DNS, where a zone file edit that introduces an error, forgets a serial increment, or breaks a delegation can cause problems that are hard to spot from the configuration alone.&lt;/p&gt;





&lt;h2&gt;Check Your Zone&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to query your domain's records and see what your zone is actually serving, including your SOA and NS records. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive view of your DNS configuration.&lt;/p&gt;

&lt;p&gt;For continuous monitoring of everything your zone serves, with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>beginners</category>
      <category>infrastructure</category>
      <category>webdev</category>
    </item>
    <item>
      <title>163 Brands Hijacked Through Abandoned DNS Delegations: Inside the Borrowed Trust Campaign</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Fri, 12 Jun 2026 18:04:29 +0000</pubDate>
      <link>https://dev.to/dnsassistant/163-brands-hijacked-through-abandoned-dns-delegations-inside-the-borrowed-trust-campaign-4je8</link>
      <guid>https://dev.to/dnsassistant/163-brands-hijacked-through-abandoned-dns-delegations-inside-the-borrowed-trust-campaign-4je8</guid>
      <description>&lt;p&gt;163 organizations across more than 30 countries had gambling content served under their own trusted domain names, with valid TLS certificates, clean browser padlocks, and no security alert firing anywhere. Federal government agencies, national healthcare systems, financial institutions, critical infrastructure operators, and major universities were all affected. Some of them had been exposed for over six years.&lt;/p&gt;

&lt;p&gt;The attackers didn't breach a single firewall. They didn't exploit an application vulnerability. They didn't phish anyone. They simply claimed DNS infrastructure that these organizations had abandoned and forgotten to clean up.&lt;/p&gt;

&lt;p&gt;This is the "Borrowed Trust" campaign, &lt;a href="https://cyble.com/blog/borrowed-trust-cloud-dns-takeover-thai-gambling-seo-poisoning/" rel="noopener noreferrer"&gt;documented by Cyble Research and Intelligence Labs in June 2026&lt;/a&gt;. It's one of the clearest, largest-scale demonstrations to date of how abandoned DNS delegations turn into a systematic attack surface. And it's a textbook example of exactly the risk we've written about before: &lt;a href="https://dnsassistant.com/blog/dangling-dns-records-the-hidden-attack-surface-in-your-infrastructure" rel="noopener noreferrer"&gt;dangling DNS records&lt;/a&gt;, exploited at industrial scale.&lt;/p&gt;





&lt;h2&gt;What Happened&lt;/h2&gt;

&lt;p&gt;The campaign was an SEO poisoning operation. The attackers wanted to rank Thai-language online gambling sites in search results, and to do it, they needed domains with strong reputation and authority. Rather than building that reputation themselves, they borrowed it from legitimate enterprises by hijacking abandoned subdomains.&lt;/p&gt;

&lt;p&gt;The discovery started with a single anomaly. During a vulnerability assessment, Cyble researchers noticed strange DNS resolution on a Verizon subdomain environment. What looked like one misconfigured endpoint turned out to be over 1,000 individually named subdomains, each serving Thai-language gambling content under Verizon's trusted domain authority. Following that thread exposed 162 other compromised organizations.&lt;/p&gt;

&lt;p&gt;Each compromised subdomain served a fully rendered gambling application with a valid Let's Encrypt certificate matching the victim's domain. To a browser, a search engine, or a Thai user clicking a search result, the page looked like a legitimate property of the enterprise whose domain it ran under.&lt;/p&gt;





&lt;h2&gt;The Core Vulnerability: Abandoned DNS Delegations&lt;/h2&gt;

&lt;p&gt;The primary mechanism behind the campaign was Azure DNS zone takeover, which accounted for more than 150 of the 163 victims. Understanding it requires understanding how cloud DNS delegation works.&lt;/p&gt;

&lt;p&gt;When an enterprise provisions cloud infrastructure for a project, a common step is to delegate a subdomain to a cloud DNS zone. For Azure, this means adding NS (nameserver) records in the parent domain's DNS that point to Microsoft's Azure nameservers for that environment. The cloud DNS zone then handles all records for that subdomain. The project runs normally.&lt;/p&gt;

&lt;p&gt;The problem is what happens at decommissioning. According to Cyble's analysis, &lt;a href="https://cyble.com/blog/borrowed-trust-cloud-dns-takeover-thai-gambling-seo-poisoning/" rel="noopener noreferrer"&gt;when the project ends and the cloud resources are deleted, the NS delegation in the parent DNS zone is routinely left in place&lt;/a&gt;. It keeps pointing to cloud nameservers that no longer hold authoritative records for the subdomain.&lt;/p&gt;

&lt;p&gt;This dangling delegation becomes exploitable because of how cloud DNS zone creation works. Cloud providers have historically allowed any subscriber to claim a DNS zone by name. An attacker who finds an abandoned delegation can create a new subscription, claim the orphaned zone under that subscription, and instantly inherit the DNS authority that the enterprise's parent zone never revoked.&lt;/p&gt;

&lt;p&gt;Once the attacker controls the zone, they add a single wildcard A record pointing every possible subdomain to their server, then use the now-controlled DNS to pass ACME validation and obtain a wildcard TLS certificate. One wildcard record exposes the entire subdomain namespace of the environment, every entry carrying the victim's TLS-verified brand authority.&lt;/p&gt;





&lt;h2&gt;Four Mechanisms, One Root Cause&lt;/h2&gt;

&lt;p&gt;Cyble identified four distinct compromise mechanisms, but they all stem from the same root cause: a DNS configuration that outlived the infrastructure it was created to serve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure DNS zone takeover (150+ organizations).&lt;/strong&gt; Abandoned NS delegations to Azure nameservers, with the underlying subscription canceled. The attacker claimed the orphaned zones and added wildcard records. Cyble confirmed this with direct evidence: querying Microsoft's own nameservers returned the attacker's wildcard record, and zone SOA serials of 1 proved the zones had been created fresh by the attacker rather than modified from an existing state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DigitalOcean DNS zone takeover (2 organizations).&lt;/strong&gt; The same structural weakness on a different cloud provider. Abandoned DNS zones in canceled accounts became available for re-registration. The attacker's tooling targeted multiple cloud DNS providers, not just Azure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct wildcard misconfiguration (2 organizations).&lt;/strong&gt; An orphaned wildcard A record left directly in the organization's own DNS console when a project was decommissioned, or a compromised DNS management credential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per-subdomain A records (1 organization).&lt;/strong&gt; The Verizon case, where over 1,000 individually named A records were created rather than a single wildcard, implying automated DNS API access or a compromised DNS management credential.&lt;/p&gt;





&lt;h2&gt;Why Nothing Detected It&lt;/h2&gt;

&lt;p&gt;The most unsettling part of this campaign is how completely invisible it was to conventional security tooling. As Cyble notes, the campaign produces no signal in standard security controls. Here's why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Valid TLS certificates.&lt;/strong&gt; The attacker obtained legitimate Let's Encrypt certificates for the victim subdomains. Browsers showed a clean padlock with no warnings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean IP reputation.&lt;/strong&gt; The delivery nodes were standard hosting with no prior threat association. Threat intelligence feeds returned nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trusted domain names.&lt;/strong&gt; The content was served under the victims' own legitimate domains, which carry years of accumulated reputation and trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No exploit delivery.&lt;/strong&gt; Nothing was hacked in the traditional sense. There was no malware, no exploit payload, no perimeter breach to detect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic filtering.&lt;/strong&gt; The backend validated request origin server-side and only served gambling content to traffic from Thailand, keeping the operation focused and limiting scanner exposure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every layer of the operation lived inside legitimate infrastructure: real cloud DNS, real TLS certificates, victim-owned domains, and organic search rankings. That's precisely why traditional controls produced no signal. The only place the attack was visible was at the DNS layer.&lt;/p&gt;





&lt;h2&gt;The Detection That Would Have Worked&lt;/h2&gt;

&lt;p&gt;Cyble's analysis is clear that detection required operating at the DNS layer, and identifies the controls that would have caught this campaign. Every one of them is about DNS visibility.&lt;/p&gt;

&lt;h3&gt;DNS Delegation Auditing&lt;/h3&gt;

&lt;p&gt;The structural prevention control is auditing your NS delegation records. Organizations should enumerate every NS delegation in their parent DNS zones and verify that each corresponding cloud DNS zone actually exists in a subscription they own and actively manage. An NS delegation pointing to a cloud provider where you no longer have a matching, managed zone is a dangling delegation waiting to be claimed.&lt;/p&gt;

&lt;h3&gt;Wildcard DNS Testing&lt;/h3&gt;

&lt;p&gt;A randomized, nonsense hostname query against a delegated subdomain that returns a resolution is a strong signal of compromise. If &lt;code&gt;random-nonsense-12345.dev.yourcompany.com&lt;/code&gt; resolves to an IP, but you never created a wildcard record, someone else did. Cyble recommends treating any such resolution as a compromised zone until proven otherwise.&lt;/p&gt;

&lt;h3&gt;Certificate Transparency Monitoring&lt;/h3&gt;

&lt;p&gt;Every TLS certificate issued by a public CA is logged in public Certificate Transparency logs. An unexpected Let's Encrypt wildcard certificate appearing on a corporate subdomain, especially one that historically used a corporate or premium CA, or had no recent certificate activity, is an anomaly no legitimate provisioning produces. Cyble notes that CT log monitoring would have detected every Azure takeover victim at the moment the attacker's certificate was issued.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Addresses This&lt;/h2&gt;

&lt;p&gt;This campaign is a direct, large-scale validation of why continuous DNS monitoring matters. DNS Assistant is built around exactly the kind of visibility that would have surfaced these compromises.&lt;/p&gt;

&lt;h3&gt;Dangling DNS Detection&lt;/h3&gt;

&lt;p&gt;DNS Assistant checks for dangling DNS records, the exact vulnerability class this campaign exploited, across 22+ cloud provider fingerprints. Records and delegations pointing to decommissioned cloud infrastructure are flagged before an attacker can claim them. This is the core defensive control against the abandoned-delegation problem at the heart of Borrowed Trust.&lt;/p&gt;

&lt;h3&gt;Record and Delegation Change Detection&lt;/h3&gt;

&lt;p&gt;DNS Assistant continuously monitors your DNS records, including NS records, and alerts when they change or when resolution behavior shifts. A subdomain that suddenly begins resolving to an unfamiliar IP, or a wildcard that starts answering queries it never did before, is exactly the kind of change DNS Assistant is designed to surface.&lt;/p&gt;

&lt;h3&gt;Continuous Monitoring, Not Point-in-Time&lt;/h3&gt;

&lt;p&gt;Several victims in this campaign had abandoned delegations sitting exploitable for over six years. A one-time audit conducted before the delegation was abandoned would have shown nothing wrong. The exposure appeared later, when the cloud subscription was canceled but the delegation remained. Only continuous monitoring catches the moment a record becomes dangerous, which can be long after it was created.&lt;/p&gt;

&lt;h3&gt;Full Subdomain and Record Visibility&lt;/h3&gt;

&lt;p&gt;You cannot protect infrastructure you've forgotten you have. DNS Assistant helps you maintain visibility into your DNS records and subdomains, including the forgotten dev, staging, uat, pilot, and lab environments that are the most common source of abandoned delegations.&lt;/p&gt;





&lt;h2&gt;What Organizations Should Do Now&lt;/h2&gt;

&lt;p&gt;Drawing on Cyble's remediation guidance, here are the steps every organization should take:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Enumerate your NS delegations.&lt;/strong&gt; List every NS delegation record in your parent DNS zones. For each one pointing to a cloud provider, verify that a corresponding zone exists in an account or subscription you own and actively manage. Remove any delegation that no longer has a matching, managed zone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit environment-style subdomains.&lt;/strong&gt; Pay special attention to subdomains with names like &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;uat&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;preprod&lt;/code&gt;, &lt;code&gt;pilot&lt;/code&gt;, &lt;code&gt;lab&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;, and &lt;code&gt;sandbox&lt;/code&gt;. These project environments are the most likely to have been decommissioned while leaving delegations behind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test for unexpected wildcard resolution.&lt;/strong&gt; Query randomized nonsense hostnames against your delegated subdomains. Any resolution you didn't configure is a red flag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor Certificate Transparency logs.&lt;/strong&gt; Watch for unexpected certificates issued against your subdomains, especially wildcard certificates from a CA you don't normally use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build DNS cleanup into decommissioning.&lt;/strong&gt; The root cause is that DNS delegations outlive the infrastructure they serve. Make removing DNS records and delegations a mandatory, verified step whenever a project or cloud resource is retired.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor continuously.&lt;/strong&gt; Abandoned delegations can become exploitable years after they're created. Continuous DNS monitoring is the only way to catch the transition from dormant to dangerous.&lt;/li&gt;
&lt;/ol&gt;





&lt;h2&gt;The Takeaway&lt;/h2&gt;

&lt;p&gt;The Borrowed Trust campaign is a reminder that DNS is not static infrastructure you configure once and forget. It's a living attack surface, and the most dangerous parts of it are often the parts you've stopped thinking about: the project that ended, the environment that was torn down, the delegation that was never cleaned up.&lt;/p&gt;

&lt;p&gt;The attackers in this campaign didn't need sophistication. They needed an automated scanner and a list of organizations that had left DNS delegations pointing at cloud zones they no longer owned. One abandoned delegation, beneath one wildcard record, exposed an unlimited subdomain namespace carrying the full authority of a trusted brand. Multiply that by 163 organizations, and you have one of the largest DNS-based reputation-hijacking campaigns documented to date.&lt;/p&gt;

&lt;p&gt;The remediation is simple. The detection is well understood. The gap is visibility, and that gap is exactly what continuous DNS monitoring closes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check your DNS estate now.&lt;/strong&gt; Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; to review your DNS configuration, or use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool&lt;/a&gt; to inspect specific records and delegations.&lt;/p&gt;

&lt;p&gt;For continuous dangling DNS detection and delegation monitoring across your entire domain portfolio, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;





</description>
      <category>dns</category>
      <category>security</category>
      <category>incident</category>
      <category>danglingdns</category>
    </item>
    <item>
      <title>How to Migrate DNS to a New Provider Without Downtime</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Fri, 12 Jun 2026 16:44:52 +0000</pubDate>
      <link>https://dev.to/dnsassistant/how-to-migrate-dns-to-a-new-provider-without-downtime-4fjl</link>
      <guid>https://dev.to/dnsassistant/how-to-migrate-dns-to-a-new-provider-without-downtime-4fjl</guid>
      <description>&lt;p&gt;Migrating your DNS from one provider to another sounds risky. Your entire online presence, your website, your email, your APIs, depends on DNS resolving correctly. A mistake during migration can take everything offline. But with the right process, DNS migration can be done with zero downtime, and it's far less dangerous than it seems.&lt;/p&gt;

&lt;p&gt;The key is understanding that DNS migration isn't a single switch you flip. It's a careful sequence where you prepare the new provider completely, verify it works, and only then redirect traffic, with the old provider standing by as a fallback throughout. Done correctly, users never notice anything changed.&lt;/p&gt;

&lt;p&gt;This guide walks through the complete process: preparation, the actual migration, verification, and the common mistakes that cause the downtime you're trying to avoid.&lt;/p&gt;





&lt;h2&gt;Why Migrate DNS Providers?&lt;/h2&gt;

&lt;p&gt;Organizations move DNS providers for many reasons: better performance through a larger anycast network, lower costs, advanced features (traffic management, better APIs, DNSSEC support), consolidation of services, improved security and DDoS protection, or moving away from a provider that's being deprecated. Whatever the reason, the migration process is the same.&lt;/p&gt;





&lt;h2&gt;Understanding What Actually Changes&lt;/h2&gt;

&lt;p&gt;Before migrating, it's important to understand the two distinct things that can change:&lt;/p&gt;

&lt;h3&gt;1. The Authoritative DNS Provider (Your Records' Host)&lt;/h3&gt;

&lt;p&gt;This is where your DNS records (A, MX, TXT, etc.) are hosted and served. Moving this means recreating your records at the new provider and updating your domain's nameserver delegation to point to them.&lt;/p&gt;

&lt;h3&gt;2. The Nameserver Delegation (at the Registrar)&lt;/h3&gt;

&lt;p&gt;Your domain registrar holds the NS records that tell the world which nameservers are authoritative for your domain. Changing DNS providers means updating this delegation at the registrar to point to the new provider's nameservers.&lt;/p&gt;

&lt;p&gt;The migration is essentially: replicate everything at the new provider, then change the delegation to point to it. The delegation change is the moment of cutover, and it's where careful timing matters.&lt;/p&gt;





&lt;h2&gt;Phase 1: Preparation (Before Touching Anything)&lt;/h2&gt;

&lt;h3&gt;Step 1: Inventory Your Current DNS Records&lt;/h3&gt;

&lt;p&gt;You cannot migrate what you don't know about. Export or document every single DNS record at your current provider. This includes obvious records (A, AAAA, CNAME, MX) and easily forgotten ones (TXT records for SPF, DKIM, DMARC, domain verification; SRV records; CAA records; any subdomains).&lt;/p&gt;

&lt;p&gt;Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to query each record type and confirm your inventory is complete. Many providers also offer a zone file export that captures everything at once. Missing a record during migration is the most common cause of post-migration problems.&lt;/p&gt;

&lt;h3&gt;Step 2: Note Your Current TTL Values&lt;/h3&gt;

&lt;p&gt;Record the TTL for each record. You'll need these to plan timing, and you'll restore them after migration. Pay special attention to your NS record TTLs and your SOA settings.&lt;/p&gt;

&lt;h3&gt;Step 3: Lower TTLs in Advance&lt;/h3&gt;

&lt;p&gt;This is the single most important step for a zero-downtime migration. Several days before the migration, lower the TTLs on your records at the current provider to a short value (300 seconds or lower).&lt;/p&gt;

&lt;p&gt;Why: when you make the cutover, resolvers that have cached your old records will keep serving them until the TTL expires. If your TTL is 86400 seconds (24 hours), some users could be pointed at the old provider for a full day after you switch. By lowering the TTL in advance, you ensure that when you cut over, the old cached entries expire within minutes.&lt;/p&gt;

&lt;p&gt;Lower the TTL at least as far in advance as the current TTL value. If your records currently have a 24-hour TTL, lower them to 300 seconds at least 24 hours (ideally 48) before the migration, so the old high-TTL entries have fully expired from caches by migration time. We cover this in depth in our &lt;a href="https://dnsassistant.com/blog/dns-ttl-best-practices-how-to-choose-the-right-values" rel="noopener noreferrer"&gt;TTL best practices guide&lt;/a&gt;.&lt;/p&gt;





&lt;h2&gt;Phase 2: Set Up the New Provider&lt;/h2&gt;

&lt;h3&gt;Step 4: Recreate All Records at the New Provider&lt;/h3&gt;

&lt;p&gt;At the new DNS provider, create every record from your inventory exactly as it exists at the old provider. Match record types, names, values, and TTLs (using the lowered TTLs). Take your time and double-check each one against your inventory. This is where completeness matters most.&lt;/p&gt;

&lt;h3&gt;Step 5: Verify Records at the New Provider Directly&lt;/h3&gt;

&lt;p&gt;Before changing any delegation, verify that the new provider is serving your records correctly. You can query the new provider's nameservers directly to confirm they return the right answers, even though the delegation hasn't changed yet. Most providers show you the nameserver hostnames assigned to your zone. Confirm each record resolves correctly when querying those nameservers specifically.&lt;/p&gt;

&lt;p&gt;This step is critical: you're confirming the new provider works &lt;em&gt;before&lt;/em&gt; you send any real traffic to it. If something is wrong, you find out now, with zero impact, rather than after cutover.&lt;/p&gt;

&lt;h3&gt;Step 6: Configure DNSSEC (If Used)&lt;/h3&gt;

&lt;p&gt;If your domain uses DNSSEC, this requires special care. DNSSEC migration involves coordinating the signing keys and DS records between providers. The safest approach is often to temporarily disable DNSSEC before migration (remove the DS record at the registrar, wait for it to expire), complete the migration, then re-enable DNSSEC at the new provider. Disabling DNSSEC briefly reduces security during the migration window but prevents the chain-of-trust breakage that causes SERVFAIL outages. Plan this carefully and consult both providers' DNSSEC migration documentation.&lt;/p&gt;





&lt;h2&gt;Phase 3: The Cutover&lt;/h2&gt;

&lt;h3&gt;Step 7: Update Nameserver Delegation at the Registrar&lt;/h3&gt;

&lt;p&gt;This is the actual migration moment. At your domain registrar, update the nameserver (NS) records to point to the new provider's nameservers instead of the old provider's.&lt;/p&gt;

&lt;p&gt;Important: do not delete anything at the old provider yet. Both providers should be serving identical records during the transition. As the delegation change propagates, some resolvers will query the old nameservers and some the new ones. Because both have identical records, users get correct answers regardless of which they hit.&lt;/p&gt;

&lt;h3&gt;Step 8: Understand the Propagation Window&lt;/h3&gt;

&lt;p&gt;The nameserver delegation change is governed by the TTL of the NS records at the TLD level, which is set by the registry (typically 24-48 hours) and is outside your control. During this window, resolution is split between old and new providers. This is why keeping both providers active with identical records is essential. There's no downtime because both answer correctly.&lt;/p&gt;





&lt;h2&gt;Phase 4: Verification and Cleanup&lt;/h2&gt;

&lt;h3&gt;Step 9: Verify the Migration&lt;/h3&gt;

&lt;p&gt;After the delegation change, verify that your domain resolves correctly through the new provider. Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool&lt;/a&gt; to confirm your records return the expected values and that your NS records now show the new provider's nameservers. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; to confirm your full configuration, including email authentication and TLS, is intact.&lt;/p&gt;

&lt;h3&gt;Step 10: Wait Before Decommissioning the Old Provider&lt;/h3&gt;

&lt;p&gt;Do not cancel or delete your zone at the old provider immediately. Wait at least 48-72 hours after the delegation change (longer if the TLD NS TTL is high) to ensure all resolvers worldwide have picked up the new delegation. Deleting the old provider's records while some resolvers are still querying them would cause resolution failures for those users.&lt;/p&gt;

&lt;h3&gt;Step 11: Restore Normal TTLs&lt;/h3&gt;

&lt;p&gt;Once the migration is confirmed stable, raise the TTLs at the new provider back to their normal operating values (3600 seconds for most records, 86400 for NS records). This reduces query load and improves caching efficiency now that you're no longer in a rapid-change window.&lt;/p&gt;

&lt;h3&gt;Step 12: Re-enable DNSSEC (If Applicable)&lt;/h3&gt;

&lt;p&gt;If you disabled DNSSEC for the migration, re-enable it at the new provider and add the new DS record at your registrar. Verify the chain of trust validates correctly.&lt;/p&gt;





&lt;h2&gt;Migration Checklist&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Timing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Prep&lt;/td&gt;
&lt;td&gt;Inventory all records&lt;/td&gt;
&lt;td&gt;1 week before&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prep&lt;/td&gt;
&lt;td&gt;Lower TTLs to 300s&lt;/td&gt;
&lt;td&gt;48 hours before&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;Recreate records at new provider&lt;/td&gt;
&lt;td&gt;Day before&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;Verify new provider directly&lt;/td&gt;
&lt;td&gt;Day before&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cutover&lt;/td&gt;
&lt;td&gt;Update NS at registrar&lt;/td&gt;
&lt;td&gt;Migration time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Verify&lt;/td&gt;
&lt;td&gt;Confirm resolution via new provider&lt;/td&gt;
&lt;td&gt;After cutover&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cleanup&lt;/td&gt;
&lt;td&gt;Decommission old provider&lt;/td&gt;
&lt;td&gt;48-72 hours after&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cleanup&lt;/td&gt;
&lt;td&gt;Restore normal TTLs&lt;/td&gt;
&lt;td&gt;After stable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;





&lt;h2&gt;Common Migration Mistakes&lt;/h2&gt;

&lt;h3&gt;Forgetting Records&lt;/h3&gt;

&lt;p&gt;The most common mistake. An overlooked TXT record breaks email authentication. A missed subdomain breaks a service. A forgotten CAA record blocks certificate renewal. Thorough inventory and verification prevent this. Cross-check the new provider against your documented inventory before and after cutover.&lt;/p&gt;

&lt;h3&gt;Not Lowering TTLs in Advance&lt;/h3&gt;

&lt;p&gt;If you skip the TTL-lowering step, the cutover still works, but resolvers serve cached old records for up to the original TTL duration. With a 24-hour TTL, you get a 24-hour window where some users hit the old provider. If you've already started decommissioning the old provider, those users experience an outage.&lt;/p&gt;

&lt;h3&gt;Deleting the Old Provider Too Soon&lt;/h3&gt;

&lt;p&gt;Decommissioning the old provider before the delegation change has fully propagated causes resolution failures for resolvers still using the old nameservers. Always wait 48-72 hours minimum.&lt;/p&gt;

&lt;h3&gt;Mishandling DNSSEC&lt;/h3&gt;

&lt;p&gt;DNSSEC migration done incorrectly causes SERVFAIL outages, the same failure mode as the &lt;a href="https://dnsassistant.com/blog/how-a-routine-key-rollover-took-down-germany-s-internet-the-de-dnssec-outage" rel="noopener noreferrer"&gt;.de TLD outage&lt;/a&gt;. If your domain uses DNSSEC, handle it deliberately: disable before migration, re-enable after, and verify the chain at each step.&lt;/p&gt;

&lt;h3&gt;Not Monitoring During and After&lt;/h3&gt;

&lt;p&gt;Migration is exactly when you want maximum visibility. If something goes wrong, you want to know immediately, not when users complain.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Helps With Migration&lt;/h2&gt;

&lt;p&gt;DNS Assistant is valuable throughout the migration process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-migration inventory:&lt;/strong&gt; Before migrating, DNS Assistant gives you a clear record of your current DNS configuration, so you know exactly what needs to be replicated at the new provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification:&lt;/strong&gt; After cutover, DNS Assistant confirms your records resolve correctly and that nothing was missed in the migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection during migration:&lt;/strong&gt; DNS Assistant tracks every record change, giving you a clear log of what changed and when, which is invaluable for troubleshooting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS delegation monitoring:&lt;/strong&gt; DNS Assistant confirms your nameserver delegation updated correctly and that the new nameservers respond authoritatively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation:&lt;/strong&gt; If you use DNSSEC, DNS Assistant validates the chain of trust before, during, and after migration, catching the chain-breakage that causes outages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time alerting:&lt;/strong&gt; If anything goes wrong during or after migration, you're notified immediately via email, Slack, Microsoft Teams, webhooks, or SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Having monitoring in place before you migrate means you have a baseline to compare against and immediate visibility into any issues the migration introduces.&lt;/p&gt;





&lt;h2&gt;Get Started&lt;/h2&gt;

&lt;p&gt;Before your next DNS migration, establish a baseline. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; to document your current configuration, and use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool&lt;/a&gt; to inventory your records.&lt;/p&gt;

&lt;p&gt;For continuous monitoring that gives you confidence before, during, and after migration, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>nameserver</category>
      <category>tutorial</category>
      <category>architecture</category>
    </item>
    <item>
      <title>DNS Cache Poisoning Explained (and How DNSSEC Stops It)</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Fri, 12 Jun 2026 16:41:37 +0000</pubDate>
      <link>https://dev.to/dnsassistant/dns-cache-poisoning-explained-and-how-dnssec-stops-it-3mb0</link>
      <guid>https://dev.to/dnsassistant/dns-cache-poisoning-explained-and-how-dnssec-stops-it-3mb0</guid>
      <description>&lt;p&gt;Imagine asking a trusted librarian for directions to a specific address, and an imposter slips in to give you a fake answer before the librarian can respond. You follow the directions, confident they came from a reliable source, and end up somewhere completely different. That's DNS cache poisoning: an attacker injects false information into a DNS resolver's cache, causing everyone who uses that resolver to be sent to the wrong place.&lt;/p&gt;

&lt;p&gt;Cache poisoning (also called DNS spoofing) is one of the most dangerous DNS attacks because it's invisible to the victim. The domain name in the browser looks correct. There's no obvious sign of compromise. But the IP address behind that name has been silently replaced, redirecting users to a malicious server that could harvest credentials, serve malware, or intercept communications.&lt;/p&gt;

&lt;p&gt;This guide explains how cache poisoning works, the famous vulnerability that made it a serious threat, real-world consequences, and how DNSSEC and proper monitoring defend against it.&lt;/p&gt;





&lt;h2&gt;How DNS Caching Creates the Opportunity&lt;/h2&gt;

&lt;p&gt;To understand cache poisoning, you first need to understand DNS caching. When a recursive resolver looks up a domain name, it caches the answer for a period defined by the record's TTL (Time to Live). This caching makes DNS fast and reduces load on authoritative servers, as we explained in our &lt;a href="https://dnsassistant.com/blog/what-is-an-authoritative-vs-recursive-dns-server" rel="noopener noreferrer"&gt;authoritative vs recursive DNS guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The vulnerability is this: if an attacker can trick a resolver into caching a false answer, that poisoned entry is served to every user of that resolver until the TTL expires. One successful poisoning can affect thousands or millions of users, and it persists in the cache without requiring any further action from the attacker.&lt;/p&gt;





&lt;h2&gt;How Cache Poisoning Works&lt;/h2&gt;

&lt;p&gt;DNS over UDP was designed without strong authentication. When a recursive resolver sends a query to an authoritative server, it expects a response that matches two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The query name and type&lt;/strong&gt; (e.g., the A record for &lt;code&gt;yourbank.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A 16-bit transaction ID&lt;/strong&gt; that the resolver included in its query&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a response arrives matching the query and the transaction ID, the resolver accepts it as legitimate and caches it. The attack exploits this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The attacker triggers a query&lt;/strong&gt; by getting the resolver to look up a domain (for example, by causing the victim to load a page that references the target domain).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The attacker floods the resolver with forged responses&lt;/strong&gt;, each guessing the transaction ID and claiming to be from the authoritative server, but containing the attacker's malicious IP address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If a forged response arrives before the legitimate one&lt;/strong&gt; and correctly guesses the transaction ID, the resolver accepts it and caches the malicious record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The poisoned entry is now served to all users&lt;/strong&gt; of that resolver until the TTL expires.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The 16-bit transaction ID has only 65,536 possible values, which is a small enough number that an attacker flooding responses has a reasonable chance of guessing correctly before the real answer arrives.&lt;/p&gt;





&lt;h2&gt;The Kaminsky Vulnerability&lt;/h2&gt;

&lt;p&gt;In 2008, security researcher Dan Kaminsky disclosed a vulnerability that made cache poisoning dramatically more practical than previously believed. Before Kaminsky's discovery, the conventional wisdom was that cache poisoning was difficult because an attacker had a limited window: once the resolver cached the legitimate answer, the attacker had to wait for the TTL to expire before trying again.&lt;/p&gt;

&lt;p&gt;Kaminsky's insight was that an attacker didn't need to wait. By querying for random, non-existent subdomains (&lt;code&gt;random123.yourbank.com&lt;/code&gt;, &lt;code&gt;random456.yourbank.com&lt;/code&gt;, and so on), the attacker could trigger endless fresh queries that weren't cached. For each query, the attacker could attempt to inject a forged response that not only answered the random subdomain but also included malicious authority records redirecting the entire domain.&lt;/p&gt;

&lt;p&gt;This removed the timing limitation and made cache poisoning a practical, fast attack. The disclosure triggered a coordinated, industry-wide patching effort. The primary mitigation was source port randomization.&lt;/p&gt;





&lt;h2&gt;Source Port Randomization: A Partial Fix&lt;/h2&gt;

&lt;p&gt;The immediate response to Kaminsky's vulnerability was to add another piece of randomness that an attacker has to guess: the source port.&lt;/p&gt;

&lt;p&gt;Before the fix, resolvers often used a predictable source port for their queries, so an attacker only had to guess the 16-bit transaction ID. After the fix, resolvers randomized the source port as well, adding another 16 bits of entropy. Now an attacker has to guess both the transaction ID and the source port correctly, expanding the space from about 65,000 possibilities to billions.&lt;/p&gt;

&lt;p&gt;This made cache poisoning much harder, but not impossible. Source port randomization is a mitigation, not a cure. Attacks like SAD DNS (disclosed in 2020 and 2021) found ways to infer the source port through side channels, demonstrating that the underlying weakness still exists. The only complete solution is cryptographic authentication of DNS responses, which is what DNSSEC provides.&lt;/p&gt;





&lt;h2&gt;What Attackers Achieve With Cache Poisoning&lt;/h2&gt;

&lt;p&gt;A successful cache poisoning attack lets the attacker redirect traffic for a domain to a server they control. The consequences include:&lt;/p&gt;

&lt;h3&gt;Credential Harvesting&lt;/h3&gt;

&lt;p&gt;The attacker redirects &lt;code&gt;yourbank.com&lt;/code&gt; to a pixel-perfect phishing clone. Users see the correct domain name in their browser, have no reason to suspect anything, and enter their credentials, which the attacker captures.&lt;/p&gt;

&lt;h3&gt;Malware Distribution&lt;/h3&gt;

&lt;p&gt;The attacker redirects a software update server or download site to a malicious server that serves malware instead of legitimate files. Users and systems that trust the domain download and execute the malicious payload.&lt;/p&gt;

&lt;h3&gt;Man-in-the-Middle Interception&lt;/h3&gt;

&lt;p&gt;The attacker redirects traffic through their own server, intercepting and potentially modifying communications before forwarding them to the real destination. This can capture sensitive data in transit.&lt;/p&gt;

&lt;h3&gt;Email Interception&lt;/h3&gt;

&lt;p&gt;By poisoning MX record lookups, an attacker can redirect email delivery to their own mail server, capturing messages intended for the target domain.&lt;/p&gt;

&lt;h3&gt;Widespread Impact&lt;/h3&gt;

&lt;p&gt;Because the poisoned entry lives in a shared recursive resolver, a single successful attack affects every user of that resolver. Poisoning a major ISP's resolver or a popular public resolver could affect millions of users simultaneously.&lt;/p&gt;





&lt;h2&gt;How DNSSEC Stops Cache Poisoning&lt;/h2&gt;

&lt;p&gt;DNSSEC (DNS Security Extensions) is the definitive defense against cache poisoning. It adds cryptographic signatures to DNS records, allowing resolvers to verify that a response genuinely came from the authoritative server and hasn't been tampered with.&lt;/p&gt;

&lt;p&gt;With DNSSEC, even if an attacker successfully injects a forged response that matches the transaction ID and source port, the resolver checks the cryptographic signature. A forged response won't have a valid signature, because the attacker doesn't have the domain's private signing key. The resolver rejects the forged response and the poisoning fails.&lt;/p&gt;

&lt;p&gt;The chain of trust works like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The root zone vouches for the TLD (.com, .org, etc.) via DS records&lt;/li&gt;
&lt;li&gt;The TLD vouches for your domain via DS records&lt;/li&gt;
&lt;li&gt;Your domain's DNSKEY records validate the RRSIG signatures on your individual records&lt;/li&gt;
&lt;li&gt;A validating resolver checks this entire chain before accepting any answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any signature is invalid or missing, the validating resolver rejects the response. This makes injected forgeries cryptographically detectable. We cover the full mechanism in our &lt;a href="https://dnsassistant.com/blog/what-is-dnssec-and-should-you-enable-it" rel="noopener noreferrer"&gt;guide to DNSSEC&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;The Catch: DNSSEC Adoption&lt;/h3&gt;

&lt;p&gt;DNSSEC only protects domains that have it enabled, and only when resolvers validate it. Global DNSSEC adoption remains incomplete. Many domains aren't signed, and not all resolvers validate signatures. For domains without DNSSEC, cache poisoning remains a viable threat mitigated only by source port randomization and other partial defenses.&lt;/p&gt;

&lt;p&gt;Enabling DNSSEC on your domains is the single most effective step you can take to protect them against cache poisoning.&lt;/p&gt;





&lt;h2&gt;Other Defenses&lt;/h2&gt;

&lt;h3&gt;DNS over HTTPS (DoH) and DNS over TLS (DoT)&lt;/h3&gt;

&lt;p&gt;These protocols encrypt the connection between a client and its recursive resolver, preventing attackers on the network path from injecting forged responses at that stage. They protect the client-to-resolver link, while DNSSEC protects the resolver-to-authoritative link. They're complementary, addressing different parts of the resolution path.&lt;/p&gt;

&lt;h3&gt;Source Port and Transaction ID Randomization&lt;/h3&gt;

&lt;p&gt;Standard in modern resolvers. This raises the bar for attackers but doesn't eliminate the threat entirely, as side-channel attacks have shown.&lt;/p&gt;

&lt;h3&gt;Reducing TTLs Cautiously&lt;/h3&gt;

&lt;p&gt;Shorter TTLs limit how long a poisoned entry persists, but they don't prevent poisoning and they increase query load. This is a minor mitigation, not a primary defense.&lt;/p&gt;

&lt;h3&gt;Monitoring Your Authoritative Records&lt;/h3&gt;

&lt;p&gt;While cache poisoning happens at the resolver level (outside your direct control), monitoring your authoritative DNS lets you detect related attacks and verify your DNSSEC chain is intact and valid.&lt;/p&gt;





&lt;h2&gt;How DNS Assistant Helps&lt;/h2&gt;

&lt;p&gt;Cache poisoning exploits the gap between your authoritative records and what resolvers cache. DNS Assistant helps you maintain the defenses that close that gap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation:&lt;/strong&gt; DNS Assistant continuously validates your DNSSEC chain of trust, confirming that the cryptographic protection against cache poisoning is intact. If your DNSSEC breaks (expired signatures, broken chain), you lose your primary defense against poisoning, and DNS Assistant alerts you immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record monitoring:&lt;/strong&gt; DNS Assistant tracks your authoritative records and alerts on changes. By querying your records the way resolvers do, it confirms that resolution returns the values you expect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOA serial tracking:&lt;/strong&gt; Changes to your zone are reflected in the SOA serial. DNS Assistant tracks this, helping you detect unexpected zone modifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel alerting:&lt;/strong&gt; Get notified of DNS issues via email, Slack, Microsoft Teams, webhooks, or SMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ensuring DNSSEC is enabled and continuously validated is the most important defense against cache poisoning, and monitoring that protection is exactly what DNS Assistant provides.&lt;/p&gt;





&lt;h2&gt;Check Your Protection&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; to query your DNSKEY and DS records and confirm DNSSEC is enabled. Run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; to check your DNSSEC status alongside your full DNS configuration.&lt;/p&gt;

&lt;p&gt;For continuous DNSSEC validation and DNS monitoring with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;





&lt;p&gt;&lt;em&gt;This article explains DNS cache poisoning for educational and defensive purposes. Understanding how these attacks work is essential for defending against them.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dns</category>
      <category>security</category>
      <category>cachepoisoning</category>
      <category>dnsspoofing</category>
    </item>
    <item>
      <title>DNS for Microsoft 365: Every Record You Need and Why</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Thu, 11 Jun 2026 12:20:58 +0000</pubDate>
      <link>https://dev.to/dnsassistant/dns-for-microsoft-365-every-record-you-need-and-why-36na</link>
      <guid>https://dev.to/dnsassistant/dns-for-microsoft-365-every-record-you-need-and-why-36na</guid>
      <description>&lt;p&gt;Setting up Microsoft 365 for your domain requires 6 to 8 DNS records configured correctly. Miss one and Outlook autoconfiguration breaks. Get the SPF record wrong and your email lands in spam. Forget DKIM and forwarded messages fail authentication. Leave DMARC at &lt;code&gt;p=none&lt;/code&gt; and your domain is open to spoofing.&lt;/p&gt;

&lt;p&gt;This guide covers every DNS record Microsoft 365 requires, what each one does, the exact values to use, common mistakes that cause outages, and how to verify your configuration.&lt;/p&gt;





&lt;h2&gt;The Complete Record Set&lt;/h2&gt;

&lt;p&gt;Here's every DNS record a standard Microsoft 365 deployment needs, organized by function. Replace &lt;code&gt;yourcompany&lt;/code&gt; and &lt;code&gt;yourcompany-com&lt;/code&gt; with your actual domain values, which you'll find in the &lt;a href="https://admin.microsoft.com" rel="noopener noreferrer"&gt;Microsoft 365 Admin Center&lt;/a&gt; under Settings, then Domains.&lt;/p&gt;





&lt;h2&gt;1. Domain Verification (TXT Record)&lt;/h2&gt;

&lt;p&gt;Before Microsoft 365 will accept your domain, you need to prove you own it by adding a verification TXT record.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;yourcompany.com.  3600  IN  TXT  "MS=ms12345678"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;MS=ms########&lt;/code&gt; value is unique to your tenant. Find it in the Admin Center when you add your domain. This record can be removed after verification is complete, but there's no harm in leaving it.&lt;/p&gt;





&lt;h2&gt;2. Mail Routing (MX Record)&lt;/h2&gt;

&lt;p&gt;The MX record tells the internet where to deliver email for your domain.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;yourcompany.com.  3600  IN  MX  0 yourcompany-com.mail.protection.outlook.com.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The priority should be &lt;code&gt;0&lt;/code&gt; (highest priority). The target hostname follows the pattern &lt;code&gt;yourdomain-tld.mail.protection.outlook.com&lt;/code&gt;, where dots in your domain name are replaced with hyphens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important update for 2026:&lt;/strong&gt; Microsoft is migrating MX records to a new endpoint format under &lt;code&gt;mx.microsoft&lt;/code&gt; with DNSSEC and DANE support. New domains provisioned after July 2026 will use the new MX format automatically. Existing domains can opt in via PowerShell. The &lt;code&gt;mail.protection.outlook.com&lt;/code&gt; endpoint continues to work, but the new endpoint provides stronger transport security. Check &lt;a href="https://learn.microsoft.com/en-us/microsoft-365/enterprise/external-domain-name-system-records?view=o365-worldwide" rel="noopener noreferrer"&gt;Microsoft's documentation&lt;/a&gt; for the latest guidance.&lt;/p&gt;

&lt;h3&gt;Common MX Mistakes&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Leaving old MX records in place.&lt;/strong&gt; If you're migrating from another email provider, remove their MX records. Having two sets of MX records means email is split between providers based on priority values, causing inconsistent delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong priority.&lt;/strong&gt; The Microsoft MX record should have the lowest priority number (highest priority). If another MX record has a lower number, some email will route there instead.&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;3. Autodiscover (CNAME Record)&lt;/h2&gt;

&lt;p&gt;Autodiscover enables Outlook and other email clients to automatically configure connection settings (server addresses, ports, protocols) without the user manually entering them.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;autodiscover.yourcompany.com.  3600  IN  CNAME  autodiscover.outlook.com.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is one of the most frequently forgotten records, and the symptoms are frustrating: Outlook prompts users for server settings, mobile devices fail to set up email, and the "Repair account" option in Outlook doesn't work.&lt;/p&gt;

&lt;h3&gt;Migration Warning&lt;/h3&gt;

&lt;p&gt;If you're migrating from on-premises Exchange, check for an existing &lt;code&gt;autodiscover&lt;/code&gt; A record or internal Service Connection Point (SCP) that might take priority over the CNAME. Outlook checks multiple autodiscover locations in a specific order, and an old on-premises record can override the Microsoft 365 CNAME, causing Outlook to attempt connecting to the old server after migration.&lt;/p&gt;





&lt;h2&gt;4. SPF Record (TXT Record)&lt;/h2&gt;

&lt;p&gt;SPF tells receiving mail servers that Microsoft 365 is authorized to send email on behalf of your domain.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;yourcompany.com.  3600  IN  TXT  "v=spf1 include:spf.protection.outlook.com -all"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you also send email through other services (marketing platforms, CRM, transactional email providers), add their includes too:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;"v=spf1 include:spf.protection.outlook.com include:sendgrid.net include:_spf.salesforce.com -all"&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Critical SPF Rules&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Only one SPF record per domain.&lt;/strong&gt; If you have two TXT records starting with &lt;code&gt;v=spf1&lt;/code&gt;, SPF evaluation returns a permanent error. Combine all includes into a single record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay under 10 DNS lookups.&lt;/strong&gt; Each &lt;code&gt;include&lt;/code&gt; counts as a lookup, and nested includes compound the count. Microsoft's &lt;code&gt;include:spf.protection.outlook.com&lt;/code&gt; alone uses several lookups. Monitor your total count as you add services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use &lt;code&gt;-all&lt;/code&gt; in production.&lt;/strong&gt; Start with &lt;code&gt;~all&lt;/code&gt; (soft fail) during initial setup, then switch to &lt;code&gt;-all&lt;/code&gt; (hard fail) once you've confirmed all legitimate senders are covered.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check your current SPF record with the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt; by querying TXT records for your domain.&lt;/p&gt;





&lt;h2&gt;5. DKIM (CNAME Records)&lt;/h2&gt;

&lt;p&gt;DKIM adds cryptographic signatures to outgoing email, proving messages haven't been modified in transit. Microsoft 365 requires two CNAME records for DKIM:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;selector1._domainkey.yourcompany.com.  3600  IN  CNAME  selector1-yourcompany-com._domainkey.yourcompany.onmicrosoft.com.
selector2._domainkey.yourcompany.com.  3600  IN  CNAME  selector2-yourcompany-com._domainkey.yourcompany.onmicrosoft.com.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The exact CNAME targets are unique to your tenant. Find them in the Microsoft 365 Defender portal under Email and Collaboration, then Policies, then DKIM.&lt;/p&gt;

&lt;h3&gt;Enabling DKIM&lt;/h3&gt;

&lt;p&gt;Adding the CNAME records alone doesn't enable DKIM signing. After the DNS records are in place and propagated, you must enable DKIM in the Defender portal by toggling the "Sign messages for this domain with DKIM signatures" switch. Microsoft will verify that the CNAME records resolve correctly before allowing activation.&lt;/p&gt;

&lt;p&gt;This two-step process (DNS first, then portal activation) trips up many admins who add the records and assume DKIM is working. Always verify in the portal that signing is active.&lt;/p&gt;





&lt;h2&gt;6. DMARC (TXT Record)&lt;/h2&gt;

&lt;p&gt;DMARC ties SPF and DKIM together and defines what happens when messages fail authentication.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;_dmarc.yourcompany.com.  3600  IN  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@yourcompany.com; pct=100"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Start with &lt;code&gt;p=none&lt;/code&gt; to collect reports without affecting delivery, then progress to &lt;code&gt;p=quarantine&lt;/code&gt; and finally &lt;code&gt;p=reject&lt;/code&gt; once you're confident all legitimate sending sources are authenticated.&lt;/p&gt;

&lt;p&gt;Consider adding &lt;code&gt;sp=reject&lt;/code&gt; to protect subdomains:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;"v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-reports@yourcompany.com; pct=100"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;For a detailed walkthrough of the DMARC deployment process, see our &lt;a href="https://dnsassistant.com/blog/spf-dkim-and-dmarc-explained-the-complete-email-authentication-guide" rel="noopener noreferrer"&gt;SPF, DKIM, and DMARC guide&lt;/a&gt;.&lt;/p&gt;





&lt;h2&gt;7. SRV Records (Skype for Business / Teams)&lt;/h2&gt;

&lt;p&gt;If your organization uses Skype for Business Online or is in a hybrid configuration with Teams, two SRV records are required:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;_sip._tls.yourcompany.com.        3600  IN  SRV  100 1 443 sipdir.online.lync.com.
_sipfederationtls._tcp.yourcompany.com.  3600  IN  SRV  100 1 5061 sipfed.online.lync.com.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The first enables SIP connectivity for presence and instant messaging. The second enables SIP federation, allowing communication with external organizations.&lt;/p&gt;

&lt;p&gt;For organizations fully on Microsoft Teams with no Skype for Business, Microsoft's current guidance is that these SRV records are optional but recommended for backward compatibility and federation scenarios.&lt;/p&gt;





&lt;h2&gt;8. Additional CNAME Records (Optional)&lt;/h2&gt;

&lt;p&gt;Depending on your Microsoft 365 services, you may need additional CNAME records for Exchange Online Protection and Mobile Device Management:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;enterpriseregistration.yourcompany.com.   3600  IN  CNAME  enterpriseregistration.windows.net.
enterpriseenrollment.yourcompany.com.     3600  IN  CNAME  enterpriseenrollment.manage.microsoft.com.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;These are used for Azure Active Directory device registration and Intune MDM enrollment. They're required if you use Azure AD Join or Intune for device management.&lt;/p&gt;





&lt;h2&gt;Complete Record Summary&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Record&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Verification&lt;/td&gt;
&lt;td&gt;TXT&lt;/td&gt;
&lt;td&gt;@&lt;/td&gt;
&lt;td&gt;MS=ms########&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mail routing&lt;/td&gt;
&lt;td&gt;MX&lt;/td&gt;
&lt;td&gt;@&lt;/td&gt;
&lt;td&gt;0 yourcompany-com.mail.protection.outlook.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Autodiscover&lt;/td&gt;
&lt;td&gt;CNAME&lt;/td&gt;
&lt;td&gt;autodiscover&lt;/td&gt;
&lt;td&gt;autodiscover.outlook.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SPF&lt;/td&gt;
&lt;td&gt;TXT&lt;/td&gt;
&lt;td&gt;@&lt;/td&gt;
&lt;td&gt;v=spf1 include:spf.protection.outlook.com -all&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DKIM (key 1)&lt;/td&gt;
&lt;td&gt;CNAME&lt;/td&gt;
&lt;td&gt;selector1._domainkey&lt;/td&gt;
&lt;td&gt;selector1-yourco-com._domainkey.yourco.onmicrosoft.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DKIM (key 2)&lt;/td&gt;
&lt;td&gt;CNAME&lt;/td&gt;
&lt;td&gt;selector2._domainkey&lt;/td&gt;
&lt;td&gt;selector2-yourco-com._domainkey.yourco.onmicrosoft.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DMARC&lt;/td&gt;
&lt;td&gt;TXT&lt;/td&gt;
&lt;td&gt;_dmarc&lt;/td&gt;
&lt;td&gt;v=DMARC1; p=reject; rua=mailto:reports@yourco.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SIP&lt;/td&gt;
&lt;td&gt;SRV&lt;/td&gt;
&lt;td&gt;_sip._tls&lt;/td&gt;
&lt;td&gt;100 1 443 sipdir.online.lync.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SIP Federation&lt;/td&gt;
&lt;td&gt;SRV&lt;/td&gt;
&lt;td&gt;_sipfederationtls._tcp&lt;/td&gt;
&lt;td&gt;100 1 5061 sipfed.online.lync.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;





&lt;h2&gt;Verification Checklist&lt;/h2&gt;

&lt;p&gt;After configuring all records, verify each one before considering the deployment complete:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MX record:&lt;/strong&gt; Use the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool&lt;/a&gt; to query MX records for your domain. You should see only the Microsoft 365 endpoint with the lowest priority number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPF record:&lt;/strong&gt; Query TXT records and verify a single SPF record exists with &lt;code&gt;include:spf.protection.outlook.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DKIM CNAMEs:&lt;/strong&gt; Query CNAME records for &lt;code&gt;selector1._domainkey.yourcompany.com&lt;/code&gt; and &lt;code&gt;selector2._domainkey.yourcompany.com&lt;/code&gt;. Both should resolve to your onmicrosoft.com targets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DKIM activation:&lt;/strong&gt; Confirm in the Microsoft 365 Defender portal that DKIM signing is enabled (not just that the DNS records exist).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DMARC:&lt;/strong&gt; Query TXT records for &lt;code&gt;_dmarc.yourcompany.com&lt;/code&gt;. Verify the policy and reporting address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autodiscover:&lt;/strong&gt; Query CNAME for &lt;code&gt;autodiscover.yourcompany.com&lt;/code&gt;. Should resolve to &lt;code&gt;autodiscover.outlook.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send test email:&lt;/strong&gt; Send a message to a Gmail address and inspect the email headers for &lt;code&gt;spf=pass&lt;/code&gt;, &lt;code&gt;dkim=pass&lt;/code&gt;, and &lt;code&gt;dmarc=pass&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a comprehensive scan of your DNS and email authentication configuration, run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt;.&lt;/p&gt;





&lt;h2&gt;Common Problems After Setup&lt;/h2&gt;

&lt;h3&gt;Outlook Keeps Prompting for Credentials&lt;/h3&gt;

&lt;p&gt;Usually caused by a missing or incorrect autodiscover CNAME. Can also occur if an on-premises autodiscover record is taking priority over the Microsoft 365 CNAME.&lt;/p&gt;

&lt;h3&gt;Email Going to Spam at External Recipients&lt;/h3&gt;

&lt;p&gt;Check SPF (is Microsoft's include present?), DKIM (is signing enabled in the portal, not just DNS?), and DMARC (is the policy set?). All three must pass for optimal deliverability. Also verify your sending IP has a valid PTR record (see our &lt;a href="https://dnsassistant.com/blog/reverse-dns-ptr-records-email-deliverability" rel="noopener noreferrer"&gt;reverse DNS guide&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;Email From Third-Party Services Failing SPF&lt;/h3&gt;

&lt;p&gt;If you send email through services beyond Microsoft 365 (marketing tools, CRM, ticketing systems), each one needs to be included in your SPF record. Adding a new service without updating SPF means messages from that service fail SPF checks.&lt;/p&gt;

&lt;h3&gt;DKIM Showing as "Not Enabled" Despite DNS Records&lt;/h3&gt;

&lt;p&gt;The CNAME records are necessary but not sufficient. You must also enable DKIM signing in the Microsoft 365 Defender portal. The portal verifies the CNAME records resolve before allowing activation. If activation fails, the CNAME targets are likely incorrect or haven't propagated yet.&lt;/p&gt;





&lt;h2&gt;Ongoing Monitoring&lt;/h2&gt;

&lt;p&gt;Microsoft 365 DNS records are configured once but can break over time. Common causes include well-intentioned changes that accidentally modify SPF, DKIM key rotations that require CNAME updates, domain transfers that drop existing records, and security incidents that modify MX routing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DNS Assistant monitors all Microsoft 365 DNS records continuously&lt;/strong&gt; and alerts your team when anything changes. Whether it's an MX record modification that reroutes email, an SPF change that breaks authentication, a missing DKIM CNAME after a domain migration, or a DMARC policy downgrade, you'll know immediately rather than discovering it when users report email problems.&lt;/p&gt;

&lt;p&gt;For continuous monitoring of your Microsoft 365 DNS configuration, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>dns</category>
      <category>microsoft365</category>
      <category>basic</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Self-Hosted vs. Managed DNS: Pros, Cons, and Security Implications</title>
      <dc:creator>Kishore Bhavnanie</dc:creator>
      <pubDate>Thu, 11 Jun 2026 12:18:25 +0000</pubDate>
      <link>https://dev.to/dnsassistant/self-hosted-vs-managed-dns-pros-cons-and-security-implications-amk</link>
      <guid>https://dev.to/dnsassistant/self-hosted-vs-managed-dns-pros-cons-and-security-implications-amk</guid>
      <description>&lt;p&gt;When you register a domain, one of the first decisions you make is where your DNS lives. Most organizations default to their registrar's DNS service (&lt;a href="https://www.godaddy.com/" rel="noopener noreferrer"&gt;GoDaddy&lt;/a&gt;, &lt;a href="https://www.namecheap.com/" rel="noopener noreferrer"&gt;Namecheap&lt;/a&gt;, &lt;a href="https://domains.squarespace.com/" rel="noopener noreferrer"&gt;Squarespace&lt;/a&gt;) or a managed provider (&lt;a href="https://www.cloudflare.com/dns/" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt;, &lt;a href="https://aws.amazon.com/route53/" rel="noopener noreferrer"&gt;AWS Route 53&lt;/a&gt;, &lt;a href="https://azure.microsoft.com/en-us/products/dns" rel="noopener noreferrer"&gt;Azure DNS&lt;/a&gt;). Some, particularly those with strict compliance requirements or complex internal architectures, run their own authoritative nameservers using &lt;a href="https://www.isc.org/bind/" rel="noopener noreferrer"&gt;BIND&lt;/a&gt;, &lt;a href="https://www.powerdns.com/" rel="noopener noreferrer"&gt;PowerDNS&lt;/a&gt;, &lt;a href="https://www.knot-dns.cz/" rel="noopener noreferrer"&gt;Knot&lt;/a&gt;, or &lt;a href="https://nlnetlabs.nl/projects/nsd/about/" rel="noopener noreferrer"&gt;NSD&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The choice between self-hosted and managed DNS isn't just a technical preference. It affects your uptime, your security posture, your operational burden, and your ability to respond to incidents. Each approach has legitimate strengths and real tradeoffs.&lt;/p&gt;

&lt;p&gt;This guide breaks down both options across the dimensions that matter: reliability, security, performance, control, cost, and operational complexity.&lt;/p&gt;





&lt;h2&gt;What "Self-Hosted" and "Managed" Actually Mean&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Self-hosted DNS&lt;/strong&gt; means you operate your own authoritative nameservers. You install DNS server software (BIND, PowerDNS, Knot DNS, NSD) on infrastructure you control, configure zones, manage records, handle replication between primary and secondary servers, and maintain the servers themselves. Your nameservers are listed at the registrar as the authoritative source for your domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managed DNS&lt;/strong&gt; means a third-party provider operates the authoritative nameservers on your behalf. You configure records through their dashboard or API, and they handle server infrastructure, global distribution, DDoS protection, and availability. Providers include Cloudflare, AWS Route 53, &lt;a href="https://cloud.google.com/dns" rel="noopener noreferrer"&gt;Google Cloud DNS&lt;/a&gt;, Azure DNS, &lt;a href="https://www.ibm.com/products/ns1-connect" rel="noopener noreferrer"&gt;NS1 (now IBM)&lt;/a&gt;, &lt;a href="https://www.oracle.com/cloud/networking/dns/" rel="noopener noreferrer"&gt;Dyn (now Oracle)&lt;/a&gt;, and dozens of others.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;hybrid approach&lt;/strong&gt; is also common: using a managed provider for public-facing domains while running self-hosted DNS for internal zones (split-horizon DNS), or using a managed provider as a secondary alongside self-hosted primaries for redundancy.&lt;/p&gt;





&lt;h2&gt;Reliability&lt;/h2&gt;

&lt;h3&gt;Managed DNS&lt;/h3&gt;

&lt;p&gt;Major managed DNS providers operate globally distributed anycast networks with hundreds of points of presence. Cloudflare's DNS runs on over 300 data centers worldwide. AWS Route 53's SLA guarantees 100% availability. These providers handle billions of queries per day and have dedicated teams managing capacity, failover, and DDoS mitigation around the clock.&lt;/p&gt;

&lt;p&gt;The result is that managed DNS achieves availability levels that are extremely difficult to replicate in-house. DNS resolution latency is also lower because anycast routing directs queries to the nearest point of presence.&lt;/p&gt;

&lt;p&gt;The tradeoff: you're dependent on the provider. If Cloudflare has an outage (and they have, including notable incidents in 2022 and 2023), every domain using their DNS is affected simultaneously. You have no ability to fix or work around the problem. You wait.&lt;/p&gt;

&lt;h3&gt;Self-Hosted DNS&lt;/h3&gt;

&lt;p&gt;Self-hosted DNS gives you direct control over availability, but achieving it is your responsibility. You need at least two geographically separated nameservers (most registries require a minimum of two) with independent network paths. You need to handle capacity planning, server maintenance, OS patching, DNS software updates, and DDoS mitigation yourself.&lt;/p&gt;

&lt;p&gt;Most organizations running self-hosted DNS don't have the infrastructure to match a managed provider's global distribution. A typical setup is two servers in two data centers, which provides basic redundancy but not the global coverage or DDoS resilience that managed providers offer.&lt;/p&gt;

&lt;p&gt;The advantage: your DNS availability is decoupled from any third party. A Cloudflare outage doesn't affect you. A Route 53 incident doesn't affect you. Your uptime depends on your own infrastructure and your own team.&lt;/p&gt;





&lt;h2&gt;Security&lt;/h2&gt;

&lt;h3&gt;Managed DNS&lt;/h3&gt;

&lt;p&gt;Managed providers handle DDoS protection, rate limiting, and infrastructure security as part of the service. Cloudflare, for example, absorbs DNS DDoS attacks across their global network without any action required from you. Most providers also offer DNSSEC signing with automated key rotation and signature refresh.&lt;/p&gt;

&lt;p&gt;The security concern with managed DNS is account security. If an attacker compromises your DNS provider account (through phished credentials, a weak password, or a missing MFA configuration), they can modify any record on any domain in your account. DNS provider account compromise is one of the most common vectors for DNS hijacking. The provider's security becomes your security.&lt;/p&gt;

&lt;p&gt;Additionally, you're trusting the provider's employees and systems with the ability to modify your DNS. Insider threats, software bugs, and operational errors at the provider level can affect your domains.&lt;/p&gt;

&lt;h3&gt;Self-Hosted DNS&lt;/h3&gt;

&lt;p&gt;Self-hosted DNS eliminates the third-party trust surface. No provider account can be compromised to modify your records. No provider employee has access to your zone data. Your attack surface is limited to your own infrastructure and your own team.&lt;/p&gt;

&lt;p&gt;The challenge: you're now responsible for all security aspects that managed providers handle for you. This includes DDoS mitigation (DNS amplification attacks can generate massive traffic volumes), DNSSEC key management (key generation, rotation, signature refresh, DS record coordination with the registrar), software vulnerability patching (BIND has had numerous critical CVEs over its history), and access control to the DNS server itself.&lt;/p&gt;

&lt;p&gt;DNSSEC is particularly demanding in a self-hosted environment. Managed providers handle DNSSEC automatically. Self-hosted DNSSEC requires you to manage Zone Signing Keys (ZSK), Key Signing Keys (KSK), RRSIG signature refresh schedules, and DS record updates at the registrar during key rollovers. A missed signature refresh or a botched key rollover can take your domain offline for every validating resolver, as the &lt;a href="https://dnsassistant.com/blog/how-a-routine-key-rollover-took-down-germany-s-internet-the-de-dnssec-outage" rel="noopener noreferrer"&gt;.de TLD DNSSEC outage&lt;/a&gt; demonstrated at national scale.&lt;/p&gt;





&lt;h2&gt;Performance&lt;/h2&gt;

&lt;h3&gt;Managed DNS&lt;/h3&gt;

&lt;p&gt;Managed providers with global anycast networks deliver the lowest resolution latency for users worldwide. A query from Tokyo hits a local point of presence rather than crossing the Pacific to reach your server in Virginia. This latency difference (typically 5-50ms vs. 100-300ms) compounds across the multiple DNS lookups involved in a typical web page load.&lt;/p&gt;

&lt;p&gt;Some managed providers also offer advanced traffic management: GeoDNS (returning different IPs based on the querier's location), weighted routing, latency-based routing, and health-checked failover. These capabilities require global infrastructure that self-hosted DNS can't easily replicate.&lt;/p&gt;

&lt;h3&gt;Self-Hosted DNS&lt;/h3&gt;

&lt;p&gt;Self-hosted DNS performance depends on your server locations and network connectivity. With two servers in US data centers, resolution latency for European or Asian users will be higher than with a managed provider. You can improve this by adding more servers in more locations, but each additional server adds operational overhead.&lt;/p&gt;

&lt;p&gt;For organizations with a regional user base (all users in one country or continent), the performance difference may be negligible. For global audiences, managed DNS has a significant edge.&lt;/p&gt;





&lt;h2&gt;Control and Flexibility&lt;/h2&gt;

&lt;h3&gt;Self-Hosted DNS&lt;/h3&gt;

&lt;p&gt;This is where self-hosted DNS excels. You have complete control over your configuration: custom record types, non-standard TTLs, complex zone delegation structures, split-horizon views, response rate limiting policies, dynamic DNS updates, and integration with internal systems. If your DNS software supports it, you can configure it.&lt;/p&gt;

&lt;p&gt;Self-hosted DNS also integrates naturally with configuration management tools (Ansible, Terraform, Puppet) and version control systems. Your zone files can be stored in Git, reviewed in pull requests, and deployed through CI/CD pipelines.&lt;/p&gt;

&lt;h3&gt;Managed DNS&lt;/h3&gt;

&lt;p&gt;Managed providers offer the features that most organizations need: all standard record types, API access, programmatic management, and integration with their broader cloud ecosystem (Route 53 integrates with AWS services, Azure DNS with Azure services, Cloudflare DNS with Cloudflare's CDN and security products).&lt;/p&gt;

&lt;p&gt;The limitation is that you're constrained to the provider's feature set and API. If you need a capability the provider doesn't offer (a specific EDNS option, an unusual record type, or a custom response policy), you can't add it. Provider-specific restrictions also apply: some providers don't support all record types, have limits on the number of records per zone, or restrict TTL values to specific ranges.&lt;/p&gt;





&lt;h2&gt;Cost&lt;/h2&gt;

&lt;h3&gt;Managed DNS&lt;/h3&gt;

&lt;p&gt;Many managed DNS providers offer free tiers that cover basic needs. Cloudflare's free plan includes DNS with no query limits. Route 53 charges $0.50 per hosted zone per month plus $0.40 per million queries. Google Cloud DNS charges $0.20 per zone per month plus $0.40 per million queries. For most organizations, managed DNS costs are negligible.&lt;/p&gt;

&lt;p&gt;Enterprise plans with advanced features (DNSSEC management, traffic management, dedicated support, SLA guarantees) cost more, typically $50-500+/month depending on the provider and feature set.&lt;/p&gt;

&lt;h3&gt;Self-Hosted DNS&lt;/h3&gt;

&lt;p&gt;The DNS software itself (BIND, PowerDNS, Knot, NSD) is open source and free. The costs are in the infrastructure and operations: at minimum two servers (or VMs) in separate locations, bandwidth, monitoring, DDoS mitigation, and the engineering time to manage it all.&lt;/p&gt;

&lt;p&gt;A basic self-hosted setup (two VPS instances) might cost $20-50/month in infrastructure. But the operational cost, measured in engineer hours for maintenance, patching, DNSSEC management, troubleshooting, and incident response, is significantly higher than the subscription cost of a managed provider.&lt;/p&gt;





&lt;h2&gt;When to Use Each Approach&lt;/h2&gt;

&lt;h3&gt;Choose Managed DNS When&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You need global performance with low resolution latency worldwide&lt;/li&gt;
&lt;li&gt;You want DDoS protection without building your own mitigation infrastructure&lt;/li&gt;
&lt;li&gt;You want automated DNSSEC with hands-off key rotation&lt;/li&gt;
&lt;li&gt;Your team doesn't have dedicated DNS engineering expertise&lt;/li&gt;
&lt;li&gt;You want to minimize operational overhead for commodity infrastructure&lt;/li&gt;
&lt;li&gt;You need advanced traffic management (GeoDNS, failover, weighted routing)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Choose Self-Hosted DNS When&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Compliance or regulatory requirements mandate that DNS data stays on infrastructure you control&lt;/li&gt;
&lt;li&gt;You need complete configuration flexibility that managed providers can't offer&lt;/li&gt;
&lt;li&gt;You want zero dependency on third-party providers for critical infrastructure&lt;/li&gt;
&lt;li&gt;You have a dedicated DNS or infrastructure engineering team&lt;/li&gt;
&lt;li&gt;You operate complex internal DNS architectures (split-horizon, dynamic updates, custom plugins)&lt;/li&gt;
&lt;li&gt;You need to integrate DNS with internal systems that don't have managed provider API support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Consider a Hybrid Approach When&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You need both internal and external DNS with different requirements&lt;/li&gt;
&lt;li&gt;You want managed DNS for public-facing domains but self-hosted for internal zones&lt;/li&gt;
&lt;li&gt;You want a managed provider as a secondary for redundancy alongside self-hosted primaries&lt;/li&gt;
&lt;li&gt;You're migrating from self-hosted to managed and need a transition period&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;Monitoring Matters Regardless of Approach&lt;/h2&gt;

&lt;p&gt;Whether you use managed DNS, self-hosted DNS, or a hybrid, monitoring is not optional. Each approach has its own failure modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managed DNS risks:&lt;/strong&gt; Provider outages, account compromise, unauthorized changes through the provider's dashboard, misconfiguration via API automation, provider-side bugs that affect your records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-hosted DNS risks:&lt;/strong&gt; Server outages, DNSSEC signature expiration, software vulnerabilities, misconfigurations in zone files, DDoS attacks overwhelming your infrastructure, lame delegation after server changes.&lt;/p&gt;

&lt;p&gt;DNS Assistant monitors your DNS records regardless of where they're hosted. The platform checks what resolvers actually see, not what your provider's dashboard shows. This means you catch issues whether they originate from your managed provider, your self-hosted infrastructure, your registrar, or the TLD registry.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record change detection&lt;/strong&gt; catches unauthorized modifications regardless of how they were made&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNSSEC validation&lt;/strong&gt; verifies the chain of trust end-to-end, catching signing failures in both managed and self-hosted environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS delegation monitoring&lt;/strong&gt; detects lame delegation, nameserver changes, and delegation mismatches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WHOIS monitoring&lt;/strong&gt; tracks registration changes that could indicate unauthorized domain transfers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel alerting&lt;/strong&gt; ensures your team knows about issues via email, Slack, Microsoft Teams, webhooks, or SMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check your current DNS configuration with the &lt;a href="https://dnsassistant.com/tools" rel="noopener noreferrer"&gt;DNS lookup tool at dnsassistant.com/tools&lt;/a&gt;, or run a &lt;a href="https://dnsassistant.com/tools/domain-report" rel="noopener noreferrer"&gt;Free Domain Risk Report&lt;/a&gt; for a comprehensive scan.&lt;/p&gt;

&lt;p&gt;For continuous monitoring with real-time alerting, &lt;strong&gt;&lt;a href="https://dnsassistant.com/register" rel="noopener noreferrer"&gt;sign up at dnsassistant.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>dns</category>
      <category>infrastructure</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
