D. J. Bernstein
Internet publication
djbdns

How to create local DNS names

Here is how to configure your DNS cache to contact your DNS servers for information about particular names. This feature has two common uses:

It isn't easy to choose a safe top-level local name. The global root operators add new top-level names every once in a while: for example, .info was added in 2001, so people using .info as a local name were unable to reach global .info sites. Software authors sometimes set aside top-level names; for example, I'm told that Mac OS 9 does something weird with .local, so it can't access local names in .local. Here are some reasonable choices of top-level local names:

     .0       (good for machine-specific names)
     .1
     .2
     .3       (good for department-specific names)
     .4
     .5
     .6       (good for corporation-specific names)
     .7
     .8
     .9
     .internal

For concreteness, these instructions assume that you're creating .internal, and that you have two computers running DNS servers, the first server on IP address 1.8.7.200 and the second server on IP address 1.8.7.201.

1. Tell your DNS servers that they should answer questions about .internal, and that they should announce 1.8.7.200 and 1.8.7.201 as the DNS server addresses for .internal:

     cd /service/tinydns/root
     ./add-ns internal 1.8.7.200
     ./add-ns internal 1.8.7.201
     make

2. Tell your DNS cache that it should contact your DNS servers for information about .internal:

     cd /service/dnscache
     echo 1.8.7.200 > root/servers/internal
     echo 1.8.7.201 >> root/servers/internal
     chmod 644 root/servers/internal
     svc -t .
The file root/servers/internal applies to the name internal and all names ending with .internal. However, if there is a more specific file such as root/servers/corp.internal listing another server, or if the .internal servers delegate corp.internal to another server, dnscache will contact the other server for information about corp.internal.