I'm using NSD3, and I'm unsuccessful in trying to have capital letters in my domain names.

How is it possible to have uppercase letters in your DNS?

In various OSS documentation, it's very common to see Berkeley.EDU capitalised, and indeed their DNS is still capitalised to this day:

% traceroute www.berkeley.edu
15  t1-3.inr-201-sut.Berkeley.EDU (  168.794 ms  169.906 ms  168.714 ms
16  t5-5.inr-210-srb.Berkeley.EDU (  168.850 ms  168.912 ms t5-4.inr-210-srb.Berkeley.EDU (  168.886 ms

And in forward DNS, they, too, have various domains capitalised:

% dig @ns.cs.berkeley.edu. cs.berkeley.edu.
cs.berkeley.edu.        86400   IN      NS      cgl.UCSF.edu.
cs.berkeley.edu.        86400   IN      NS      adns1.berkeley.edu.
cs.berkeley.edu.        86400   IN      NS      ns.cs.berkeley.edu.
cs.berkeley.edu.        86400   IN      NS      vangogh.cs.berkeley.edu.
cs.berkeley.edu.        86400   IN      NS      adns2.berkeley.edu.
cs.berkeley.edu.        86400   IN      NS      ns.EECS.berkeley.edu.
  • 1
    Since DNS records are usually not case-sensitive, why are you trying to do this? Why does it matter?
    – Moshe Katz
    Feb 7, 2013 at 21:53

4 Answers 4


As noted in (an obscure place in) NSD's documentation,

NSD normalizes names to lower case.

If you want your names to show up with mixed-case, preserving whatever you put in the zone file, you will need to use a different nameserver, such as BIND. It is, after all, the Berkeley Internet Name Daemon...

While it may be possible to hack the NSD source code to make it preserve case, you should be wary of doing this, as it may not be possible to predict what bugs or unintended consequences such a change might introduce, and your nameserver is one of the last places you want mysterious bugs showing up.

  • 3
    Not to mention the delay it adds in smoothly pushing out security updates, particularly if the patches break between revisions. On a less technical note, this is not something I'd want to have to explain to a new manager as my justification for why the company infrastructure is running a set of custom patches.
    – Andrew B
    Feb 4, 2013 at 8:49

It would appear that your DNS3 server is mangling (normalising) the records for which is it authoritative. Have a look at the source code http://www.nlnetlabs.nl/svn/nsd/trunk/dname.c in particular dname_make and DNAME_NORMALIZE which is just tolower. From http://www.nlnetlabs.nl/svn/nsd/trunk/dname.h

#define DNAME_NORMALIZE        toupper
#define DNAME_NORMALIZE        tolower

It should be fairly easy to pull the SVN repository make a change to dname.h recompile and then get what you want. Of course in doing this your on your own for support.

As Michael Hampton points out this function

const dname_type *
dname_make_from_packet(region_type *region, buffer_type *packet,
               int allow_pointers, int normalize)
    uint8_t buf[MAXDOMAINLEN + 1];
    if(!dname_make_wire_from_packet(buf, packet, allow_pointers))
        return 0;
    return dname_make(region, buf, normalize);

is called with a hard coded parameter or normalize so you'd need to track it down and fix that too.

  • 4
    You'll have to hack a different part of the code if you want to do this. There is a normalize parameter in the dname_make_from_packet function called from packet.c which is hard-coded to 1. But then you get into the question of whether sysadmins should be mucking around in nameserver internals at all... Feb 4, 2013 at 8:32

They just set that up in their reverse zone. When you traceroute.. it hits the IP then your resolver is asking what the reverse is for the ip.. it would be something like

$ORIGIN 0.32.128.in-addr.arpa.
65     IN      PTR     t1-3.inr-201-sut.Berkeley.EDU.
  • I don't think that addresses the question at all. I've used proper capitalisation for my names everywhere where they were mentioned in nsd3, but they all still always appear in lowercase.
    – cnst
    Feb 4, 2013 at 7:58
  • 2
    It answers it. Domain names do not care about capitalization - DD is identical to dd. In many case what you see is either the reverse, or your front end just removes capitals - it is presentation only.
    – TomTom
    Feb 4, 2013 at 8:03
  • My question is specifically on how to have my master not remove any such capitals.
    – cnst
    Feb 4, 2013 at 8:07
  • 2
    Per RFC, comparisons of DNS records must be case insensitive. Nothing is said about whether or not the case has to be preserved. It is not considered significant from a data standpoint, and whether or not the case gets discarded is implementation specific.
    – Andrew B
    Feb 4, 2013 at 8:12
  • 1
    To put it more simply, this is undefined behavior. Most administrators don't concern themselves with it because they have no control over what will happen.
    – Andrew B
    Feb 4, 2013 at 8:25

There's the RFC#4343 to describe how to handle UPPER/lower case in :

Each node in the DNS tree has a name consisting of zero or more labels [STD13, RFC1591, RFC2606] that are treated in a case insensitive fashion

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.