My pragmatic sysadmin view on subdomains and DNS zones
Over on Twitter, Julia Evans had an interesting poll and comment:
computer language poll: is mail.google.com a subdomain of google.com? (not a trick question, no wrong answers, please don't argue about it in the replies, I'm just curious what different people think the word "subdomain" means :) )
the ambiguity here is that mail.google.com doesn't have its own NS/SOA record. An example of a subdomain that does have those things is alpha.canada.ca -- it has a different authoritative DNS server than canada.ca does.
This question is interesting to me because I had a completely different view of it than Julia Evans did. For me, NS and SOA DNS records are secondary things when thinking about subdomains, down at the level of the mechanical plumbing that you sometimes need. This may surprise people, so let me provide a quite vivid local example of why I say that.
Our network layout has a bunch of
internal subnets using RFC 1918 private IP address space, probably like a lot of
other places. We call these 'sandbox' networks, and generally each
research group has one, plus there are various other ones for our
internal use. All of these sandboxes have host names under an
.sandbox (yes, I know, this is not safe
given the explosion in new TLDs). Each different sandbox has a
.sandbox and then its machines go in that subdomain,
so we have machines with names like
However, none of these subdomains are DNS zones, with their own SOA and
NS records. Instead we bundle all of the sandboxes together into one
sandbox. zone that has everything. One of the reasons for
this is that we do all of the DNS for all of these sandbox subdomains,
so all of those hypothetical NS and SOA records would just point to
ourselves (and possibly add pointless extra DNS queries to uncached
I think most system administrators would consider these sandbox subdomains to be real subdomains. They are different namespaces (including for DNS search domains), they're operated by different groups with different naming policies, we update them separately (each sandbox has its own DNS file), and so on. But at the mechanical level of DNS zones, they're not separate zones.
But this still leaves a question about mail.google.com: is it a subdomain or a host? For people outside of Google, this is where things get subjective. A (DNS) name like 'www.google.com' definitely feels like a host, partly because in practice it's unlikely that people would ever have a <something>.www.google.com. But mail.google.com could quite plausibly someday have names under it as <what>.mail.google.com, even if it doesn't today. So to me it feels more like a subdomain even if it's only being used as a host today.
(People inside Google probably have a much clearer view of what mail.google.com is, conceptually. Although even those views can drift over time. And something can be both a host and a subdomain at once.)
Because what I consider a subdomain depends on how I think about it, we have some even odder cases where we have (DNS) name components that I don't think of as subdomains, just as part of the names of a group of hosts. One example is our IPMIs for machines, which we typically call names like '<host>.ipmi.core.sandbox' (for the IPMI of <host>). In the DNS files, this is listed as '<host>.ipmi' in the core.sandbox file, and I don't think of 'ipmi.core.sandbox' as a subdomain. The DNS name could as well be '<host>-ipmi' or 'ipmi-<host>', but I happen to think that '<host>.ipmi' looks nicer.
(What is now our IPMI network is an interesting case of historical evolution, but that's a story for another entry.)