DNS: trailing periods

Solution 1:

DNS itself has a root zone. this zone it called literally ".". Bind requires that you fully qualify a DNS name (this includes the . or root zone). Other UIs simplify this by assuming the root zone for you.

Within Bind, you may define a variable ORIGIN that will be automatically appended if you do not specify a FQDN (Fully Qualified Domain Name, including the trailing .). Alnitak has an excelent example of the syntax and various uses of this.

Solution 2:

The trailing '.' makes the name into a "Fully Qualified Domain Name", i.e. an absolute domain name.

In standard "master file format" files if you don't add the trailing '.' then the name is assumed to be relative to the current zone file's $ORIGIN (which is either specified in the zone file as shown below, or taken from the zone statement in named.conf otherwise).

i.e.

$ORIGIN example.com.
mail    IN A      192.168.1.1
mail2   IN A      192.168.1.2
server  IN A      192.168.1.3
@       IN MX 10  mail                   ; not FQDN - example.com. appended
        IN MX 20  mail2.example.com.     ; FQDN 
        IN MX 30  mail.example.net.      ; FQDN in another domain
        IN MX 40  mail2.example.net      ; ERROR - not FQDN - example.com appended
www     IN CNAME  server                 ; not FQDN - example.com. appended

Solution 3:

The . makes the name be relative to the root, without it, it the name will be relative to the current zone. The standard zone format is defined in rfc1035 and rfc1034.

How come when I use everydns.net, they do not require me to add a trailing period?

Is this an implementation quirk?

Yeah, it sounds like easydns.net is doing it a bit quirky.


Solution 4:

If you do not enter the trailing "." then the server will add the value of $ORIGIN to the end of the record. This can be a very useful shortcut and save a lot of typing if used well.

Unfortunately it is also easy to forget the "." which can result in hard to diagnose problems.

Technically the "." on the end of a record such as www.serverfault.com. indicates the separator between the "com" gTLD and the "" root zone.


Solution 5:

The trailing dot tells the DNS server that this is a fully qualified name. The dot is the root of the DNS heirarchy. If you don't use the dot, the DNS server will assume that it's a record in the current zone and will append it for you. For example, if you have a CNAME in exmaple.com that points to host.example.org, when you query for that, you'll get host.example.org.example.com, which probably isn't what you wanted.

The reason why you didn't have to with everydns.net is because they probably wrote their UI so you didn't have to worry about this technical detail.