How To Install And Use The djbdns Name Server On Debian Etch - Page 2

Want to support HowtoForge? Become a subscriber!
 
Submitted by falko (Contact Author) (Forums) on Tue, 2008-01-22 17:58. ::

4 Configuring tinydns

All tinydns records are stored in the file /service/tinydns/root/data. This file can either be edited by hand, or you can use some helper scripts that are in the /service/tinydns/root directory, e.g. add-ns, add-host, add-alias, etc.

I will now create some records for the domain example.com using these helper scripts. To use these helper scripts, we must go to the /service/tinydns/root directory:

cd /service/tinydns/root

Now I want this server (192.168.0.100) to be a name server for the example.com domain, so I run:

./add-ns example.com 192.168.0.100

The name of the name server is not directly specifiable. Names are automatically assigned by add-ns itself, following the pattern [a-z].ns.name, i.e. the 192.168.0.100 name server is named a.ns.example.com (you don't have to create an A record for a.ns.example.com, this has been created automatically by the previous add-ns command).

Now let's make the server with the IP address 192.168.0.101 our second name server for the example.com domain - this is b.ns.example.com:

./add-ns example.com 192.168.0.101

Next let's create A records for the servers that will host example.com - let's name them server1.example.com and server2.example.com:

./add-host server1.example.com 192.168.0.100
./add-host server2.example.com 192.168.0.101

A single IP address can be used only once in an add-host command. To create further hostnames that use the IP address, we must now use the add-alias command:

./add-alias www.example.com 192.168.0.100
./add-alias example.com 192.168.0.100

Let's make 192.168.0.100 the mail exchanger for example.com:

./add-mx example.com 192.168.0.100

The name of the SMTP server is not directly specifiable. Names are automatically assigned by add-mx itself, following the pattern [a-z].mx.name, in this case a.mx.example.com. It is not possible to specify the distance value (i.e., the priority) for the SMTP server.

After you've created all wanted records, you must run

make

so that your changes can take effect.

There are no helper scripts to create CNAME and TXT records (e.g. for SPF records), so if you want to create such records, you must modify /service/tinydns/root/data manually, e.g. like this:

vi /service/tinydns/root/data

[...]
'example.com:v=spf1 a mx ~all:3600
Cftp.example.com:www.example.com

You can use the SPF wizard on http://old.openspf.org/wizard.html to create an SPF record for your domain - the wizard shows the record in BIND and tinydns syntax so that you can copy & paste the record.

Don't forget to run

make

afterwards.

If you take a look at the /service/tinydns/root/data file...

cat /service/tinydns/root/data

server1:/service/tinydns/root# cat /service/tinydns/root/data
.example.com:192.168.0.100:a:259200
.example.com:192.168.0.101:b:259200
=server1.example.com:192.168.0.100:86400
=server2.example.com:192.168.0.101:86400
+www.example.com:192.168.0.100:86400
+example.com:192.168.0.100:86400
@example.com:192.168.0.100:a::86400
'example.com:v=spf1 a mx ~all:3600
Cftp.example.com:www.example.com
server1:/service/tinydns/root#

... you'll notice that the records begin with signs such as ., =, +, @, ', C, etc. You can find explanations of the different record types on http://www.fefe.de/djbdns/#recordtypes and http://www.pjvenda.org/linux/doc/tinydns/.

Instead of using the add-* helper scripts, you can of course specify all records manually in /service/tinydns/root/data. This way you are more flexible, for example you can assign individual names to your name servers and mail exchangers, e.g. ns1.example.com instead of a.ns.example.com:

cd /service/tinydns/root
vi data

#define the authoritative nameserver
.example.com::ns1.example.com
#mail exchanger
@example.com::mail.example.com
#IP for machine1,2,3,4,5
=machine1.example.com:1.2.3.1
=machine2.example.com:1.2.3.2
=machine3.example.com:1.2.3.3
=machine4.example.com:1.2.3.4
=machine5.example.com:1.2.3.5
#machine5 is also known as ns1
+ns1.example.com:1.2.3.5
#machine1 is our mailserver
+mail.example.com:1.2.3.1
#and our webserver
+www.example.com:1.2.3.1

make

To test your records, you can use the dig command, e.g.

dig @192.168.0.100 example.com

dig @192.168.0.100 ns example.com

dig @192.168.0.100 mx example.com

dig @192.168.0.100 txt example.com

dig @192.168.0.100 www.example.com

etc.

To learn more about djbdns, you should definitely take a look at the following web sites:


Please do not use the comment function to ask for help! If you need help, please use our forum.
Comments will be published after administrator approval.
Submitted by Anonymous (not registered) on Wed, 2011-01-19 12:53.

Djbdns looks great, and I have tried over the past three years at least thrice to install it on both OpenBSD and Debain Squeeze, and failed on every occasion! ( I gave up and used BIND each time.)

Sadly, its a complete bitch to get working, which is why many people use BIND instead. As much as I think dnsdjb is far superior to BIND (and bug free), there is little point in touting it when the it is too difficult to install. Installation would be far easier if there were reliable instructions for various O/Ses other than the rather sparse entries on http://cr.yp.to/djbdns/install.html

It would be good to see the packages in Debian Squeeze. Then we may have a chance (ucspi-tcp daemontools daemontools-run are available, but djbdns is not).

Submitted by Anonymous (not registered) on Thu, 2011-02-10 06:56.
Sadly again, I used it happily in Debian Lenny while it is not available in Debian Squeeze.  After distro update, I failed to make it up ...