<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Logical Disconnect · dns</title>
    <link>https://staging.logicaldisconnect.org/</link>
    <description>Logical Disconnect · dns</description>
    <language>en</language>
    <lastBuildDate>Mon, 21 Sep 2026 00:00:00 -0400</lastBuildDate>
    <atom:link href="https://staging.logicaldisconnect.org/feed/topics/dns.xml" rel="self" type="application/rss+xml"></atom:link>
    <item>
      <title>Note, 21 September 2026</title>
      <link>https://staging.logicaldisconnect.org/notes/2026/unifi-dns-profile-reset/</link>
      <guid isPermaLink="true">https://staging.logicaldisconnect.org/notes/2026/unifi-dns-profile-reset/</guid>
      <pubDate>Mon, 21 Sep 2026 00:00:00 -0400</pubDate>
      <category>dns</category>
      <category>home-network</category>
      <description><![CDATA[<p>The UniFi controller update reset my DNS filtering profile to &ldquo;default&rdquo; without a word. Twenty minutes of very confident debugging later: it was the router, and the router had told nobody.</p>
]]></description>
    </item>
    <item>
      <title>Postcard from Porto, Portugal, 3 September 2026</title>
      <link>https://staging.logicaldisconnect.org/postcards/2026/porto-balcony-routers/</link>
      <guid isPermaLink="true">https://staging.logicaldisconnect.org/postcards/2026/porto-balcony-routers/</guid>
      <pubDate>Thu, 03 Sep 2026 00:00:00 -0400</pubDate>
      <category>travel</category>
      <category>dns</category>
      <description><![CDATA[<p>Everyone&rsquo;s router is on the balcony here, strung up beside the washing, and honestly it works better than mine. Nobody asked a consultant. They just put the antenna where the signal needed to be.</p>
]]></description>
    </item>
    <item>
      <title>Note, 30 August 2026</title>
      <link>https://staging.logicaldisconnect.org/notes/2026/airport-captive-portal/</link>
      <guid isPermaLink="true">https://staging.logicaldisconnect.org/notes/2026/airport-captive-portal/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 -0400</pubDate>
      <category>dns</category>
      <description><![CDATA[<p>Airport wi-fi that works for everything except one app is almost always a captive portal that has expired quietly in the background. Load any plain HTTP page and it will admit it.</p>
]]></description>
    </item>
    <item>
      <title>Why your Wi-Fi is fine and your DNS is not</title>
      <link>https://staging.logicaldisconnect.org/2026/wifi-fine-dns-not/</link>
      <guid isPermaLink="true">https://staging.logicaldisconnect.org/2026/wifi-fine-dns-not/</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 -0400</pubDate>
      <category>dns</category>
      <category>home-network</category>
      <category>debugging</category>
      <description><![CDATA[<p>Someone hands you a laptop and says the internet is broken. Before you touch anything, notice that they have just made a claim about a system with at least six independent layers, and that they are almost certainly wrong about which one.</p>
<p>This is not a criticism. I do it too. “The internet is down” is a perfectly good description of the <em>experience</em>. It is a terrible description of the <em>fault</em>, and the gap between those two things is where whole evenings go.</p>
<h2 id="the-two-questions-people-conflate">The two questions people conflate</h2>
<p>“Can packets leave this machine” and “can this machine turn a name into an address” are different questions with different failure modes. Wi-Fi answers the first. <code>/etc/resolv.conf</code> answers the second. They fail independently, and the symptom — a spinner, then a browser page that says something unhelpful about not being able to connect — is identical.</p>
<p>Worse, the second one fails <em>intermittently</em> in ways that look like the first. A resolver that answers in 40ms for cached names and times out for everything else feels exactly like a flaky radio. It is not a flaky radio. It is a resolver, and the radio is sitting there working perfectly while you power-cycle it.</p>
<blockquote>
<p>The network is reliable. The network is not reliable. Both statements are load-bearing, depending on which meeting you&rsquo;re in.</p>
</blockquote>
<h2 id="four-commands-in-order">Four commands, in order</h2>
<p>Run them in this order and stop at the first one that fails. The order matters more than the commands do — you could substitute your own favourites for any of these, but you cannot substitute the sequence.<a class="footnote-ref" id="fnref-1" href="#fn-1">1</a></p>
<pre><code>ping -c2 $(ip route | awk '/default/ {print $3}')   # 1. the gateway
ping -c2 1.1.1.1                                    # 2. routing
dig +short cloudflare.com @1.1.1.1                  # 3. resolution, bypassing local
dig +short cloudflare.com                           # 4. resolution, as configured
</code></pre>
<h3 id="ping-the-gateway">Ping the gateway</h3>
<p>If this fails, nothing downstream is worth testing. It&rsquo;s the cable, the radio, or the DHCP lease — and in my experience, in roughly that order of likelihood, which surprises people who expect the radio to be the flakiest part. Cables fail quietly and constantly. Radios fail loudly and then recover.</p>
<p>The useful thing about starting here is that it&rsquo;s the one test whose failure has an obvious physical response. You can go and <em>look at</em> a cable.</p>
<figure><img src="https://staging.logicaldisconnect.org/2026/wifi-fine-dns-not/ph-terminal.svg" alt="A terminal window showing dig returning an answer from 1.1.1.1 on line three, and timing out against the locally configured resolver on line four." width="1600" height="900" loading="lazy" decoding="async"><figcaption>The tell: an answer from the public resolver on line three, a timeout on line four. Everything above this point was working the entire time, including the part everyone reaches for first.</figcaption></figure>
<h3 id="resolve-a-name-you-dont-own">Resolve a name you don&rsquo;t own</h3>
<p>The gap between the third and the fourth command is the whole article. If line three works and line four doesn&rsquo;t, the network is fine and the resolver is lying to you.</p>
<p>One caveat, which I got wrong in the first version of this piece: on hotel or café Wi-Fi, line three can also fail for a reason that has nothing to do with your resolver. Captive portals routinely block outbound port 53 to anything but their own box, so a failure there means “something is eating DNS” rather than “your resolver is fine”. If you&rsquo;re on a network you don&rsquo;t control, read lines three and four together rather than separately.</p>
<div class="pull-quote-block">The DNS was fine. I was not.</div>
<h2 id="what-to-tell-the-person-who-asked">What to tell the person who asked</h2>
<p>Not “it was DNS.” Everyone says that, it has become a joke, and jokes don&rsquo;t transfer skill. Tell them <em>which of the four lines failed</em> and <em>what that line was asking</em>.</p>
<p>People remember a question far longer than they remember an answer. The next time it breaks, someone who was told “it was DNS” will call you. Someone who was told “line one asks whether this machine can reach the box in the hallway” will run line one themselves, and about a third of the time that&rsquo;s the end of it.</p>
<ul>
<li>Line one fails — it&rsquo;s physical, or it&rsquo;s the lease.</li>
<li>Line two fails — it&rsquo;s routing, or it&rsquo;s the ISP.</li>
<li>Line three fails — something is eating port 53, which on a network you don&rsquo;t control usually means a captive portal.</li>
<li>Line four fails alone — it&rsquo;s the resolver. <mark>This is the common one.</mark></li>
</ul>
<p>That&rsquo;s it. Four lines, one sequence, and a decent chance you never have to hear the phrase “the internet is down” delivered as a diagnosis again.</p>
<ol><li>Yes, you can run all four at once. You will also learn less, and you&rsquo;ll have to reconstruct the order in your head anyway.</li></ol>]]></description>
    </item>
    <item>
      <title>The case for running your own mail server</title>
      <link>https://staging.logicaldisconnect.org/post/2014-03-the-case-for-running-your-own-mail-server/</link>
      <guid isPermaLink="true">https://staging.logicaldisconnect.org/post/2014-03-the-case-for-running-your-own-mail-server/</guid>
      <pubDate>Wed, 12 Mar 2014 00:00:00 -0400</pubDate>
      <category>email</category>
      <category>dns</category>
      <category>self-hosting</category>
      <description><![CDATA[<p>Everyone tells you not to run your own mail server. I have been running mine for four years and I am here to tell you that everyone is roughly half right, which is the most annoying kind of right.</p>
<h2 id="what-actually-breaks">What actually breaks</h2>
<p>Not what you expect. It is never the SMTP daemon. It is DNS records you set up once and never looked at again, a certificate you renewed by hand in a hurry, and the slow, invisible business of your IP address acquiring a reputation you did not ask for.</p>
<pre><code>dig +short MX example.com
dig +short TXT example.com    # SPF
openssl s_client -starttls smtp -connect mail.example.com:587
</code></pre>
<p>Run those three every few months and you will catch most of it before someone tells you their reply bounced.</p>
<h2 id="the-part-i-underestimated">The part I underestimated</h2>
<p>Deliverability is not a technical problem, it is a political one, and you are a very small country. The large providers are not obliged to explain themselves to you and generally will not.</p>
<p>I still think it is worth doing, for the same reason I still think it is worth owning the domain your email arrives at. But do it with a second address somewhere else, and do not find out about an outage from your mother.</p>
]]></description>
    </item>
  </channel>
</rss>
