Αυτό το σεμινάριο θα σας δείξει πώς να διαμορφώσετε μια υπηρεσία DNS που είναι εύκολη στη συντήρηση, εύκολη στη διαμόρφωση και που είναι γενικά πιο ασφαλής από την κλασική υπηρεσία BIND. Αυτό το άρθρο προϋποθέτει ότι εκτελείτε ένα VPS με εγκατεστημένο το FreeBSD.
Για να ξεκινήσετε, ανοίξτε το τερματικό σας και εγκαταστήστε αυτό το πακέτο:
<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%
Η εγκατάσταση θα εγκαταστήσει αυτόματα πρόσθετα πακέτα ( daemontoolsκαι ucspi-tcp).
Δημιουργήστε δύο χρήστες gtinydnsκαι gdnslog. Ξεκινήστε με τον πρώτο χρήστη:
<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!
Τώρα, προσθέστε τον δεύτερο χρήστη:
<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!
Εκτελέστε την ακόλουθη εντολή. Αντικαταστήστε τη διεύθυνση IP με τη διεύθυνση του διακομιστή σας Vultr.
<ceph>[~]# tinydns-conf gtinydns gdnslog /usr/local/etc/tinydns 108.61.100.100
Αυτή η εντολή θα δημιουργήσει καταλόγους, αρχεία και άλλους υποκαταλόγους στο /usr/local/etc/tinydns. Θα βάλει επίσης τη διεύθυνση IP του VPS στο /usr/local/etc/tinydns/env/IP.
Δημιουργήστε τον κατάλογο /service.
<ceph>[~]# mkdir /service
Επεξεργαστείτε το /etc/rc.confαρχείο σας :
<ceph>[~]# ee /etc/rc.conf
... και αυτές οι γραμμές:
svscan_enable="YES"
svscan_servicedir="/service"
Αποθηκεύστε τη διαμόρφωση και ξεκινήστε την svscanυπηρεσία:
<ceph>[~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Στη συνέχεια, μεταβείτε σε αυτόν τον κατάλογο:
<ceph>[~]# cd /usr/local/etc/tinydns/root
Επεξεργαστείτε το dataαρχείο:
<ceph>[root]# ee data
... και προσθέστε ορισμένα δεδομένα DNS:
# 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
Αποθηκεύστε το αρχείο και βγείτε.
Τρέξιμο ls:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data
Μετατρέψτε τα δεδομένα κειμένου σας στη μορφή βάσης δεδομένων:
<ceph>[root]# make
/usr/local/bin/tinydns-data
Τρέξτε lsξανά:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data data.cdb
Παρατηρήστε το data.cdbαρχείο. Το έχετε δημιουργήσει με την makeεντολή.
Και κάτι ακόμα, δημιουργήστε έναν συμβολικό σύνδεσμο:
<ceph>[root]# ln -s /usr/local/etc/tinydns /service
Τώρα δοκιμάστε τον νέο σας διακομιστή DNS. Αντικαταστήστε 108.61.178.110με τη διεύθυνση IP του διακομιστή σας.
<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
Αναζήτηση διακομιστή ονομάτων:
<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:
<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.
Άλλη μια φορά για να είστε σίγουροι:
<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
Συγχαρητήρια! Έχετε έναν διακομιστή DNS που λειτουργεί. Αντικαταστήστε domain1.comμε τον τομέα σας. Μετά από κάθε αλλαγή, εκτελέστε την makeεντολή για να δημιουργήσετε νέο data.cdbαρχείο.
Επεξήγηση του αρχείου δεδομένων:
Οι εγγραφές "Α" ξεκινούν με ένα =σημάδι. Ψευδώνυμα ή εγγραφές CNAME με +πρόσημο. Οι διακομιστές αλληλογραφίας ξεκινούν με το @σύμβολο. Διακομιστές ονομάτων με το &σύμβολο.
Παράδειγμα 1:
=test1.domain1.com:193.198.184.100:3600
=σημαίνει "Α" ρεκόρ. test1.domain1.comείναι το όνομα DNS, IP 193.198.184.100είναι η διεύθυνση στην οποία test1.domain1.comεπιλύεται και 3600 είναι το TTL (time to live).
Παράδειγμα 2:
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
Σε αυτό το παράδειγμα, mail1και mail2είναι διακομιστές αλληλογραφίας για domain1.com. mail1έχει προτεραιότητα 10 και mail2έχει προτεραιότητα 30. Αυτό σημαίνει ότι οι διακομιστές αλληλογραφίας θα προσπαθήσουν πρώτα να παραδώσουν την αλληλογραφία στο mail1. Αν mail1αποτύχει, τότε θα προσπαθήσουν mail2.
Η ακόλουθη γραμμή σηματοδοτεί την αρχή των πληροφοριών της ζώνης. Είναι απαραίτητο.
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
2013101203Ο αριθμός χρησιμοποιείται όταν έχετε δευτερεύον DNS σε κάποιον άλλο πάροχο. Όταν αλλάξετε τον αριθμό σε 2013101204, το δευτερεύον DNS θα γνωρίζει ότι υπάρχουν κάποιες αλλαγές στο DNS και θα λάβει τις αλλαγές. Αυτό είναι μόνο για ενημερωτικούς σκοπούς (θα χρειαστείτε την υπηρεσία μεταφοράς DNS AXFR). Εναλλακτικά, μπορείτε να αντιγράψετε και να επικολλήσετε τις αλλαγές DNS μεταξύ δύο διακομιστών DJBDNS με το rsyncπρόγραμμα.
Εάν έχετε PF Firewall στον διακομιστή σας FreeBSD, προσθέστε αυτήν τη γραμμή για να επιτρέψετε ερωτήματα DNS:
pass quick proto {tcp, udp} from any to $me port 53 flags S/SA keep state