Riešenie problémov s DNS

Táto časť hovorí o spôsoboch, akými môžeme zistiť príčiny vzniknutých problémov s DNS a BIND9.

Testovanie

resolv.conf

Ak chceme začať testovať BIND9, je potrebné pridať servery do zoznamu  menných serverov. Pre istotu primárny menný server nakonfigurujeme rovnako ako ostatné stanice. Otvoríme súbor /etc/resolv.conf a pridáme nasledujúce riadky:

nameserver	192.168.1.10
nameserver 192.168.1.11
[Note]

Môžete tiež pridať IP adresu sekundárneho servera pre prípad, že primárny nebude fungovať.

dig

Ak máme nainštalovaný balík dnsutils, môžeme otestovať nastavenie dns pomocou nástroja dig:

  • Po nainštalovaní BIND9 použijeme dig ako rozhranie so spätnou väzbou, aby sme sa uistili, či server načúva na porte 53. V príkazovom riadku zadáme:

    dig -x 127.0.0.1
    

    Mali by sme uvidieť riadky podobné týmto:

    ;; Query time: 1 msec
    ;; SERVER: 192.168.1.10#53(192.168.1.10)
  • Ak máme BIND9 nastavený ako menný server s dočasnou pamäťou, môžeme príkaz "dig" použiť na otestovanie rýchlosti odpovede na požiadavku:

    dig ubuntu.com
    

    Všimneme si čas požiadavky na konci výstupu:

    ;; Query time: 49 msec

    Po opätovnom zadaní tej istej požiadavky by sme mali dostať oveľa kratší čas:

    ;; Query time: 1 msec

ping

Teraz si ukážeme, ako môžeme otestovať DNS, či správne prekladá mená staníc. Použijeme na to nástroj ping, ktorý odošle ICMP echo požiadavku. Do príkazového riadka zadáme:

ping nieco.sk

V prípade, že menný server bude vedieť preložiť adresu ns.nieco.sk na IP adresu, mal by výstup vyzerať takto:

PING ns.nieco.sk (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

Výborný spôsob, akým sa dajú otestovať zónové súbory, je použitie nástroja named-checkzone, ktorý sa nainštaloval pri inštalácii balíka bind9. Tento nástroj umožňuje zistiť, či je konfigurácia pred reštartovaním BIND9 správna a umožňuje robiť zmeny za behu.

  • Ak chceme otestovať náš priamy zónový súbor, zadáme toto:

    named-checkzone nieco.sk /etc/bind/db.nieco.sk
    

    Ak je všetko nastavené správne, mal by výstup vyzerať takto:

    zone nieco.sk/IN: loaded serial 6
    OK
  • Podobne môžeme otestovať aj reverzný zónový súbor:

    named-checkzone nieco.sk /etc/bind/db.192
    

    Výstup by mal vyzerať takto:

    zone nieco.sk/IN: loaded serial 3
    OK
[Note]

Čísla Serial sa budú vo Vašom prípade pravdepodobne odlišovať.

Záznamy

BIND9 má veľa rôznych nastavení týkajúcich sa zaznamenávania. Hlavné nastavenia sú dve. Nastavenie channel (kanál) hovorí o tom, kam pôjdu záznamy a nastavenie category (kategória) určuje, aké informácie budú zaznamenávané.

Ak nie sú nakonfigurované žiadne nastavenia, použije sa predvolené nastavenie:

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

Táto časť hovorí o tom, ako nakonfigurovať BIND9 tak, aby odosielal debug (ladiace) správy súvisiace s DNS požiadavkami do samostatného súboru.

  • Najskôr nastavíme kanál tak, aby systém vedel kam má správy odosielať. Otvoríme súbor /etc/bind/named.conf.local a pridáme nasledujúce riadky:

    logging {
    channel query.log {
    file "/var/log/query.log";
    severity debug 3;
    };
    };
  • Potom nastavím kategóriu, aby systém odosielal všetky DNS požiadavky do súboru query.log:

    logging {
    channel query.log {
    file "/var/log/query.log";
    severity debug 3;
    };
    category queries { query.log; };
    };
[Note]

Poznámka: nastavenie debug môžete meniť v rozsahu 1 až 3. Ak ho nezadáte, použije sa úroveň 1.

  • Pretože démon named je spustený pod používateľom bind po vytvorení súboru /var/log/query.log musíme zmeniť jeho vlastníctvo:

    sudo touch /var/log/query.log
    sudo chown bind /var/log/query.log
    
  • Pred tým, ako bude môcť démon named zapisovať do nového log súboru, musíme aktualizovať profil AppArmor. Najskôr otvoríme súbor /etc/apparmor.d/usr.sbin.named a pridáme:

    /var/log/query.log w,

    Potom nanovo načítame profil:

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

    Viac informácii o AppArmor sa dozviete v časti  “AppArmor”

  • Teraz reštartujeme BIND9 aby sa zmeny prejavili:

    sudo /etc/init.d/bind9 restart
    

Teraz by sme mali vidieť v súbore /var/log/query.log informácie o požiadavkách. Toto je len veľmi jednoduchá ukážka toho, ako sa konfigurujú nastavenia zaznamenávania systému BIND9. Podrobnejšie informácie sa dozviete v časti “Viac informacií”.