BIND nimeserveri kasutamine Debian Lenniga

Allikas: Kuutõrvaja

Sissejuhatus

Üks võimalus on jaotada nimeservereid gruppidesse selle järgi, millised päringuid nad teenindavad

  • autoriteetne (ingl. k. authoritative) -
  • rekursiivne (ingl. k. recursive) -
  • vaheladustav (ingl. k. caching) -

Seejuures tuleb tähele panna, et sama nimeserveri tarkvara saab käivitada kas mõnes või äärmisel juhul kõigil nimetatud režiimides. Arusaadavalt eeldab mingis režiimis käivitamine, et kõnealune nimeserveri tarkvara vastavat režiimi toetab.

BIND https://www.isc.org/software/bind on iseenesest autoriteetne, rekursiivne ja vaheladustav nimeserver.

Bind tarkvara paigaldamine

Bind versioon üheksa nimeserveri paigaldamiseks tuleb öelda

 # apt-get install bind9 bind9-doc

Vaikimisi on nimeserveri töös olulised järgmised failid ja kataloogid

  • /etc/bind - seadistusfailid
  • /var/cache/bind - ajutised failid, nt salvestab Bind sinna oma andmebaasi dump'i kui seda talt küsida
  • /usr/sbin/named - nimeserveri deemon
  • /usr/sbin/rndc - juhtprogramm, millega saab nt nimeserveri seadistustesse tehtud muudatusi kehtestada
  • /etc/init.d/bind9 - algkäivitusskript
  • /usr/share/doc/bind9-doc - dokumentatsioon

Peale tarkvara paigaldamist nimeserver

  • töötab nn cache'ivas rezhiimis (aga nimeserverid käivadki tavaliselt sellises rezhiimis, mis tähendab, et nad mäletavad mõnda aega neilt küsitud vastuseid ja järgmistele küsimustele vastavad iseseisvalt)
  • teenindab kõikidelt ip aadressidelt tehtud päringuid
  • esitab päringuid internetti nö juurserverite kaudu (st ei forwardi päringuid nt oma teenusepakkuja nimeserverile)

Vaikimisi on kasutusel sellised seadistusfailid

# find /etc/bind -type f | sort
/etc/bind/db.0
/etc/bind/db.127
/etc/bind/db.255
/etc/bind/db.empty
/etc/bind/db.local
/etc/bind/db.root
/etc/bind/named.conf
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/bind/rndc.key
/etc/bind/zones.rfc1918

Nimeserveri seadistustes tehtud muudatuste kehtestamiseks juhtprogrammiga rndc sobib öelda

 # rndc reload

Rekursiivse nimeserveri seadistamine

Rekursiivne nimeserver

Rekursiivne nimeserver lahendab oma klientide päringuid teiste nimeserverite abil. Rekursiooni sisselülitamiseks sobib kasutada seadistusfailis

acl clients {
       localnets;
       ::1;
       192.168.0.0/24;
       172.16.0.0/24;

...
options {
...
allow-recursion { clients; };
}

kus

  • acl clients kirjeldab kõneksolevale aclile vastavad aadressid
  • allow-recursin ütleb millist acli on lubatud rekursiivselt teenindada

Vahendav nimeserver

Vahendav (ingl. k. forwarding) nimeserver esitab kõik talle klientide poolt esitatud päringud edasi mõnele teisele seadistusfailis näidatud nimeserverile ja vahendab kliendile tagasi vastuseid. Globaalselt ehk kõiki päringuid vahendava nimeserveri seadistamiseks sobib kasutada /etc/bind/named.conf.options failis sektsiooni (või kui seda faili ei kasutata, siis named.conf failis options { } sektsioonis)

 forward first;
 forwarders {   
   192.168.10.254;
 };

kus

  • forwarders sektsioonis on näidatud milliste nimeserverite pööle päringute lahendamiseks pöörduda, reeglina on selleks oma internetiteenusepakkuja nimeserverid
  • forward first tähendab, et esmalt püütakse päringule saada vastust forwarders sektsioonis näidatud nimeserveritelt ja seejärel otse internetist otsida vastust, nö läbi juurnimeserverite (alternatiiv on kasutada 'forward only', mis tähendab, et juurnimeserverite kaudu vastust otsima ei minda)

Lisaks on võimalik vahendada päringuid tsoonipõhiselt kirjeldades forward tüüpi tsooni

 zone loomaaed.tartu.ee {
   type forward;
   forward only;
   forwarders { 
     192.168.10.254;
   };
 };

Primaarse tsooni seadistamine

Tsooni test.loomaaed.tartu.ee seadistamiseks tuleb lisada faili /etc/bind/named.conf.local sektsioon

 acl sise {
  127.0.0.0/8;
  192.168.1.0/24;
  192.168.10.0/24;
 };
 
 zone "loomaaed.tartu.ee" {
    type master;
    allow-query { sise; };
    file "/etc/bind/master/named.loomaaed.tartu.ee";
 };

kusjuures tsoonifaili enda sisu on nt selline

 $TTL    300
 @       IN      SOA     loomaaed.tartu.ee. hostmaster.loomaaed.tartu.ee.  (
                         2010012400  ; Serial
                         3600      ; Refresh
                         1800      ; -Retry
                         1814400      ; Expire -
                         600  )    ; Minimum -
 auul.           IN NS       ns.auul.
 ns.auul.        IN A        192.168.1.251
 tossaja.auul.   IN A        192.168.1.4

rndc kasutamine

Kasutamisvõimalustest annab ülevaate programmi käivitamine ilma argumentideta

# rndc

Päringulogi sisselülitamiseks tuleb öelda

# rndc querylog

ning kui seejärel sooritada päring, nt

$ dig @localhost kuutorvaja.eeneti.ee a

siis ilmub logisse vastav sissekanne

# tail -f /var/log/daemon.log
...
Mar  8 17:50:11 moraal named[1577]: received control channel command 'querylog'
Mar  8 17:50:11 moraal named[1577]: query logging is now on
Mar  8 17:50:23 moraal named[1577]: client 127.0.0.1#38724: query: kuutorvaja.eenet.ee IN A +
Mar  8 17:50:27 moraal named[1577]: received control channel command 'querylog'
Mar  8 17:50:27 moraal named[1577]: query logging is now off

Päringulogi väljalülitamiseks tuleb öelda uuesti

# rndc querylog

Tsooni ülelaadimine views

# rndc refresh loomaaed.tartu.ee IN vaatajad

kus

  • IN - klassinimi
  • vaatajad - view nimi

Logimine

TODO

Nimeserveri koormustest

Nimeserveri koosmustestimiseks sobib kasutada Bind tarkvara koosseisus levitatavat contrib tarkvara queryperf. Programmi ettevalmistamiseks tuleb pakkida aadressilt www.isc.org kopeeritud Bindi lähtetekst lahti ja kompileeerida, nt selliselt

 $ cd bind-9.5.1-P1/contrib/queryperf
 $ sh configure
 $ make

Koormustesti käivitamiseks on tarvis tekstifailis näidata ära päritavad nimelahendused, nt

 $ cat src.txt
 www.loomaaed.tartu.ee A

ja öelda nt nii

 $ ./queryperf -d src.txt -s 192.168.38.162 -l 5
 
 DNS Query Performance Testing Tool
 Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $
 
 [Status] Processing input data
 [Status] Sending queries (beginning with 192.168.38.162)
 [Status] Testing complete
 
 Statistics:
 
 Parse input file:     multiple times
 Run time limit:       1 seconds
 Ran through file:     10135 times
 
 Queries sent:         10135 queries
 Queries completed:    10135 queries
 Queries lost:         0 queries
 Queries delayed(?):   0 queries
 
 RTT max:              0.020931 sec
 RTT min:              0.000828 sec
 RTT average:          0.001938 sec
 RTT std deviation:    0.000957 sec
 RTT out of range:     0 queries
 
 Percentage completed: 100.00%
 Percentage lost:        0.00%
 
 Started at:           Thu Mar  5 23:23:18 2009
 Finished at:          Thu Mar  5 23:23:19 2009
 Ran for:              1.001641 seconds
 
 Queries per second:   10118.395713 qps

Kasutatud võtmed

  • -d - andmefaili
  • -s - testitava nimeserveri aadress
  • -l - testi kestus sekundites

Kuna selle utiliidi kasutamine võib seada nimeserveri märkimisväärse koormuse alla, siis peab seda asjaolu programmi kasutamisel arvesse võtma.

Samuti on palju poolehoidjaid tarkvaral dnsperf.

DNSSEC

TODO

Tsooni signeerimine

TODO

IPv6

IPv6 välja lülitamiseks sobib kasutada named käivitamisel suvandit -4, näidates failis /etc/default/bind9 nt rea

OPTIONS="-4 -u bind"

Kasulikud lisamaterjalid