This is an old revision of bind from 29.07.2019 19:04 edited by EvaggelosBalaskas.


Hits :

Bind – Dns :: Mini How To 


Latest stable version 9.4.2


http://www.isc.org/


filehttp://ftp.isc.org/isc/bind9/9[..]bind-9.4.2-P1.tar.gz


https://www.isc.org/bind/


Για chroot bind ρίξτε μια ματιά εδώ:
https://balaskas.gr/wiki/chroot/bind


top


Δημιουργία Χρήστη & Αρχείων


Δημιουργία χρήστη named
Δημιουργία group named
Δημιουργία αρχείου /etc/named.conf
Δημιουργία αρχείου /etc/rndc.conf
Δημιουργία καταλόγου /var/namedb/
Αλλαγή δικαιοδοσίας στα 

/etc/named.conf
/etc/rndc.conf
/etc/namedb/
/var/namedb/
/var/log/bind

Formatter "highlight/html" not found

Εγκατάσταση


Formatter "highlight/html" not found


top


rndc


Για να εκτελούμε διάφορα controls στην υπηρεσία named χρησιμοποιούμε το 
rndc


Για να μπορούμε να εκτελούμε διαφορα controls στο bind
μπορούμε να χρησιμοποιούμε το rndc. Για να μπορούμε να 
χρησιμοποιούμε το rndc χρειάζεται πρώτα να παράγουμε ένα κλειδί
καθώς και τις απαραίτητες ρυθμίσεις στο /etc/named.conf


top


rndc-confgen


Κατά την εγκατάσταση του named γίνεται και η εγκατάσταση του
rndcμ προγράμματος το οποίο χρησιμοποιείται για την διαχείριση
του named (και κατά συνέπεια του bind). Το λογισμικό αυτό
χρησιμοποιώντας ένα κλειδί μπορεί και περνάει εντολές στο
named.


Για να μπορούμε να χρησιμοποιήσουμε το rndc πρέπει πρώτα να 
δημιουργήσουμε το αντίστοιχο κλειδί καθώς και να περάσουμε
στο αρχείο conf που χρησιμοποιεί το named την απαραίτητη
εγγραφή που δηλώνει την ύπαρξη του κλειδιού αυτού.


Η εντολή με την οποία δημιουργούμε το κλειδί αλλά και τις
ρυθμίσεις για το named είναι η εξής:


rndc-confgen


Ελέγχουμε τους διακόπτες για να περάσουμε παραμέτρους.


rndc-confgen --help


π.χ.
Formatter "highlight/html" not found


top


named.conf


Το σημαντικότερο αρχείο στο λογισμικό dns bind είναι το αρχείο
/etc/named.conf


Σε αυτό το αρχείο περιέχεται η πληροφορία μας σχετικά με τις ρυθμίσεις του bind.


Παρακάτω θα δούμε βασικές ρυθμίσεις, καθώς και πως φορτώνουμε τις νέες μας ρυθμίσεις.


ΠΡΟΣΟΧΗ : Μετά από κάθε αλλαγή πρέπει να τρέχουμε την παρακάτω εντολή:
Formatter "highlight/html" not found


top


named


Πως ξεκινάμε τον dns server που έχουμε ρυθμίσει:


Formatter "highlight/html" not found


Εάν θέλουμε να δούμε όλα τα λάθη στην οθόνη μας :
Formatter "highlight/html" not found


Εάν θέλουμε να τρέξει ο δαίμονάς μας με έναν συγκεκριμένο χρήστη,
ώστε να μεταβιβάσει τα δικαιώματα σε αυτόν π.χ. username : named


Formatter "highlight/html" not found


Εάν θέλουμε να διαβάσει με συγκεκριμένο αρχείο ρυθμίσεων :


Formatter "highlight/html" not found


ΠΡΟΣΟΧΗ : Μετά από κάθε εκτέλεση named πληκτρολογούμε:
Formatter "highlight/html" not found


ή 


Formatter "highlight/html" not found


top


Signals


Signal Action rndc example
HUP  Reload rndc reload kill -HUP `cat /var/run/named.pid`
INT  Stop rndc dumpdb kill -INT `cat /var/run/named.pid`
TERM Stop rndc stop kill -TERM `cat /var/run/named.pid`

top


db.cache


Για να ξεκινήσουμε χρειάζεται να έχουμε κατεβάσει το αρχείο db.cache
στο οποίο αναφέρονται ΟΛΟΙ οι ROOT-SERVERS.


Root Dns Servers ονομάζονται γιατί αυτοί αποτελούν την ρίζα (root) ή αλλιώς "τελεία" ( . )
ενός domain ονόματος. Από εκεί ξεκινάμε την αναζήτηση ενός domain. Οι servers αυτοί
ορίζονται από A.ROOT-SERVERS.NET. έως Μ.ROOT-SERVERS.NET.


Η δήλωση στο named.conf αρχείο γίνεται ως εξής:


Formatter "highlight/html" not found


Το αρχείο db.cache ή αλλιώς named.cache ή αλλιώς named.root το κατεβάζουμε από το παρακάτω url:


ftp://ftp.internic.net


ή εκτελούμε την παρακάτω εντολή:


Formatter "highlight/html" not found


ή το αντιγράφουμε από εδω:


Formatter "highlight/html" not found


top


Τα αρχεία μετά την εγκατάστασή μας 


Formatter "highlight/html" not found


top


Example named.conf


key "rndc-key" {
        algorithm hmac-md5;
        secret "************************";
};
controls {
        inet 127.0.0.1 port 953
        allow { 127.0.0.1; } keys { "rndc-key"; };
};

zone "." IN {
        type hint;
        file "/var/named/db.cache";
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "/var/named/db.127.0.0";
};


top


Logging


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


Το λογισμικό bind έχει έναν αρκετά καλό μηχανισμό καταγραφής μηνυμάτων. Ορίζει ως κανάλια – channels
τις πηγές στις οποίες θα καταλήξουν τα διάφορα μηνύματα της υπηρεσίας. Στην συνέχεια μπορούμε να 
ορίσουμε για κάθε κανάλι ξεχωριστά το είδος των μηνυμάτων καθώς και την τελική πηγή καταγραφής των
μηνυμάτων αυτών. Κανάλι μπορεί να οριστεί ένας syslog server ή ακόμα και ένα αρχείο κειμένου. Αφού
ορίσουμε και το είδος των μηνυμάτων μπορούμε να ορίσουμε πλέον τις κατηγορίες των μηνυμάτων που θέλουμε
να καταγράφουμε και σε πιο κανάλι θέλουμε να καταγράφουμε ποια κατηγορία. Με αυτόν τον τρόπο μπορούμε
να έχουμε χωρίσει σε διαφορετικά κανάλια τα διάφορα μηνύματα που παίρνουμε από την υπηρεσία μας.


Τα είδη των μηνυμάτων ονομάζονται severities και ορίζονται ως εξής;


  • critical
  • error
  • warning
  • notice
  • info
  • debug [level]
  • dynamic

Τα παραπάνω severities είναι ταξινομήμένα ανάλογα με το είδος των μηνυμάτων καταγραφής, με λίγα λόγια το 
severity dynamic καταγράφει όλα των ειδών τα μηνύματα για ένα κανάλι, ενώ το severity critical μόνο τα
μηνύματα εκείνα που κάνουν την υπηρεσία του dns να λειτουργεί ή όχι.


Ένα παράδειγμα είναι το παρακάτω:


logging{
  channel my_log {
    file "/var/log/bind/named.log";
    severity dynamic;
    print-time yes;
    print-severity yes;
    print-category yes;
  };


Στο παραπάνω παράδειγμα δηλώνουμε ότι για το κανάλι my_log θέλουμε η πηγή καταγραφής μηνυμάτων να είναι
το αρχείο /var/log/bind/named.log και να καταγράφει το είδος των μηνυμάτων με severity dynamic.
Επίσης δηλώσαμε για κάθε μήνυμα που καταγράφεται ότι θέλουμε να καταγράφεται και η ώρα, σε πιο είδος ανήκει και σε ποια κατηγορία.


Σημείωση: Χρειάζεται να προσέξουμε τι δικαιώματα έχουμε δώσει στο παραπάνω αρχείο.


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


  • default
  • general
  • client
  • config
  • database
  • dnssec
  • lame-servers
  • network
  • notify
  • queries
  • resolver
  • secutiry
  • update
  • update-security
  • xfer-in
  • xfre-out

Έαν παράδειγμα είναι το εξής:


category default{
    my_log;
  };
};


Έτσι λοιπόν με τα παραπάνω θα καταγράφουμε για το severity dynamic και την κατηγορία default τα μηνύματα στο κανάλι my_log
το οποίο είναι το αρχείο /var/log/bind/named.log


top


Forward


Όταν θέλουμε να κάνουμε forword τα dns queries από τον δικό μας dns server σε κάποιον άλλο τότε πολύ απλά
πρέπει να δηλώσουμε για την ζώνη αυτή σε ποιον dns server πρέπει να "αποστέλονται" τα ερωτήματα. Το παρακάτω
παράδειγμα στέλνει στον ns1.otenet.gr και ns2.otenet.gr όλα τα ερωτήματα της ζώνης otenet.gr


zone "otenet.gr" {
        type forward;
        forwarders { 195.170.0.1;  };
};


Εάν θέλουμε να γίνεται ΜΟΝΟ forward της ζώνης τότε η παραπάνω ζώνη γράφεται ως εξής:


zone "otenet.gr" {
        type forward;
        forwarders { 195.170.0.1;  };
        forward only;
};


top


Stats


Μία από τις πιο χρήσιμες εντολές του rndc είναι η εντολή stats, με την οποία μπορούμε να παράγουμε
στατιστικά. Η σύνταξή της είναι αρκετά απλή:


# rndc stats
(code)


και παράγει τα στατιστικά στοιχεία στο αρχείο που έχουμε δηλώσει μέσω του named.conf αλλιώς στο αρχείο
named.stats κάτω από τον κατάλογο που έχουμε τις ζώνες μας. Στο δικό μας παράδειγμα είναι το 
/var/named/named.stats


Αλλίως με την δική μας δήλωση


statistics-file "/var/log/bind/named.stats";


μπορούμε να τροποποιήσουμε το αρχείο στο οποίο θα καταγράφονται τα στατιστικά.


top


allow-query


Ο dns server που έχουμε ΔΕΝ θέλουμε να εξυπηρετεί όλον τον κόσμο. Θέλουμε να εξυπηρετεί μόνο εμάς.
Οπότε η δήλωση που πρέπει να βάλουμε στο αρχείο ρυθμίσεων /etc/named.conf είναι το allow-query


Η δήλωση allow-query παίρνει ως όρισμα μία ip ή ακόμα και ένα class και αποτελεί μία από τις καλύτερες λύσεις
για να "κόψουμε" κάποιον εκτός του δίκτυου μας. Η δήλωση αυτή μπορεί να μπει και να έχει καθολική σημασία
στην directive options ή σε μία συγκεκριμένη ζώνη ή ακόμα σε ένα view.


Παραδείγματα χρήσης είναι τα παρακάτω:


allow-query { 192.168.1.1; };


ή 


allow-query { 192.168.1/24; };


Ένα τυπικό μήνυμα λάθους είναι το εξής:


Host 13.0.0.127.in-addr.arpa not found: 5(REFUSED)


Ενώ στον server μας :


top


urls


Ίσως το καλύτερο site για dns


http://www.zytrax.com/books/dns/


Bind 9.4 Manual


http://www.isc.org/sw/bind/arm94/index.php


top


Troubleshooting


This section contains commands for simple troubleshooting for dns.


dig any +short ebalaskas.gr
dig any +trace ebalaskas.gr
host -t ns ebalaskas.gr
host -t mx ebalaskas.gr
host -t soa ebalaskas.gr

top