Ez az oktatóanyag bemutatja, hogyan konfigurálhat olyan DNS-szolgáltatást, amely könnyen karbantartható, könnyen konfigurálható, és általában biztonságosabb, mint a klasszikus BIND szolgáltatás. Ez a cikk feltételezi, hogy telepített FreeBSD-vel rendelkező VPS-t futtatsz.
A kezdéshez nyissa meg a terminált, és telepítse ezt a csomagot:
<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%
A telepítés automatikusan telepíti a további csomagokat ( daemontoolsés ucspi-tcp).
Hozzon létre két felhasználót, gtinydnsés gdnslog. Kezdje az első felhasználóval:
<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!
Most adja hozzá a második felhasználót:
<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!
Futtassa a következő parancsot. Cserélje ki az IP-címet a Vultr szerver címére.
<ceph>[~]# tinydns-conf gtinydns gdnslog /usr/local/etc/tinydns 108.61.100.100
Ez a parancs könyvtárakat, fájlokat és egyéb alkönyvtárakat hoz létre a /usr/local/etc/tinydns. A VPS IP-címét is beírja a -ba /usr/local/etc/tinydns/env/IP.
Hozza létre a könyvtárat /service.
<ceph>[~]# mkdir /service
Szerkessze a /etc/rc.conffájlt:
<ceph>[~]# ee /etc/rc.conf
... és ezek a sorok:
svscan_enable="YES"
svscan_servicedir="/service"
Mentse el a konfigurációt és indítsa el a svscanszolgáltatást:
<ceph>[~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Ezután lépjen erre a könyvtárra:
<ceph>[~]# cd /usr/local/etc/tinydns/root
Szerkessze a datafájlt:
<ceph>[root]# ee data
... és adjunk hozzá néhány DNS-adatot:
# 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
Mentse el a fájlt és lépjen ki.
Fuss ls:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data
Alakítsa át szöveges adatait adatbázis-formátumba:
<ceph>[root]# make
/usr/local/bin/tinydns-data
Fuss lsújra:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data data.cdb
Figyelje meg a data.cdbfájlt. makeparanccsal hozta létre .
És még valami, hozzon létre egy szimbolikus linket:
<ceph>[root]# ln -s /usr/local/etc/tinydns /service
Most tesztelje az új DNS-kiszolgálót. Cserélje 108.61.178.110ki a szerver IP-címét.
<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
Névszerver keresés:
<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 keresés:
<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.
Még egyszer, hogy biztos legyél:
<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
Gratulálunk! Van egy működő DNS-kiszolgálója. Cserélje ki domain1.coma saját domainjére. Minden módosítás után futtassa az makeúj data.cdbfájl létrehozásához szükséges parancsot .
Az adatfájl magyarázata:
Az "A" rekordok =előjellel kezdődnek . Aliasok vagy CNAME rekordok +előjellel. A levelezőszerverek a @jellel kezdődnek . Névszerverek a &jellel.
1. példa:
=test1.domain1.com:193.198.184.100:3600
=az "A" rekord rövidítése. test1.domain1.coma DNS név, az IP 193.198.184.100az a cím, amelyben test1.domain1.comfeloldódik, a 3600 pedig a TTL (time to live).
2. példa:
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
Ebben a példában mail1és mail2a levelezőszerverek a domain1.com. mail1prioritása 10, mail2prioritása 30. Ez azt jelenti, hogy a levelezőszerverek először a címre próbálják meg kézbesíteni a leveleket mail1. Ha mail1nem sikerül, akkor megpróbálják mail2.
A következő sor a zónainformáció kezdetét jelzi. Ez kötelező.
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
2013101203szám akkor használatos, ha másodlagos DNS-sel rendelkezik egy másik szolgáltatónál. Ha a számot a számra módosítja 2013101204, a másodlagos DNS tudni fogja, hogy változások történtek a DNS-ben, és felveszi a változtatásokat. Ez csak tájékoztató jellegű (szükség lesz az AXFR DNS átviteli szolgáltatásra). Alternatív megoldásként a programmal másolhatja és beillesztheti a DNS-módosításokat két DJBDNS-kiszolgáló között rsync.
Ha PF tűzfal van a FreeBSD-kiszolgálón, adja hozzá ezt a sort a DNS-lekérdezések engedélyezéséhez:
pass quick proto {tcp, udp} from any to $me port 53 flags S/SA keep state