Bind – Dns :: Mini How To
Contents
Latest stable version 9.4.2
http://ftp.isc.org/isc/bind9/9[..]bind-9.4.2-P1.tar.gz
http://www.isc.org/sw/bind/arm94/index.php
Για chroot bind ρίξτε μια ματιά εδώ:
https://balaskas.gr/wk/chrootbind
Δημιουργία Χρήστη & Αρχείων
Δημιουργία χρήστη named
Δημιουργία group named
Δημιουργία αρχείου /etc/named.conf
Δημιουργία αρχείου /etc/rndc.conf
Δημιουργία καταλόγου /var/namedb/
Αλλαγή δικαιοδοσίας στα
/etc/rndc.conf
/etc/namedb/
/var/namedb/
/var/log/bind
Formatter "highlight/html" not found
Εγκατάσταση
Formatter "highlight/html" not found
rndc
Για να εκτελούμε διάφορα controls στην υπηρεσία named χρησιμοποιούμε το
rndc
Για να μπορούμε να εκτελούμε διαφορα controls στο bind
μπορούμε να χρησιμοποιούμε το rndc. Για να μπορούμε να
χρησιμοποιούμε το rndc χρειάζεται πρώτα να παράγουμε ένα κλειδί
καθώς και τις απαραίτητες ρυθμίσεις στο /etc/named.conf
rndc-confgen
Κατά την εγκατάσταση του named γίνεται και η εγκατάσταση του
rndcμ προγράμματος το οποίο χρησιμοποιείται για την διαχείριση
του named (και κατά συνέπεια του bind). Το λογισμικό αυτό
χρησιμοποιώντας ένα κλειδί μπορεί και περνάει εντολές στο
named.
Για να μπορούμε να χρησιμοποιήσουμε το rndc πρέπει πρώτα να
δημιουργήσουμε το αντίστοιχο κλειδί καθώς και να περάσουμε
στο αρχείο conf που χρησιμοποιεί το named την απαραίτητη
εγγραφή που δηλώνει την ύπαρξη του κλειδιού αυτού.
Η εντολή με την οποία δημιουργούμε το κλειδί αλλά και τις
ρυθμίσεις για το named είναι η εξής:
rndc-confgen
Ελέγχουμε τους διακόπτες για να περάσουμε παραμέτρους.
rndc-confgen --help
π.χ.
Formatter "highlight/html" not found
named.conf
Το σημαντικότερο αρχείο στο λογισμικό dns bind είναι το αρχείο
/etc/named.conf
Σε αυτό το αρχείο περιέχεται η πληροφορία μας σχετικά με τις ρυθμίσεις του bind.
Παρακάτω θα δούμε βασικές ρυθμίσεις, καθώς και πως φορτώνουμε τις νέες μας ρυθμίσεις.
ΠΡΟΣΟΧΗ : Μετά από κάθε αλλαγή πρέπει να τρέχουμε την παρακάτω εντολή:
Formatter "highlight/html" not found
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
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` |
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:
ή εκτελούμε την παρακάτω εντολή:
Formatter "highlight/html" not found
ή το αντιγράφουμε από εδω:
Formatter "highlight/html" not found
Τα αρχεία μετά την εγκατάστασή μας
Formatter "highlight/html" not found
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"; };
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
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; };
Stats
Μία από τις πιο χρήσιμες εντολές του rndc είναι η εντολή stats, με την οποία μπορούμε να παράγουμε
στατιστικά. Η σύνταξή της είναι αρκετά απλή:
# rndc stats(code)
και παράγει τα στατιστικά στοιχεία στο αρχείο που έχουμε δηλώσει μέσω του named.conf αλλιώς στο αρχείο
named.stats κάτω από τον κατάλογο που έχουμε τις ζώνες μας. Στο δικό μας παράδειγμα είναι το
/var/named/named.stats
Αλλίως με την δική μας δήλωση
statistics-file "/var/log/bind/named.stats";
μπορούμε να τροποποιήσουμε το αρχείο στο οποίο θα καταγράφονται τα στατιστικά.
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 μας :
urls
Ίσως το καλύτερο site για dns
http://www.zytrax.com/books/dns/
Bind 9.4 Manual
http://www.isc.org/sw/bind/arm94/index.php
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