Αυτό το σεμινάριο θα σας δείξει πώς να διαμορφώσετε μια υπηρεσία 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