<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>davidb dives in &#187; DNS</title>
	<atom:link href="http://blacka.com/david/category/internet/dns/feed/" rel="self" type="application/rss+xml" />
	<link>http://blacka.com/david</link>
	<description>various musings and babblings.</description>
	<lastBuildDate>Tue, 19 Jan 2010 23:37:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Running UNBOUND at home.</title>
		<link>http://blacka.com/david/2008/05/30/running-unbound-at-home/</link>
		<comments>http://blacka.com/david/2008/05/30/running-unbound-at-home/#comments</comments>
		<pubDate>Fri, 30 May 2008 11:59:38 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blacka.com/david/?p=74</guid>
		<description><![CDATA[I finally got around the setting up unbound as my home resolver.  I should have done this months ago, when it was in beta or before, since I had access to it.  I kick myself.  I feel bad.  Oh well, let&#8217;s get on with it.

My initial impressions:
It will be nice once [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around the setting up <a href="http://unbound.net">unbound</a> as my home resolver.  I <em>should</em> have done this months ago, when it was in beta or before, since I had access to it.  I kick myself.  I feel bad.  Oh well, let&#8217;s get on with it.</p>

<p>My initial impressions:
<ol><li>It will be nice once there are distribution packages for unbound.  I spent more time that I would like (which is zero) figuring out where to put the log file, pid file, etc.  Of course, I was installing it on a machine running Fedora Core 5&#8230;</li><li>I was forwarding a zone to a nameserver running on localhost:20053.  There is a gotcha to doing this, as, by default unbound won&#8217;t send <em>any</em> queries to localhost.  You have to add a &#8216;do-not-query-localhost: no&#8217; config line to fix it.  Maybe this is something unbound-checkconf could detect?</li><li>unbound&#8217;s configuration defaults leave it locked down fairly tightly.  I had it running, but on my other machines, it seemed so slow &#8212; turns out, my queries were timing out and I was hitting my ISP nameserver.  Make sure you add your networks to the &#8216;access-control:&#8217; config parameters.</li><li>I turned up the logging to debug some of my issues.  Looking at the log was <em>uncanny</em>.</li></ol>Anyway, it didn&#8217;t take all that long to set up.  Hopefully relatively soon I (or someone else) will write up how to configure unbound to run in a few different scenarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2008/05/30/running-unbound-at-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RFC 5155</title>
		<link>http://blacka.com/david/2008/03/11/rfc-5155/</link>
		<comments>http://blacka.com/david/2008/03/11/rfc-5155/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 13:23:12 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blacka.com/david/archives/2008/03/rfc-5155/</guid>
		<description><![CDATA[Ben Laurie celebrates the publication of  RFC 5155.  I hadn&#8217;t gotten around to blogging about it, but I&#8217;m also pretty happy that this RFC finally made it out.

Ben says:

It turns out that in general, to prove the nonexistence of a name using NSEC you have to show at most two records, one to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.links.org">Ben Laurie</a> celebrates the publication of  <a href="http://feeds.feedburner.com/~r/links/ZvUZ/~3/249426532/">RFC 5155</a>.  I hadn&#8217;t gotten around to blogging about it, but I&#8217;m also pretty happy that <a href="http://www.ietf.org/rfc/rfc5155.txt">this RFC</a> finally made it out.</p>

<p>Ben says:</p>

<blockquote>It turns out that in general, to prove the nonexistence of a name using NSEC you have to show at most two records, one to prove the name itself doesn&#8217;t exist, and the other to show that you didn&#8217;t delegate some parent of it. Often the same record can do both.

In NSEC3, it turns out, you have to show at most three records. And if you can understand why, then you understand DNS better than almost anyone else on the planet.</blockquote>

<p>One of the fascinating things about working on NSEC3 was that it forced us to <em>really understand</em> how existence in DNS works.  Basically, we had to develop the general form of the theory when we already had a special case (in NSEC).  So, after we figured out how NSEC3 had to work, we actually knew more about how NSEC worked.</p>

<p>For me and our co-editor Roy, this RFC culminates the 2nd round of working on the some of the problems that NSEC3 solves.  The first effort was &#8220;DNSSEC Opt-In&#8221;, now published as an experimental RFC, <a href="http://www.ietf.org/rfc/rfc4956.txt">RFC 4956</a>.  (That effort was also tied up in DNS minutiae and political wrangling and ultimately failed to make the IETF standards track).  For us, it feels more like the culmination of 7 years of work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2008/03/11/rfc-5155/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Draft Ideas (DNS related)</title>
		<link>http://blacka.com/david/2008/03/09/internet-draft-ideas-dns-related/</link>
		<comments>http://blacka.com/david/2008/03/09/internet-draft-ideas-dns-related/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 04:07:29 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blacka.com/david/archives/2008/03/internet-draft-ideas-dns-related/</guid>
		<description><![CDATA[I&#8217;m at the IETF this week, and so I get to turn my brain to thinking about IETF-y things, like Internet Drafts that I think should (and could) be written.

Idea #1: Cache Poisoning Resilience

This would be a draft that describes steps beyond RFC 2181 that a resolver must do to protect itself from cache poisoning. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m at the IETF this week, and so I get to turn my brain to thinking about IETF-y things, like Internet Drafts that I think should (and could) be written.</p>

<p><span style="text-decoration:underline;"><strong>Idea #1: Cache Poisoning Resilience</strong></span></p>

<p>This would be a draft that describes steps beyond <a href="http://www.ietf.org/rfc/rfc2181.txt">RFC 2181</a> that a resolver must do to protect itself from cache poisoning.  (RFC 2181 addresses this problem by introducing credibility rules in section 5.4.1.)  Modern caching resolvers need to do more to protect themselves from name poisoning attacks like malicious CNAME chains.  I would expect this draft to be able to lay out a few simple rules like:</p>

<ul><li>Discard any RRs in a response that are &#8220;irrelevant&#8221; (i.e., answer RRs that do not match qname/sname, addtional RRs that don&#8217;t match names in the RDATA of answer and authority RRs, etc.)</li><li>Discard any RRs in a response that are not at or below the queried zone.</li></ul>

<p><span style="text-decoration:underline;"><strong>Idea #2: Authoritative Servers Should Not Chase CNAMEs</strong></span></p>

<p>This is a draft discouraging authoritative servers from chasing CNAMEs out-of-zone (or, optionally, at all), based on conclusions presented in draft idea #1.  This draft could either side-step or confront other possibly controversial things about CNAME processing, like whether or not the authority section should apply the head or the tail of a CNAME chain.</p>

<p><span style="text-decoration:underline;"><strong>Idea #3: DNS Name Compression Standards
</strong></span></p>

<p>A draft mandating the DNS name compression only be done in one direction.  Virtually all (or perhaps even <em>actually</em> all) implementations have DNS compression pointers only pointing to earlier in the message.  This draft would propose that forward-pointing compression pointers should be treated as format errors.  This would accomplish two things:</p>

<ol><li>Simplify what implementers need to support when parsing messages, and</li><li>outlaw any possibility of having to deal with a compression pointer loop. </li></ol>

<p>And, in the process, effectively codify standard practice.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2008/03/09/internet-draft-ideas-dns-related/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Good and Bad of DNSSEC SO</title>
		<link>http://blacka.com/david/2007/04/29/the-good-and-bad-of-dnssec-so/</link>
		<comments>http://blacka.com/david/2007/04/29/the-good-and-bad-of-dnssec-so/#comments</comments>
		<pubDate>Sun, 29 Apr 2007 15:15:03 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blacka.com/david/archives/2007/04/the-good-and-bad-of-dnssec-so/</guid>
		<description><![CDATA[Late last year, Mike StJohns transcribed one of his DNSSEC-related rants into Internet-Draft form (recently expired).  The name of his proposal, &#8220;Signature Only DNSSEC&#8221; has been referred to as &#8220;DNSSEC SO&#8221; in shorthand.

Mike&#8217;s idea was soundly rejected by the IETF working group that it was presented to, DNSEXT.  I&#8217;ll outline some theories why [...]]]></description>
			<content:encoded><![CDATA[<p>Late last year, Mike StJohns transcribed one of his DNSSEC-related rants into Internet-Draft <a href="http://tools.ietf.org/html/draft-stjohns-dnssec-sigonly-00" title="form">form</a> (recently expired).  The name of his proposal, &#8220;Signature Only DNSSEC&#8221; has been referred to as &#8220;DNSSEC SO&#8221; in shorthand.</p>

<p>Mike&#8217;s idea was soundly rejected by the IETF working group that it was presented to, <a href="http://tools.ietf.org/wg/dnsext/">DNSEXT</a>.  I&#8217;ll outline some theories why in a bit.  But, its rejection was not because it was a horrible idea.  In fact, from some points of view, it is a pretty good idea.  In a nutshell, DNSSEC SO says:
<ul><li> Drop the NSEC (nÃ©e NXT) or NSEC3 records, and just concentrate on being able to positively verify records, and</li><li> because successful chains of trust through zones don&#8217;t actually involve NSEC records, this can coexist with standard DNSSEC.</li></ul>The draft certainly talks about other things (like off-tree chains of trust) which are interesting too, but this is the main thrust.  By eliminating the NSEC records (what MSJ calls &#8220;Provable Non-Existence&#8221;, or PNE), you&#8217;ve simplified DNSSEC and, in one fell swoop, eliminated all of the angst generated by the NSEC records (leading to things like <a href="http://tools.ietf.org/html/draft-ietf-dnsext-nsec3-10">NSEC3</a> and <a href="http://www1.tools.ietf.org/html/draft-ietf-dnsext-dnssec-online-signing-01">on-line NSEC generation</a>).  This isn&#8217;t to say that DNSSEC SO removes all of the Hard from DNSSEC, but it does go a long way.</p>

<p>However, let&#8217;s take a look at the main purposes  of DNSSEC:<span style="font-size:12pt;">
</span><ol><li>Protect legacy and security-unaware Internet applications from DNS spoofing attacks, and</li><li>Enable new applications to use DNS as security scaffolding.</li></ol>Purpose #1 is why (I believe) that DNSSEC was pursued in the first place.  Purpose #2 was thought of later as a compelling reason to continue.  Or rather, #2 is the reason why we would have wide-scale deployment of DNS in the absence of a highly publicized attack on the DNS.</p>

<p>And now we can see why DNSSEC SO was rejected: it is utterly useless for purpose #1.  And, since most new applications have to live an world without universal DNSSEC deployment (SO or otherwise), DNSSEC SO isn&#8217;t as useful for purpose #2 as it might be.  Let me explain.</p>

<p>Standard  DNSSEC (including things like NSEC3) says that DNS responses, after being validated, fall into one of three states (actually four, but never mind): SECURE, INSECURE, and BOGUS.  That is: it validated and was signed; it wasn&#8217;t signed, but that was proven to be OK; and it failed to validated (for any reason).  When a response is BOGUS, the response is withheld from the application.  Thus, an unaware application is spared from the effects of the spoofing attack.</p>

<p>DNSSEC SO says that responses, after validation, only fall into two states: SECURE and NOT SECURE.   That is: it validated and it was signed; or it wasn&#8217;t signed or didn&#8217;t validate.  So spoofing attacks just get passed on the unaware client, which can&#8217;t distinguish them from normal DNS responses.</p>

<p>OK, so what about purpose #2?  Imagine an application that might be aware of DNSSEC and might really want to use it for security scaffolding.  Let&#8217;s call it <a href="http://www.dkim.org/">DKIM</a>, an application that looks up cryptographic keys in DNS for the purpose of deciding to accept or reject email.  It might decide that it is <em>only</em> going to use DKIM keys that have been signed and verified by DNSSEC.  This is great, and, in fact, DNSSEC SO works here just fine.</p>

<p>However, at this point in time, DKIM cannot afford to restrict itself to only using keys signed with DNSSEC.  Even with DNSSEC SO, it is going to take a while to get enough infrastructure in place so that any zone that wants to can be signed and trusted.  And DKIM needs as many email senders and receivers to use it as possible.</p>

<p>&#8230;</p>

<p>So why was DNSSEC SO rejected by the IETF?  I suppose that everyone who spoke up saying &#8220;No&#8221; has his/her own reason, but my belief was that it was because DNSSEC SO rejects the initial requirement for DNSSEC, and that the initial requirement (purpose #1, above) is still valid.  Also, the working group was obviously tired of working on DNSSEC, and DNSSEC SO represented another 6 to 12 month round of effort for what seemed like little gain.  In other words, &#8220;too little, too late&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2007/04/29/the-good-and-bad-of-dnssec-so/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DNS: DNAME is useless</title>
		<link>http://blacka.com/david/2006/12/04/dns-dname-is-almost-useless/</link>
		<comments>http://blacka.com/david/2006/12/04/dns-dname-is-almost-useless/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 14:09:07 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blacka.com/david/archives/2006/12/dns-dname-is-almost-useless/</guid>
		<description><![CDATA[DNAME, if you are not aware, is a DNS record type defined in RFC 2672.  If you are familiar with the DNS&#8217;s CNAME record, then think of DNAME as a sort of super CNAME.  If not, well, I&#8217;ll try to explain how DNAME works.

A Brief DNAME Tutorial

Whereas CNAME is used to alias a [...]]]></description>
			<content:encoded><![CDATA[<p>DNAME, if you are not aware, is a DNS record type defined in <a href="http://www.apps.ietf.org/rfc/rfc2672.html">RFC 2672</a>.  If you are familiar with the DNS&#8217;s CNAME record, then think of DNAME as a sort of super CNAME.  If not, well, I&#8217;ll try to explain how DNAME works.</p>

<p><strong>A Brief DNAME Tutorial</strong></p>

<p>Whereas CNAME is used to alias a single domain name to another, DNAME aliases an entire subtree to another.  It accomplishes this in one of two ways: either it acts as a CNAME generator, or it is understood by the client and the client implements the same behavior without all the generated CNAMEs.</p>

<p>So, some examples.  Imagine that this record exists in its proper place in the DNS:</p>

<p><span style="font-family:monospace;">www.bar.com IN CNAME www.foo.com.</span></p>

<p>This means that queries for www.bar.com, of any type (A, AAAA, MX, etc.) will get aliased to the same query for www.foo.com.  But queries for mail.bar.com (for example) do not.  Nor do queries for yyy.www.bar.com.  Now imagine a similar usage of DNAME:
<span style="font-family:monospace;">bar.com IN DNAME foo.com.</span></p>

<p>Now, the DNAME record will synthesize a CNAME for any query below bar.com.  A query for www.bar.com will get aliased to www.foo.com.  mail.bar.com will be aliased to mail.foo.com.  x.y.a.b.c.bar.com will be aliased to x.y.a.b.c.foo.com.  Everything.  But, queries for bar.com won&#8217;t be aliased at all.  DNAME only matches below the name, not at the name.</p>

<p>All in all, a pretty clever idea.</p>

<p><strong>Using DNAME to Create IDN TLDs</strong></p>

<p>So, let&#8217;s think of some ways that DNAME might be used.  One idea that has been bandied about is to create IDN aliases for TLDs.  So, for example, imagine a DNAME that maps &#8216;xn--c4m&#8217; (somebody feel free to suggest a real punycoded com equivalent) to &#8216;com&#8217;:<span style="font-family:monospace;">
</span>
<span style="font-family:monospace;">xn--c4m. IN DNAME com.</span></p>

<p>The idea being that while the world wants native language versions of com, net, etc, the world doesn&#8217;t actually want them to be new TLDs (where amazon.xn--c4m could be different than amazon.com.)  So, using DNAME in this way looks greatâ€”somebody who registered xn--b7r.com now gets to advertise their domain as bÃ¥r.cÃ¸m (or whateverâ€”I&#8217;m too lazy to actually use real unicode here, people).  When somebody queries for www.bÃ¥r.cÃ¸m, this gets converted to<span style="font-family:monospace;">
</span><span style="font-family:monospace;">www.xn--b7r.xn--c4m IN CNAME www.xn--b7r.com.</span>
Not bad, not bad at all.  However, what happens when the owner of xn--b7r.com starts thinking of his domain as actually &#8220;xn--b7r.xn--c4m&#8221; (or bÃ¥r.cÃ¸m, since people don&#8217;t actually think in punycode&#8230;), and creates a subdomain:<span style="font-family:monospace;">
</span>
<span style="font-family:monospace;">xn--su9b.xn--b7r.com. IN NS ns1.xn--b7r.xn--c4m.</span>
<span style="font-family:monospace;">xn--su9b.xn--b7r.com. IN NS ns2.xn--b7r.xn--c4m.</span></p>

<p>Well, what happens is that this delegation actually doesn&#8217;t work.  And it doesn&#8217; t work because ns1.xn--b7r.xn--c4m doesn&#8217;t actually exist as a name in the DNS.  Instead, it is gets converted into a CNAME, and NS record targets cannot be CNAMEs (This is pointed out in RFC 2181, but the real point is that resolvers won&#8217;t generally handle this case.)  Note that it isn&#8217;t that the owner can&#8217;t have subdomains.  It is that he can&#8217;t use the IDN TLD version of his domain the same way as the real one. 
So, the DNAME based IDN TLD is a second-class citizen, and will probably lead to operational problems as end users fail to realize that this IDN TLD isn&#8217;t actually a real TLD, and what the consequences of that are.</p>

<p><strong>Using DNAMEs for Variants</strong></p>

<p>OK, so how about another potential use, instantiating IDN variants?  This is slightly different from the case above in that the idea here is to create aliases to existing second level domains as a courtesy.  It isn&#8217;t really nearly as likely that someone down the road will mistake the DNAME for a real nameâ€”this is just to help people who enter a variant get to the right place.</p>

<p>Actually, this idea isn&#8217;t really about IDN variants at all.  Imagine that you have a bunch of domains of which one is the &#8220;real&#8221; one, and the rest were just registered to keep other jackasses from registering them and defaming you.  Or just registered because people might try to find you under the other domains.  For an example, let&#8217;s imagine that Amazon has amazon.com (the main zone), amazon.co.uk, and amazonsucks.com, all of which Amazon wants to behave the same.  Instead of maintaining a bunch of copies of the amazon.com zone, couldn&#8217;t you just leave one &#8220;real&#8221; and have the rest be DNAMEs?  This would make managing these copies so much easier, wouldn&#8217;t it?</p>

<p>Well, yes, but&#8230;. Since the DNAME doesn&#8217;t match at itself, you haven&#8217;t aliased the entire zone, since you haven&#8217;t aliased the name &#8220;amazon.com&#8221; itself.  Alas, there are always critical records stored at the apex.  At the very least, an MX record.  So, you haven&#8217;t really saved yourself much work, since you will (most likely) have manage the variant zones anyway, just to keep the zone apex in sync.</p>

<p>Another way to accomplish this task is to use the same zone file for all of the variants.  BIND, at least, makes this easy:  just make sure that everything in the zone is relative to the &#8220;origin&#8221;.  When the file is loaded against different zones, the origin will be set to each zone in turn.  (This is a bit like using all relative paths in your HTML and then having the freedom to move the pages around without changing the HTML.)</p>

<p><strong>The Good News</strong></p>

<p>So what is DNAME good for?  The canonical use for DNAME is to move zones around in the reverse tree, typically for renumbering.  This works better, because the zone apexes in the reverse tree aren&#8217;t used much (or at all).  It is also useful (although not perfect) in cases where you do not control the zone that you wish to mirror.</p>

<p>I won&#8217;t say that DNAME is completely uselessâ€”a few people have certainly successfully used it.  But, it doesn&#8217;t work adequately in situations where no other good solutions exist (IDN tlds), and even where it does work, there is always another way to accomplish the same thing that, generally, isn&#8217;t much more work.</p>

<p>Also, that it has been around for six years and hasn&#8217;t seen any sort of widespread use is, at least, an indication that DNAME doesn&#8217;t solve any pressing problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2006/12/04/dns-dname-is-almost-useless/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DNS Anycasting?</title>
		<link>http://blacka.com/david/2006/07/15/dns-anycasting/</link>
		<comments>http://blacka.com/david/2006/07/15/dns-anycasting/#comments</comments>
		<pubDate>Sun, 16 Jul 2006 02:28:40 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blacka.com/david/archives/2006/07/dns-anycasting/</guid>
		<description><![CDATA[On a mailing list that I&#8217;m on, a funny argument about the wisdom of anycast DNS service has erupted.

Now, I&#8217;m certainly no expert on anycast, but I can see a small kernel of truth buried in the FUD of the doubters.

Anycasting can lead to a false sense of resiliancy.

For example, 2 anycast clouds with 6 [...]]]></description>
			<content:encoded><![CDATA[<p>On a mailing list that I&#8217;m on, a funny argument about the wisdom of anycast DNS service has erupted.</p>

<p>Now, I&#8217;m certainly no expert on anycast, but I can see a small kernel of truth buried in the FUD of the doubters.</p>

<p><strong>Anycasting can lead to a false sense of resiliancy.</strong></p>

<p>For example, 2 anycast clouds with 6 instances each is less resilient than 12 separate unicast instances.  This is because, from the point of view of the DNS client, there are only two nameservers to contact, and if both go down, the client is hosed.  Two failures in the unicast case don&#8217;t lead to any noticeable problem.</p>

<p>This isn&#8217;t the same as saying that anycasting doesn&#8217;t, in general, improve the situation.  But it isn&#8217;t a substitute for advertising more than, say, two nameservers.</p>

<p><strong>Anycasting can be done poorly.</strong></p>

<p>Imagine having two different anycast addresses, but that each cloud essentially has both addresses in the same rack at every instance.  Or even just at some instances.  In this case, the amount of redundancy is less than the operator might suppose, and a single power failure (e.g.) could render the zone inaccessible.</p>

<p>Of course, people who set up high-profile anycast DNS service generally know what they are doing and provide sufficiently independent anycast clouds.</p>

<p><strong>It is possible that the use of anycasting can have negative consequences for some people, somewhere.</strong></p>

<p>Ok, so this is the argument put forth by a famous internet troll.  (If the phrases &#8220;scientific fraud!&#8221; and &#8220;for spoofing&#8221; are familiar, you know who I&#8217;m talking about.  If not, don&#8217;t worry about it.)  Basically the theory goes like this:</p>

<ol>
    <li>Sometimes DNS must be done over TCP.</li>
    <li>TCP is stateful.</li>
    <li>It is possible to have to different anycast instances the same &#8220;distance&#8221; away.</li>
    <li>It is possible to have a routing devices that divides packets between these two instances.</li>
    <li>All of the packets really need to go to the same instance, otherwise the TCP handshake (or whatever) doesn&#8217;t complete and the DNS query fails.</li>
</ol>

<p>And thus, for some people, somewhere, in magic spots on the internet, might find a given anycast address unusable for TCP.  The famous internet troll takes this argument to mean that anycast is completely unusable for DNS.  Now, keep in mind that, even if you are in such a magic spot, the chances of <em>all</em> of the anycast addresses for a domain suffering from the same problem are extremely small.  And keep in mind that the vast majority of DNS queries are over UDP, which doesn&#8217;t have this (potential) problem.</p>

<p>I, of course, have no idea if there are actually any such magic spots on the internet.</p>

<p><strong>&#8230;But a kernel of truth doesn&#8217;t equal truth.</strong></p>

<p>These are just things that <em>could</em> be wrong with an anycast DNS deployment, not that they <em>are</em>.  I sympathize with the operators who must defend themselves in the face of clueless folks who make the leap from their being a potential problem to an actual one without actually investigating anything.  Nevertheless, I think that it would be better to inform the clueless that the operators are aware of the pitfalls, and thus, have not fallen into them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2006/07/15/dns-anycasting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DNS wildcard musings</title>
		<link>http://blacka.com/david/2005/01/21/dns-wildcard-musings/</link>
		<comments>http://blacka.com/david/2005/01/21/dns-wildcard-musings/#comments</comments>
		<pubDate>Fri, 21 Jan 2005 16:17:27 +0000</pubDate>
		<dc:creator>davidb</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://blacka.com/david/archives/2005/01/dns-wildcard-musings/</guid>
		<description><![CDATA[General musing on what generic users might be looking for in DNS wildcards.]]></description>
			<content:encoded><![CDATA[<p>There has been a rather interesting, although frustrating, discussion on <a href="http://ops.ietf.org/lists/namedroppers/">namedroppers</a> about wildcards.  I woke up early this morning and thought some about them, and why folks consistently complain about DNS wildcards.</p>

<p>It seems to me that when non-experts look at wildcards they come to one of two conclusions:</p>

<ol>
<li>Wildcards don&#8217;t match enough.</li>
<li>Wildcards match too much.</li>
</ol>

<p><strong>Don&#8217;t match enough</strong></p>

<p>My experience has generally shown that when a naive user is introduced to wildcards, they generally expect the wildcards to apply in more situations than they actually do, leading to long-standing common errors (c.f. RFC 1034, section 4.3.3).  The classic wildcard MX:</p>

<pre><code>$ORIGIN example.com
*     IN MX  10 a
a     IN A   1.2.3.4
b     IN A   1.2.3.5
mail  IN MX  b
</code></pre>

<p>The naive user generally expects the wildcard to match <code>(c.example.com, MX)</code> (which it will), <code>(a.example.com, MX)</code> (which it won&#8217;t), and possibly even <code>(b.a.example.com, MX)</code>, but not <code>(mail.example.com, MX)</code>.</p>

<p>That is, a possibly more natural interpretation of the wildcard is one of: this is the default MX record for the zone, use it when no other MX in the zone applies.</p>

<p><strong>Match too much</strong></p>

<p>This typically comes up when folks struggle with wildcards interacting with DNS records that use so-called &#8220;name hacks&#8221;, like the SRV.  &#8220;Why can&#8217;t I have a wildcard SRV?&#8221;, they ask.  Why cannot a DNS server exhibit a great deal of control over how a wildcard matches?  So we see proposals that look like:</p>

<pre><code>_http._tcp.*.example.com. IN SRV ....
</code></pre>

<p>where the expected behavior is that <code>(_http ._tcp.foo.example.com, SRV)</code> matches, but <code>(bar.example.com., SRV)</code> does not, and <code>(_smtp ._tcp.foo.example.com., SRV)</code> certainly does not.</p>

<p>The limits of how much control this wildcard mechanism should have are not typically well explored by such proposals.  However, the example above might be considered a lower bound of control.  An upper bound might be to use regular expressions as wildcard matching rules. (Not that regular expressions represent a real upper limit &#8212; any arbitrarily complex language could be defined).</p>

<p>While I personally cannot think of many interesting uses for an expressive (say regular expression-based) selectively matching wildcard, my gut feeling is that there would be.</p>

<p>I do not necessarily think that there is a call for multiple new wildcard mechanisms.  The first issue (match too little) could be handled by a zone pre-processor (by which I mean that the desired semantics are <em>expressible</em> using current DNS, but just verbose), and/or a single new mechanism could encompass both behavioral issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://blacka.com/david/2005/01/21/dns-wildcard-musings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
