Denne vejledning viser dig, hvordan du konfigurerer en DNS-tjeneste, der er nem at vedligeholde, nem at konfigurere, og som generelt er mere sikker end den klassiske BIND-tjeneste. Denne artikel antager, at du kører en VPS med FreeBSD installeret.
For at begynde skal du åbne din terminal og installere denne pakke:
<ceph>[~]# pkg install djbdns                                              
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 3 packages will be affected (of 0 checked):
New packages to be INSTALLED:
djbdns: 1.05_20,1
ucspi-tcp: 0.88_2
daemontools: 0.76_17
The process will require 1 MB more space.
251 KB to be downloaded.
Proceed with this action? [y/N]: y
Fetching djbdns-1.05_20,1.txz: 100%  139 KB 142.4k/s    00:01    
Fetching ucspi-tcp-0.88_2.txz: 100%   62 KB  63.1k/s    00:01    
Fetching daemontools-0.76_17.txz: 100%   51 KB  51.7k/s    00:01    
Checking integrity... done (0 conflicting)
[1/3] Installing ucspi-tcp-0.88_2...
[1/3] Extracting ucspi-tcp-0.88_2: 100%
[2/3] Installing daemontools-0.76_17...
[2/3] Extracting daemontools-0.76_17: 100%
[3/3] Installing djbdns-1.05_20,1...
[3/3] Extracting djbdns-1.05_20,1: 100%
Installationen vil automatisk installere yderligere pakker ( daemontoolsog ucspi-tcp).
Opret to brugere, gtinydnsog gdnslog. Start med den første bruger:
<ceph>[~]# adduser         
Username: gtinydns
Full name: gtinydns
Uid (Leave empty for default): 
Login group [gtinydns]: 
Login group is gtinydns. Invite gtinydns into other groups? []: 
Login class [default]: 
Shell (sh csh tcsh zsh rzsh nologin) [sh]: nologin
Home directory [/home/gtinydns]: 
Home directory permissions (Leave empty for default): 
Use password-based authentication? [yes]: 
Use an empty password? (yes/no) [no]: 
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]: 
Username   : gtinydns
Password   : <random>
Full Name  : gtinydns
Uid        : 1002
Class      : 
Groups     : gtinydns 
Home       : /home/gtinydns
Home Mode  : 
Shell      : /usr/sbin/nologin
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gtinydns) to the user database.
adduser: INFO: Password for (gtinydns) is: rTsada2131sa1Mg
Add another user? (yes/no): no
Goodbye!
Tilføj nu den anden bruger:
<ceph>[~]# adduser
Username: gdnslog
Full name: gdnslog
Uid (Leave empty for default):  
Login group [gdnslog]: 
Login group is gdnslog. Invite gdnslog into other groups? []: 
Login class [default]: 
Shell (sh csh tcsh zsh rzsh nologin) [sh]: nologin
Home directory [/home/gdnslog]: 
Home directory permissions (Leave empty for default): 
Use password-based authentication? [yes]: 
Use an empty password? (yes/no) [no]: 
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]: 
Username   : gdnslog
Password   : <random>
Full Name  : gdnslog
Uid        : 1003
Class      : 
Groups     : gdnslog 
Home       : /home/gdnslog
Home Mode  : 
Shell      : /usr/sbin/nologin
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gdnslog) to the user database.
adduser: INFO: Password for (gdnslog) is: jWsdad33aasdaFa0
Add another user? (yes/no): no
Goodbye!
Kør følgende kommando. Erstat IP-adressen med adressen på din Vultr-server.
<ceph>[~]# tinydns-conf gtinydns gdnslog /usr/local/etc/tinydns 108.61.100.100
Denne kommando vil oprette mapper, filer og andre undermapper i /usr/local/etc/tinydns. Det vil også sætte IP-adressen på VPS'en i /usr/local/etc/tinydns/env/IP.
Opret mappen /service.
<ceph>[~]# mkdir /service
Rediger din /etc/rc.conffil:
<ceph>[~]# ee /etc/rc.conf
... og og disse linjer:
svscan_enable="YES"
svscan_servicedir="/service"
Gem konfigurationen og start svscantjenesten:
<ceph>[~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Gå derefter til denne mappe:
 <ceph>[~]# cd /usr/local/etc/tinydns/root
Rediger datafilen:
 <ceph>[root]# ee data
... og tilføje nogle DNS-data:
# domain1.com
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
&domain1.com::dns1.domain1.com.:3600
&domain1.com::dns2.domain1.com.:3600
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
# IP's (A records)
=dns1.domain1.com:108.61.210.99:3600
=dns2.domain1.com:89.201.163.42:3600
=mail1.domain1.com:89.201.163.42:3600
=mail2.domain1.com:85.114.41.8:3600
=www.domain1.com:108.61.178.194:3600
=test1.domain1.com:193.198.184.100:3600
=test2.domain1.com:108.61.178.215:3600
# Aliases
+domain1.com:108.61.178.194:3600
+smtp.domain1.com:89.201.163.42:3600
+imap.domain1.com:89.201.163.42:3600
Gem filen og afslut. 
Kør ls:
<ceph>[root]# ls
Makefile  add-alias  add-childns  add-host  add-mx  add-ns  data
Konverter dine tekstdata til databaseformatet:
<ceph>[root]# make
/usr/local/bin/tinydns-data
Kør lsigen:
<ceph>[root]# ls
Makefile  add-alias  add-childns  add-host  add-mx  add-ns  data  data.cdb
Læg mærke til data.cdbfilen. Du har oprettet det med makekommandoen.
Og en ting mere, opret et symbolsk link:
<ceph>[root]# ln -s /usr/local/etc/tinydns /service
Test nu din nye DNS-server. Erstat 108.61.178.110med IP-adressen på din server.
<ceph>[root]# host www.domain1.com 108.61.178.110 
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases: 
www.domain1.com has address 108.61.178.194
Navneserveropslag:
<ceph>[root]# host -t ns domain1.com 108.61.178.110 
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases: 
domain1.com name server dns1.domain1.com.
domain1.com name server dns2.domain1.com.
Mailserver MX-opslag:
<ceph>[root]# host -t mx domain1.com 108.61.178.110 
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases: 
domain1.com mail is handled by 10 mail1.domain1.com.
domain1.com mail is handled by 30 mail2.domain1.com.
Endnu en gang for at være sikker:
<ceph>[root]# host mail1.domain1.com 108.61.178.110 
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases: 
mail1.domain1.com has address 89.201.163.42
Tillykke! Du har en fungerende DNS-server. Erstat domain1.commed dit domæne. Efter hver ændring skal du køre makekommandoen for at lave en ny data.cdbfil.
Forklaring af datafilen:
"A"-poster begynder med et =tegn. Aliaser eller CNAME-poster med et +tegn. Mailservere begynder med @tegnet. Navnetjenere med &tegnet.
Eksempel 1: 
=test1.domain1.com:193.198.184.100:3600
=står for "A" rekord. test1.domain1.comer DNS-navnet, IP 193.198.184.100er den adresse, der test1.domain1.comløses i, og 3600 er TTL (time to live).
Eksempel 2:
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
I dette eksempel er mail1og mail2mailservere til domain1.com. mail1har prioritet 10 og mail2har prioritet 30. Det betyder at mailservere først vil forsøge at levere mail til mail1. Hvis det mail1mislykkes, så vil de prøve mail2.
Den følgende linje markerer begyndelsen af zoneinformationen. Det er påkrævet.
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
2013101203nummer bruges, når du har sekundær DNS hos en anden udbyder. Når du ændrer nummeret til 2013101204, vil den sekundære DNS vide, at der er nogle ændringer i DNS og vil opfange ændringerne. Dette er kun til informative formål (du skal bruge AXFR DNS-overførselstjenesten). Alternativt kan du kopiere og indsætte dine DNS-ændringer mellem to DJBDNS-servere med rsyncprogrammet.
Hvis du har PF Firewall på din FreeBSD-server, skal du tilføje denne linje for at tillade DNS-forespørgsler:
pass quick proto {tcp, udp} from any to $me port 53 flags S/SA keep state