Επίλυση Προβλημάτων

Αυτή η ενότητα καλύπτει τρόπους που βοηθούν στην εύρεση της αιτίας όταν δημιουργούνται προβλήματα με το DNS και το BIND9.

Δοκιμή

resolv.conf

Το πρώτο βήμα για να δοκιμάσετε το BIND9 είναι να προσθέσετε τη διεύθυνση IP του εξυπηρετητή ονομάτων σε έναν επιλυτή (hosts resolver). Ο Κύριος εξυπηρετητής ονομάτων θα πρέπει να είναι ρυθμισμένος όπως και ένας άλλος υπολογιστής για να ελέγχονται δύο φορές τα πράγματα. Απλά επεξεργαστείτε το /etc/resolv.conf και προσθέστε τα ακόλουθα:

nameserver	192.168.1.10
nameserver	192.168.1.11
[Σημείωση]

Θα πρέπει επίσης να προσθέσετε την διεύθυνση IP του δευτερεύοντος εξυπηρετητή ονομάτων για την περίπτωση που ο πρωτεύων δεν είναι διαθέσιμος.

dig

Αν εγκαταστήσατε το πακέτο dnsutils, μπορείτε να ελέγξετε την εγκατάστασή σας χρησιμοποιώντας το εργαλείο αναζήτησης DNS dig:

  • Αφού εγκαταστήσετε το BIND9 χρησιμοποιήστε το dig με την διεπαφή loopback για να σιγουρευτείτε πως αναμένει για συνδέσεις στην θύρα 53. Σε ένα τερματικό πληκτρολογήστε:

    dig -x 127.0.0.1
    

    Θα πρέπει να δείτε γραμμές παρόμοιες με τις παρακάτω στο αποτέλεσμα της εντολής:

    ;; Query time: 1 msec
    ;; SERVER: 192.168.1.10#53(192.168.1.10)
    
  • Αν έχετε ρυθμίσει το BIND9 ως εξυπηρετητή ονομάτων προσωρινής αποθήκευσης (Caching), «κάντε» dig σε ένα εξωτερικό όνομα τομέα για να ελέγξετε τον χρόνο του ερωτήματος:

    dig ubuntu.com
    

    Παρατηρήστε τον χρόνο του ερωτήματος προς το τέλος του αποτελέσματος της εντολής:

    ;; Query time: 49 msec
    

    Μετά από μία δεύτερη εκτέλεση του dig θα πρέπει να υπάρχει βελτίωση:

    ;; Query time: 1 msec
    

ping

Τώρα για να δείτε πώς οι εφαρμογές χρησιμοποιούν το DNS για να αναλύσουν ένα όνομα υπολογιστή χρησιμοποιήστε το εργαλείο ping για να στείλετε ένα αίτημα echo ICMP. Σε ένα τερματικό πληκτρολογήστε:

ping example.com

Αυτό ελέγχει αν ο εξυπηρετητής ονομάτων μπορεί να επιλύσει το όνομα ns.example.com σε διεύθυνση IP. Το αποτέλεσμα της εντολής θα πρέπει να μοιάζει με:

PING ns.example.com (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.800 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.813 ms

named-checkzone

Ένας πολύ καλός τρόπος για να ελέγξετε τα αρχεία ζώνης σας είναι χρησιμοποιώντας το εργαλείο named-checkzone που εγκαθίσταται με το πακέτο bind9. Αυτό το εργαλείο σας επιτρέπει να σιγουρευτείτε πως οι ρυθμίσεις είναι σωστές πριν επανεκκινήσετε το BIND9 και να κάνετε τις αλλαγές άμεσα.

  • Για να ελέγξετε το παράδειγμά μας αρχείου ζώνης Forward πληκτρολογήστε το παρακάτω σε μία γραμμή εντολών:

    named-checkzone example.com /etc/bind/db.example.com
    

    Αν τα πάντα είναι σωστά ρυθμισμένα, θα πρέπει να δείτε αποτέλεσμα παρόμοιο με:

    zone example.com/IN: loaded serial 6
    OK
    
  • Παρομοίως, για να ελέγξετε το αρχείο ζώνης Reverse πληκτρολογήστε το ακόλουθο:

    named-checkzone example.com /etc/bind/db.192
    

    Η έξοδος πρέπει να είναι παρόμοια με:

    zone example.com/IN: loaded serial 3
    OK
    
[Σημείωση]

Ο σειριακός αριθμός της ζώνης σας πιθανότατα θα είναι διαφορετικός.

Καταγραφή

Το BIND9 έχει μια μεγάλη ποικιλία επιλογών για τη ρύθμιση της καταγραφής. Υπάρχουν δύο κύριες επιλογές. Η επιλογή channel ρυθμίζει πού πάνε οι καταγραφές και η επιλογή category καθορίζει τι πληροφορίες θα καταγράφονται.

Αν δεν οριστεί επιλογή καταγραφής, η προεπιλεγμένη επιλογή είναι:

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };
};

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

  • Πρώτα, χρειάζεται να ρυθμίσουμε ένα κανάλι (channel) για να ορίσουμε σε ποιο αρχείο θα στέλνονται τα μηνύματα. Επεξεργαστείτε το /etc/bind/named.conf.local και προσθέστε το ακόλουθο:

    logging {
        channel query.log {      
            file "/var/log/query.log";
            severity debug 3; 
        }; 
    };
    
  • Μετά, ρυθμίστε μια κατηγορία (category) που θα στέλνει όλα τα ερωτήματα DNS στο αρχείο ερωτημάτων:

    logging {
        channel query.log {      
            file "/var/log/query.log"; 
            severity debug 3; 
        }; 
        category queries { query.log; }; 
    };
    
[Σημείωση]

Σημείωση: Η επιλογή debug μπορεί να πάρει τιμή από 1 έως 3. Αν δεν οριστεί επίπεδο, η προεπιλογή είναι το επίπεδο 1.

  • Αφού η υπηρεσία named εκτελείται ως ο χρήστης bind, το αρχείο /var/log/query.log πρέπει να δημιουργηθεί και να αλλαχτεί ο ιδιοκτήτης του:

    sudo touch /var/log/query.log
    sudo chown bind /var/log/query.log
    
  • Πριν η υπηρεσία named μπορέσει να γράψει στο νέο αρχείο καταγραφής, το προφίλ του AppArmor πρέπει να ενημερωθεί. Πρώτα, επεξεργαστείτε το /etc/apparmor.d/usr.sbin.named και προσθέστε:

    /var/log/query.log w,
    

    Μετά, επαναφορτώστε το προφίλ:

    cat /etc/apparmor.d/usr.sbin.named | sudo apparmor_parser -r
    

    Για περισσότερες πληροφορίες σχετικά με το AppArmor δείτε το “AppArmor”

  • Τώρα επανεκκινήστε το BIND9 για να τεθούν σε ισχύ οι αλλαγές:

    sudo /etc/init.d/bind9 restart
    

Θα πρέπει να δείτε το αρχείο /var/log/query.log να γεμίζει με πληροφορίες ερωτημάτων. Αυτό είναι ένα απλό παράδειγμα των επιλογών καταγραφής που προσφέρει το BIND9. Για κάλυψη προχωρημένων επιλογών δείτε το “Περισσότερες πληροφορίες”.