Ρύθμιση διακομιστή DNS Master-Slave με χρήση εργαλείων "Bind" στο RHEL/CentOS 6.5


Διακομιστής ονομάτων τομέα (DNS) που χρησιμοποιείται για την επίλυση ονομάτων σε οποιουσδήποτε κεντρικούς υπολογιστές. Οι κύριοι διακομιστές DNS (Κύριος διακομιστής) είναι οι αρχικοί χειριστές δεδομένων ζώνης και ο διακομιστής Slave DNS (Δευτερεύων διακομιστής) είναι απλώς ένας εφεδρικός διακομιστής που χρησιμοποιείται για την αντιγραφή των ίδιων πληροφοριών ζώνης από τους κύριους διακομιστές. Ο κύριος διακομιστής θα επιλύσει τα ονόματα για κάθε host που ορίσαμε στη βάση δεδομένων ζώνης και θα χρησιμοποιήσει το πρωτόκολλο UDP, επειδή τα πρωτόκολλα UDP δεν χρησιμοποιούν ποτέ τη διαδικασία επιβεβαίωσης ενώ το tcp χρησιμοποιεί επιβεβαίωση. Οι διακομιστές DNS χρησιμοποιούν επίσης πρωτόκολλα UDP για την επίλυση του αιτήματος ερωτήματος το νωρίτερο.

Πώς λειτουργεί το DNS;

Η κατανόηση του DNS μπορεί να προκαλεί λίγη σύγχυση για τους αρχάριους. Ακολουθεί μια σύντομη εξήγηση για το πώς λειτουργεί το DNS.

Ας πούμε, αν χρειαστεί να αποκτήσουμε πρόσβαση σε κάποιον ιστότοπο, τι θα κάνουμε; Απλώς πληκτρολογήστε www.google.com στο πρόγραμμα περιήγησης και πατήστε enter. Χμμ, αυτό είναι το μόνο που γνωρίζουμε, αλλά το γεγονός είναι, πόσο πόνο το περνάει το DNS, ενώ ρωτά για εμάς. Ενώ πληκτρολογούμε www.google.com, το σύστημα θα αναζητήσει το www.google.com. Κάθε φορά που πληκτρολογούμε κάποιο όνομα τομέα, υπάρχει μια . (κουκκίδα) στο τέλος του www.google.com που λέει να κάνετε αναζήτηση στον ριζικό διακομιστή του χώρου ονομάτων.

Σε παγκόσμιο επίπεδο υπάρχουν 13 ριζικοί διακομιστές διαθέσιμοι για την επίλυση του ερωτήματος. Στην αρχή, ενώ πατάμε enter ως www.google.com, το πρόγραμμα περιήγησής μας θα περάσει ένα αίτημα στον τοπικό μας επιλύτη, ο οποίος έχει καταχώριση σχετικά με τις πληροφορίες του κύριου και του υποτελούς διακομιστή DNS. Εάν δεν έχουν πληροφορίες σχετικά με αυτό το ζητούμενο ερώτημα, θα μεταβιβάσουν το αίτημα στον τομέα ανώτατου επιπέδου (TLD), εάν ο TLD πει ότι δεν γνωρίζω το αίτημα, ενδέχεται να γνωρίζει ο έγκυρος διακομιστής αίτημα, θα προωθηθεί σε έγκυρους διακομιστές, εδώ μόνο το www.google.com ορίστηκε ως διεύθυνση 72.36.15.56.

Εν τω μεταξύ, ο έγκυρος διακομιστής θα δώσει την απάντηση στο TLD και ο TLD θα περάσει στον διακομιστή root και ο root θα παρέχει τις πληροφορίες στο πρόγραμμα περιήγησης, επομένως το πρόγραμμα περιήγησης θα αποθηκεύσει προσωρινά το αίτημα DNS για μελλοντική χρήση. Έτσι, αυτή η μακρά διαδικασία θα επιλυθεί σε χιλιοστά του δευτερολέπτου. Εάν δεν γνωρίζουν το αίτημα, θα απαντήσουν ως NXDOMAIN. Αυτό σημαίνει ότι δεν υπάρχει καμία εγγραφή στη βάση δεδομένων Zone. Ελπίζουμε αυτό να σας κάνει να κατανοήσετε πώς λειτουργεί το DNS.

Διαβάστε επίσης: Ρύθμιση του διακομιστή προσωρινής μνήμης DNS στο Ubuntu

Το περιβάλλον δοκιμών μου

Για αυτό το άρθρο, χρησιμοποιώ 3 μηχανήματα, 2 για τη ρύθμιση διακομιστή (κύριος και υποτελής) και 1 για πελάτη.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
Πακέτα Απαιτήσεων
bind, bind-utils, bind-chroot
Χρησιμοποιούνται αρχεία διαμόρφωσης
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Θύρα & Πρωτόκολλα που χρησιμοποιούνται
53, UDP

Ρύθμιση του κύριου διακομιστή DNS

Αρχικά, επαληθεύστε τη διεύθυνση IP, το όνομα κεντρικού υπολογιστή και την έκδοση διανομής του κύριου διακομιστή DNS, προτού προχωρήσετε στη ρύθμιση.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Μόλις επιβεβαιώσετε ότι οι παραπάνω ρυθμίσεις είναι σωστές, ήρθε η ώρα να προχωρήσετε στην εγκατάσταση των απαιτούμενων πακέτων.

sudo yum install bind* -y

Εγκατάσταση και ρύθμιση παραμέτρων Bind

Μετά την εγκατάσταση των απαιτούμενων πακέτων, ορίστε τώρα τα αρχεία ζώνης στο αρχείο κύριας διαμόρφωσης «named.conf».

sudo vim /etc/named.conf

Παρακάτω δίνεται η καταχώρισή μου named.conf, αλλάξτε το αρχείο διαμόρφωσης ανάλογα με τις ανάγκες σας.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Ακολουθεί η εξήγηση κάθε διαμόρφωσης που χρησιμοποιήσαμε στο παραπάνω αρχείο.

  1. θύρα ακρόασης 53 – Χρησιμοποιείται για την ακρόαση του DNS σε διαθέσιμες διεπαφές.
  2. Κύριο DNS – Ορίστε τη διεύθυνση IP του κύριου DNS για να ακούσετε το ερώτημα.
  3. Slave DNS – Ορίστε το Slave DNS, το οποίο χρησιμοποιείται για τον συγχρονισμό των πληροφοριών της ζώνης μας για την επίλυση των κεντρικών υπολογιστών από το Master.
  4. αναδρομή όχι – Εάν οριστεί ναι, τα αναδρομικά ερωτήματα θα μετατρέψουν τον διακομιστή σε επίθεση DDOS.
  5. Όνομα ζώνης – Ορίστε το όνομα της ζώνης σας εδώ ως tecminlocal.com.
  6. type master – Καθώς αυτό το σύστημα έχει διαμορφωθεί για έναν κύριο διακομιστή, για τον επερχόμενο slave διακομιστή θα είναι slave.
  7. tecmintlocal.fwd.zone – Αυτό το αρχείο έχει τις πληροφορίες κεντρικού υπολογιστή για αυτήν τη ζώνη.
  8. allow-update none – Εάν δεν θα οριστεί καμία. δεν θα χρησιμοποιεί Dynamic DNS (DDNS).

Δημιουργία αρχείων κύριας ζώνης

Αρχικά, ας ορίσουμε την είσοδο της ζώνης αναζήτησης προς τα εμπρός. Εδώ πρέπει να δημιουργήσουμε τα αρχεία ζώνης στο όνομα αυτού που έχουμε ορίσει στο αρχείο named.conf όπως παρακάτω.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Χρησιμοποιούμε δείγματα αρχείων διαμόρφωσης για τη δημιουργία αρχείων προς τα εμπρός ζώνης, για αυτό πρέπει να αντιγράψουμε τα δείγματα αρχείων διαμόρφωσης.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Μόλις αντιγράψατε τα αρχεία διαμόρφωσης, τώρα επεξεργαστείτε αυτά τα αρχεία ζωνών χρησιμοποιώντας το πρόγραμμα επεξεργασίας vim.

sudo vim /var/named/tecmintlocal.fwd.zone

Πριν ορίσουμε τις πληροφορίες κεντρικού υπολογιστή στο αρχείο ζώνης προώθησης, πρώτα ρίξτε μια γρήγορη ματιά στο δείγμα αρχείου ζώνης.

Αυτή είναι η διαμόρφωση ζώνης προς τα εμπρός, προσθέστε την παρακάτω καταχώρηση και κάντε αλλαγές ανάλογα με τις ανάγκες σας.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

Αποθηκεύστε και κλείστε το αρχείο χρησιμοποιώντας wq!. Μετά την επεξεργασία της μπροστινής αναζήτησης, φαίνεται όπως παρακάτω, Χρησιμοποιήστε TAB για να αποκτήσετε μια αξιοπρεπή μορφή στο αρχείο ζώνης.

Τώρα, δημιουργήστε αρχείο αντίστροφης αναζήτησης, έχουμε ήδη δημιουργήσει ένα αντίγραφο του αρχείου επαναφοράς στο όνομα tecmintlocal.rev.zone. Έτσι, χρησιμοποιούμε αυτό το αρχείο για να διαμορφώσουμε την αντίστροφη αναζήτηση.

sudo vim /var/named/tecmintlocal.rev.zone

Πριν ορίσετε τις πληροφορίες κεντρικού υπολογιστή στο αρχείο αντίστροφης ζώνης, ρίξτε μια γρήγορη ματιά στο δείγμα αρχείου αντίστροφης αναζήτησης όπως φαίνεται παρακάτω.

Αυτή είναι η διαμόρφωση της αντίστροφης ζώνης μου, προσθέστε την παρακάτω καταχώρηση και κάντε αλλαγές ανάλογα με τις ανάγκες σας.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

Αποθηκεύστε και κλείστε το αρχείο χρησιμοποιώντας wq!. Μετά την επεξεργασία της αντίστροφης αναζήτησης, φαίνεται όπως παρακάτω, Χρησιμοποιήστε TAB για να αποκτήσετε μια αξιοπρεπή μορφή στο αρχείο ζώνης.

Ελέγξτε την ομαδική ιδιοκτησία των αρχείων μπροστινής αναζήτησης και αντίστροφης αναζήτησης, προτού ελέγξετε για τυχόν σφάλματα στη διαμόρφωση.

sudo ls -l /var/named/

Εδώ μπορούμε να δούμε και τα δύο αρχεία να ανήκουν στην ιδιοκτησία root χρηστών, επειδή τα αρχεία που κάνουμε αντίγραφα από δείγματα αρχείων είναι διαθέσιμα στο /var/named/. Αλλάξτε την ομάδα σε named και στα δύο αρχεία χρησιμοποιώντας τις ακόλουθες εντολές.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Αφού ορίσετε τη σωστή ιδιοκτησία στα αρχεία, επαληθεύστε τα ξανά.

sudo ls -l /var/named/

Τώρα, ελέγξτε για τα σφάλματα στα αρχεία ζώνης, πριν ξεκινήσετε την υπηρεσία DNS. Ελέγξτε πρώτα το αρχείο named.conf και, στη συνέχεια, ελέγξτε τα άλλα αρχεία ζώνης.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

Από προεπιλογή, το iptables εκτελούνταν και ο διακομιστής DNS μας περιορίζεται στον localhost, εάν ο πελάτης θέλει να επιλύσει το όνομα από τον διακομιστή DNS μας, τότε πρέπει να επιτρέψουμε το εισερχόμενο αίτημα, για αυτό πρέπει να προσθέσουμε τον κανόνα εισερχόμενου iptables για τη θύρα 53.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Τώρα, βεβαιωθείτε ότι οι κανόνες έχουν προστεθεί σωστά στην αλυσίδα INPUT.

sudo iptables -L INPUT

Στη συνέχεια, αποθηκεύστε τους κανόνες και επανεκκινήστε το τείχος προστασίας.

sudo service iptables save
sudo service iptables restart

Ξεκινήστε την ονομαζόμενη υπηρεσία και κάντε την επίμονη.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Τέλος, δοκιμάστε τα διαμορφωμένα αρχεία ζώνης Master DNS (εμπρός και πίσω), χρησιμοποιώντας τα εργαλεία dig & nslookup.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Δροσερός! Έχουμε διαμορφώσει έναν Κύριο DNS, τώρα πρέπει να ρυθμίσουμε έναν διακομιστή Slave DNS. Ας προχωρήσουμε στη ρύθμιση ενός slave server, Αυτό δεν θα πάρει πολύ χρόνο ως κύρια εγκατάσταση.

Ρύθμιση του Slave DNS Server

Στο Slave machine, πρέπει επίσης να εγκαταστήσουμε τα ίδια πακέτα δεσμεύσεων όπως φαίνεται στο Master, οπότε ας τα εγκαταστήσουμε χρησιμοποιώντας την ακόλουθη εντολή.

sudo yum install bind* -y

Ανοίξτε και επεξεργαστείτε το αρχείο "named.conf" για τη βάση δεδομένων ζώνης και την ακρόαση θύρας.

sudo vim /etc/named.conf

Κάντε αλλαγές όπως φαίνεται, σύμφωνα με τις απαιτήσεις σας.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Ξεκινήστε την υπηρεσία DNS χρησιμοποιώντας.

sudo service named start

Μετά την επανεκκίνηση της υπηρεσίας bind, δεν χρειάζεται να ορίσουμε τις πληροφορίες ζώνης μεμονωμένα, καθώς η allow-transfer θα αναπαράγει τις πληροφορίες ζώνης από τον κύριο διακομιστή, όπως φαίνεται στην παρακάτω εικόνα.

sudo ls -l /var/named/slaves

Επαληθεύστε τις πληροφορίες ζώνης χρησιμοποιώντας την εντολή cat.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

Στη συνέχεια, ανοίξτε τη θύρα DNS 53 σε iptables για να επιτρέψετε την εισερχόμενη σύνδεση.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Αποθηκεύστε τους κανόνες iptables και επανεκκινήστε την υπηρεσία iptables.

sudo service iptables save
sudo service iptables restart

Κάντε την υπηρεσία επίμονη κατά την εκκίνηση του συστήματος.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

Αυτό είναι!. Τώρα είναι ώρα να διαμορφώσουμε τους υπολογιστές-πελάτες μας και να ελέγξουμε για το όνομα κεντρικού υπολογιστή.

Ρύθμιση παραμέτρων υπολογιστή-πελάτη

Στην πλευρά του πελάτη, πρέπει να εκχωρήσουμε την καταχώρηση Πρωτεύον (192.168.0.200) και Δευτερεύον DNS (192.168.0.201) στις ρυθμίσεις δικτύου για να εκχωρήσουμε ένα όνομα κεντρικού υπολογιστή. Για να το κάνετε, εκτελέστε την εντολή setup για να ορίσετε όλες αυτές τις εγγραφές όπως φαίνεται στην εικόνα.

setup

Διαφορετικά, επεξεργαστείτε το αρχείο «/etc/reslov.conf» και προσθέστε τις ακόλουθες καταχωρήσεις.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Τώρα, επαληθεύστε την αναζήτηση ip, ονόματος κεντρικού υπολογιστή και διακομιστή ονόματος.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Τώρα, ελέγξτε την αναζήτηση προς τα εμπρός και αντίστροφα DNS χρησιμοποιώντας.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Κατανόηση της εξόδου εκσκαφής:

  1. Header – Αυτό λέει όλα όσα ζητήσαμε και πώς ήταν το αποτέλεσμα.
  2. Κατάσταση – Η κατάσταση δεν ήταν ΚΑΜΙΑ ΣΦΑΛΜΑ, αυτό σημαίνει ότι το αίτημα ερωτήματος που στάλθηκε από εμάς ήταν επιτυχές χωρίς κανένα ΣΦΑΛΜΑ.
  3. Ερώτηση – Το ερώτημα που έγινε από εμάς, εδώ το ερώτημά μου ήταν masterdns.tecmintlocal.com.
  4. Απάντηση – Το αίτημα ερωτήματος επιλύθηκε εάν υπάρχουν διαθέσιμες πληροφορίες.
  5. Αυθεντία – Η απάντηση των διακομιστών ονομάτων για τον τομέα και τη ζώνη.
  6. Πρόσθετα – Πρόσθετες πληροφορίες σχετικά με διακομιστές ονομάτων, όπως όνομα κεντρικού υπολογιστή και διεύθυνση IP.
  7. Χρόνος ερωτήματος – Πόσος χρόνος χρειάστηκε για την επίλυση των ονομάτων από τους παραπάνω διακομιστές.

Τέλος ελέγξτε για τον κόμβο μας και κάντε ένα ping.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Τέλος, η εγκατάσταση ολοκληρώθηκε, εδώ έχουμε διαμορφώσει επιτυχώς και τον κύριο (κύριο) και τον δευτερεύοντα διακομιστή DNS, ελπίζουμε ότι όλοι έχουν ρυθμιστεί χωρίς κανένα πρόβλημα, μην διστάσετε να αφήσετε ένα σχόλιο εάν αντιμετωπίζετε οποιοδήποτε πρόβλημα κατά την εγκατάσταση.