Ovaj vodič će vam pokazati kako konfigurirati DNS uslugu koju je lako održavati, lako konfigurirati i koja je općenito sigurnija od klasične BIND usluge. Ovaj članak pretpostavlja da koristite VPS s instaliranim FreeBSD-om.
Za početak otvorite svoj terminal i instalirajte ovaj paket:
<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%
Instalacija će automatski instalirati dodatne pakete ( daemontoolsi ucspi-tcp).
Stvorite dva korisnika gtinydnsi gdnslog. Počnite s prvim korisnikom:
<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!
Sada dodajte drugog korisnika:
<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!
Pokrenite sljedeću naredbu. Zamijenite IP adresu adresom vašeg Vultr poslužitelja.
<ceph>[~]# tinydns-conf gtinydns gdnslog /usr/local/etc/tinydns 108.61.100.100
Ova naredba će stvoriti direktorije, datoteke i druge poddirektorije u /usr/local/etc/tinydns. Također će staviti IP adresu VPS-a u /usr/local/etc/tinydns/env/IP.
Stvorite imenik /service.
<ceph>[~]# mkdir /service
Uredite svoju /etc/rc.confdatoteku:
<ceph>[~]# ee /etc/rc.conf
... i i ove linije:
svscan_enable="YES"
svscan_servicedir="/service"
Spremite konfiguraciju i pokrenite svscanuslugu:
<ceph>[~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Zatim idite na ovaj direktorij:
<ceph>[~]# cd /usr/local/etc/tinydns/root
Uredite datadatoteku:
<ceph>[root]# ee data
... i dodajte neke DNS podatke:
# 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
Spremite datoteku i izađite.
Trči ls:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data
Pretvorite svoje tekstualne podatke u format baze podataka:
<ceph>[root]# make
/usr/local/bin/tinydns-data
Pokreni lsponovo:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data data.cdb
Obratite pažnju na data.cdbdatoteku. Stvorili ste ga makenaredbom.
I još nešto, stvorite simboličku vezu:
<ceph>[root]# ln -s /usr/local/etc/tinydns /service
Sada testirajte svoj novi DNS poslužitelj. Zamijenite 108.61.178.110IP adresom vašeg poslužitelja.
<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
Traženje poslužitelja imena:
<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.
Traženje MX poslužitelja pošte:
<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.
Još jednom da budem siguran:
<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
Čestitamo! Imate DNS poslužitelj koji radi. Zamijenite domain1.comsvojom domenom. Nakon svake promjene, pokrenite makenaredbu za stvaranje nove data.cdbdatoteke.
Objašnjenje datoteke s podacima:
"A" zapisi počinju =znakom. Aliasi ili CNAME zapisi sa +znakom. Poslužitelji pošte počinju @znakom. Nameserveri sa &znakom.
Primjer 1:
=test1.domain1.com:193.198.184.100:3600
=označava "A" rekord. test1.domain1.comje DNS ime, IP 193.198.184.100je adresa u kojoj se test1.domain1.comrješava, a 3600 je TTL (vrijeme života).
Primjer 2:
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
U ovom primjeru mail1i mail2su poslužitelji pošte za domain1.com. mail1ima prioritet 10 i mail2prioritet 30. To znači da će poslužitelji pošte prvo pokušati isporučiti poštu na mail1. Ako mail1ne uspije, onda će pokušati mail2.
Sljedeći redak označava početak informacija o zoni. To je potrebno.
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
2013101203broj se koristi kada imate sekundarni DNS na nekom drugom davatelju. Kada promijenite broj u 2013101204, sekundarni DNS će znati da postoje neke promjene u DNS-u i pokupit će promjene. Ovo je samo u informativne svrhe (trebala bi vam usluga AXFR DNS prijenosa). Alternativno, pomoću programa možete kopirati i zalijepiti svoje DNS promjene između dva DJBDNS poslužitelja rsync.
Ako imate PF Firewall na svom FreeBSD poslužitelju, dodajte ovaj redak da biste omogućili DNS upite:
pass quick proto {tcp, udp} from any to $me port 53 flags S/SA keep state