Pädeva nimeserveri NSD kasutamine

Allikas: Kuutõrvaja

Sissejuhatus

Üks võimalus liigitada nimeservereid või nimeserverite tarkvara on selle järgi, milliseid päringuid teenindatakse

  • pädev, autoriteetne (ingl. k. authoritative) - vastab päringutele ainult nimeserveri tsoonifailis kirjeldatud andmete alusel; pädevad nimeserverid teenindavad reeglina resolverite päringuid
  • rekursiivne (ingl. k. recursive) - rekursiivne nimeserver ei sisalda nö oma tsoonifaili, st ta ei ole mingite vastuste osas autoriteetne; rekursiivne nimeserver teenindab mingi piiratud hulga klientide päringuid lahendades neid pädevate nimeserverite abil ja seetõttu nimetatakse rekursiivset nimeserverit tihti resolveriks (ingl. k. to resolve - lahendama)

Omakorda jagunevad pädevad nimeserverid kaheks

  • primaarne - tavaliselt on tsoonil üks primaarne nimeserver, kuhu nimeserveri haldaja teeb muudatusi; primaarse nimeserveri nimi näidatakse tsooni SOA kirjes
  • sekundaarne - tavaliselt on tsoonil üks või enam sekundaarset nimeserverit, mis kopeerivad automaatselt tsoonifailide sisu primaarselt nimeserverilt

NSD http://nlnetlabs.nl/projects/nsd/ (ingl. k. name server daemon) on pädeva nimeserveri tarkvara. Praktiliselt tähendab see, et nö nimesüsteemi lõppkasutaja ei kasuta seda otse oma arvuti nimeserverina seadistades NSD nimeserveri aadressi oma /etc/resolv.conf failis, vaid seda kasutab nt lõppkasutaja arvuti nimeserveriks seadistatud rekursiivne resolver, kui see resolver oma töö käigus nii otsustab.

NSD nimeserveril on sellised omadused

  • pädev - sobib kasutada primaarse või sekundaarse nimeserverina
  • TSIG signatuurid - primaarse ja sekundaarse nimerveri vahelise andmevahetuse turvamiseks
  • DNSSEC tugi - võimaldab korraldada turvaliselt nimekirjete levitamist
  • IPv6 tugi

NSD paigaldamine

Debian

Debian Lenny paketihalduses on NSD tarkvara versioon 3.0.7, paigaldamiseks tuleb öelda

 # apt-get install nsd3

OpenBSD

OpenBSD 4.7 jaoks on olemas binaarse paketi kujul NSD tarkvara versiooni 3.2.4, paigaldamiseks tuleb öelda

 # pkg_add nsd

Tulemusena paigaldatakse sellised programmid

  • /usr/local/sbin/nsd - nsd deemon
  • /usr/local/sbin/nsd-notify - notify teate saatmise utiliit
  • /usr/local/sbin/zonec - tsooniandmete kodeerija
  • /usr/local/sbin/nsdc - nsd deemoni juhtprogramm
  • /usr/local/sbin/nsd-xfer - tsooni kopeerimise utiliit
  • /usr/local/sbin/nsd-patch - teisendab andmed tekstilisele kujule

ning kasutatakse selliseid katalooge

  • /etc/nsd - seadistusfailid
  • /var/nsd/zones - tsoonifailid

Selleks, et NSD arvuti alglaadimisel automaatselt käivituks sobib lisada /etc/rc.local faili

if [ -x /usr/local/sbin/nsdc ]; then    
              echo -n ' nsd'; /usr/local/sbin/nsdc start   
fi

Primaarne nimeserver

  • Primaarne nimeserver sisaldab autoriteetseid andmeid, mis on tavaliselt kirjeldatud tema failisüsteemis nn tsoonifailides ja mille sisu haldab otseselt nimeserveri haldaja.
  • Primaarsest nimeserverist saavad sekundaarsed nimeserverid kopeerida tsoonide sisu.
  • Kõik rekursiivsed resolverid saavad autoriteetse vastuse kõnealuses primaarses nimeserveris kirjeldatud andmete osas.

Primaarse nimeserveri seadistamine

NSD programmi tööd juhib seadistusfail /etc/nsd/nsd.conf, mis võiks olla primaarsel nimeserveril nt selline

 server:
       ip-address: 192.168.10.161
       ip4-only: yes
       port: 53
       logfile: "/var/log/nsd.log"
 
 zone:
       name: "loomaaed.tartu.ee"
       zonefile: "loomaaed.tartu.ee"
       outgoing-interface: 192.168.10.161
       notify: 192.168.10.190 NOKEY
       provide-xfr: 192.168.10.190 NOKEY

Seadistusfail sisaldab kahte sektsiooni

  • server - üldised nimeserveri tööd määravad parameetrid, võib esineda üks kord
  • zone - konkreetset tsooni puudutavad parameetrid, võib esineda mitu korda

server sektsiooni parameetrid

  • ip-address - millisel ip aadressid nimesever pakub teenust
  • ip4-only - kas nimesever pakub teenus ainult IPv4 võrgus
  • port - millisel pordil nimesever pakub teenust
  • logfile - logifaili asukoht failisüsteemis

zone sektsiooni parameetrid

  • name - tsooni nimi
  • zonefile - tsoonifaili nimi
  • outgoing-interface -
  • notify - sekundaarse nimeserveri aadress, millele saadab primaarne nimeseveri teate kui vastavas tsoonifailis toimub muudatus
  • provide-xfr - sekundaarse nimeserveri aadress, millelt on lubatud vastavat tsooni kopeerida

Primaarse tsooni ettevalmistamine

Tsoonifailid ise on samasuguse sisuga nagu BIND tarkvara tsoonifailid st nt

 # cat /var/nsd/zones/loomaaed.tartu.ee.zone
 $TTL    604800
 @       IN      SOA   ns.loomaaed.tartu.ee. root.ns.loomaaed.tartu.ee. (
                      2010012400         ; Serial
                          604800         ; Refresh
                           86400         ; Retry
                         2419200         ; Expire
                          604800 )       ; Negative Cache TTL
 ;
 @       IN      NS      ns.loomaaed.tartu.ee.
 ns      IN      A       192.168.1.50
 www     IN      A       192.168.1.51

Selleks, et primaarne nimeserver saaks tsoonifaili kasutada, tuleb tsoonifail kompileerida öeldes

 # nsdc rebuild
 zonec: reading zone "loomaaed.tartu.ee".
 zonec: processed 4 RRs in "loomaaed.tartu.ee".
 
 zonec: done with 0 errors.

Tulemusena tekib sobiva sisuga fail

 /var/nsd/nsd.db

Primaarse nimeserveri kasutamine

Primaarse nimeserveri käivitamiseks peab olema kompileeritud tsoonide andmebaas ning tuleb öelda

 # nsdc start

Nimeserveri seiskamiseks tuleb öelda

 # nsdc stop

Peale tsoonifailis muudatuste tegemist tuleb tsoon kompileerida ning öelda

 # nsdc reload

Seadistusfailis näidatud sekundaarsetele nimeserveritele saadetakse notify reload tegemisel automaatselt, kuid seda saab teha ka ilmutatud kujul

 # nsdc notify

Sekundaarne nimeserver

  • Sekundaarne nimeserver sisaldab autoriteetseid andmeid, mida ta käib kopeerimas vastava tsooni autoriteetselt nimeserverilt.
  • Kõik rekursiivsed resolverid saavad autoriteetse vastuse kõnealuses sekundaarses nimeserveris kirjeldatud andmete osas.

Sekundaarse nimeserveri seadistamine

NSD programmi tööd juhib seadistusfail /etc/nsd/nsd.conf, mis võiks olla seknudaarsel nimeserveril nt selline

 server:
       ip-address: 192.168.10.190
       ip4-only: yes
       port: 53
       logfile: "/var/log/nsd.log"
 
 zone:
       name: "loomaaed.tartu.ee"
       zonefile: "loomaaed.tartu.ee"
       outgoing-interface: 192.168.10.190
       allow-notify: 192.168.10.161 NOKEY
       allow-notify: 127.0.0.1 NOKEY
       request-xfr: 192.168.10.161 NOKEY

Seadistusfail sisaldab kahte sektsiooni

  • server - üldised nimeserveri tööd määravad parameetrid, võib esineda üks kord
  • zone - konkreetset tsooni puudutavad parameetrid, võib esineda mitu korda

server sektsiooni parameetrid

  • ip-address - millisel ip aadressid nimesever pakub teenust
  • ip4-only - kas nimesever pakub teenus ainult IPv4 võrgus
  • port - millisel pordil nimesever pakub teenust
  • logfile - logifaili asukoht failisüsteemis

zone sektsiooni parameetrid

  • name - tsooni nimi
  • zonefile - tsoonifaili nimi
  • outgoing-interface - ip aadress, millelt sekundaarne nimeserveri poolt algatatud ühendus väljub
  • allow-notify - ip aadress, millelt nimeserver võtab vasta notify teateid; 192.168.10.161 on primaarne nimeserver, 127.0.0.1 on vajalik, et nsdc utiliidi abil sekundaarsest nimesereverist endast kutsuda esile tsooni kopeerimine
  • request-xfr - ip aadress, millelt nimesever kopeerib tsooni sisu

Sekundaarse tsooni ettevalistamine

Sekundaarse tsooni sisu kopeeritakse serveri käivitamisel primaarselt automaatselt, kuid nö tühja nsd.cdb faili moodustamiseks tuleb siiski öelda

 # nsdc rebuild

Sekundaarse nimeserveri kasutamine

Üldiselt tuleb NSD käivitamiseks öelda

 # nsdc start

ja seiskamiseks

 # nsdc stop

Töö käigus saadab primaarne nimeserver sekundaarsele notify teate, seejärel kopeerib sekundaarne primaarselt vastava tsooni. Tulemus salvestatakse mitmesse faili

  • /var/nsd/nsd.db
  • /var/nsd/ixfr.db

Sekundaarse tsoonifaili kopeerimiseks vastavasse tekstifaili tuleb öelda

 # nsdc patch

Tulemusena tekib tekstifail

 /var/nsd/zones/loomaaed.tartu.ee.zone

Primaaserst nimeserverist tsoonide kopeerimiseks sobib öelda

 # nsdc update

Iseenesest kutsub tsooni kopeerimise esile kui saata notify sekundaarsele serverile

 # nsd-notify -z loomaaed.tartu.ee 127.0.0.1

Logi

Kui primaarne nimeserveri saadab notify ning toimub tsooni kopeerimine ilmub sekundaarse nimeserveri logisse

 [1264973684] nsd[12452]: info: Zone loomaaed.tartu.ee serial 2010013103 is updated to 2010013104.

NSD nimeserveri töö kontrollimine

NSD serverile päringu esitamiseks sobib öelda nii, näidates eraldi, et küsimuses ei kasutata recurse lippu

 # dig +norecurse @localhost www.talv.loomaaed.tartu.ee a
 
 ; <<>> DiG 9.5.1-P3 <<>> +norecurse @localhost www.talv.loomaaed.tartu.ee a
 ; (2 servers found)
 ;; global options:  printcmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26773
 ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
 
 ;; QUESTION SECTION:
 ;www.loomaaed.tartu.ee.    IN      A
 
 ;; ANSWER SECTION:
 www.loomaaed.tartu.ee. 604800 IN   A       192.168.1.51
 
 ;; AUTHORITY SECTION:
 ns.loomaaed.tartu.ee. 604800  IN      NS      ns.loomaaed.tartu.ee.
 
 ;; ADDITIONAL SECTION:
 ns.loomaaed.tartu.ee. 604800 IN    A       192.168.1.51

kus vastuses on antud

  • QUESTION SECTION - korratakse küsimust
  • ANSWER SECTION - vastus küsimusele
  • AUTHORITY SECTION - autoriteetsete andmete osa
  • ADDITIONAL SECTION - täiendavate andmete osa

NSD tarkvara sisaldab utiliiti nsd-xfer, millega sobib kopeerida tsooni ja mida ta ka ise sisemiselt kasutab

 # nsd-xfer -z loomaaed.tartu.ee -f /tmp/loomaaed.tart.ee.zone 192.168.1.251

TSIG signatuuride kasutamine

Transaktsiooni signatuure (ingl. k. Transaction SIGnature, TSIG) kasutatakse selleks, et tagada kahe nimeseveri, tavaliselt primaarse ja sekundaarse andmevahetusel andmete autentsus.

Selleks tuleb kirjeldada mõlema nimeseveri /etc/nsd/nsd.conf seadistusfailis võti

 key:
       name: tsoonivoti
       algorithm: hmac-md5
       secret: "K2tf3TRjvQkVCmJF3/Z9vA=="

ning seda seejärel tsooni juures kasutada

       notify: 192.168.10.190 tsoonivoti
       provide-xfr: 192.168.10.190 tsoonivoti

DNSSEC kasutamine

DNSSEC sisselülitamiseks ei ole NSD puhul midagi vaja teha, signeeritud tsoonifailide kasutamisel kasutatakse DNSSEC'i automaatselt.

Nimeserveri kasutamine chroot keskkonnas

TODO

Jõudlus

  • NSD oskab kasutada mitut protsessorit ja nö keskpärasel riistvaral suudab teenidada kümneid tuhandeid päringuid sekundis. Selleks tuleb näidata, milline arv NSD protsesse käivitatakse
 # Number of NSD servers to fork.
 # server-count: 1
  • NSD on 2-3 korda kiirem kui Bind.

Tsooni migreerimine nimeteenuse haldajate vahel

Üks oluline praktiline põhjus, miks tuleks pidada rekursiivset ja autoriteetset nimeserverit eraldi on seotud tsoonide kolimisega ühe nimeteenuse pakkuja juurest teise nimeteenuse pakkuja juurde. Kui mõlema nimeteenuse kasutajad kasutavad oma nimeteenuse pakkuja rekursiivset nimeserverit, siis kõik nimelahendus toimub nii nagu põhimõtteliselt nimede delegatsioon juurikast edasi hargneb. Kui aga nimeteenuse pakkuja rekursiivne ja autoriteetne nimeserver on üks ja sama, siis lahendab ta esimeses järjekorras nimesid nii nagu tema lokaalsetes tsoonifailides parasjagu kirjeldatud on ja alles seejärel pöördub juurnimeserverite poole.

Siit järeldub, et kui nt tsoon tartu.ee on uue nimeteenuse pakkuja juures ettevalmistatud ja seal kasutatakse ühendatud rekursiivset ja autoriteetset nimeserverit ning veel ei ole ee tld (top level domain) domeeni tsoonifailis ümberlülitust toimunud, siis selle nimeserveri kasutajad hakkavad juba nö varem seda uut nimelahendust kasutama. Vastasel korral aga alles siis, kui ee tld tsoonifailis on lülitus tehtud.

Rekursiivne ja autoriteetne nimeserver on koos

                                  ___
                                 |   | autoriteente nimeserver
                                 |___| sisaldab õieti tartu.ee tsooni
                             
                            
                     ___                     ns.kliendi-isp.ee 
    juurnimeserver  |   |                   ___               
                    |___|                  |   |  rekursiivne ja autoriteetne           
                                           |___|  sisaldab ekslikult tartu.ee tsooni
                                         .        
                                       . 
                                ___  .   1
                               |   |
                               |___| dns klient (st töökohaarvuti)

kus

  • 1 - dns klient esitab päringu tartu.ee osas ja saab ns.kliendi-isp.ee käest kohe autoriteetse vastuse

Rekursiivne ja autoriteetne nimeserver on lahus

                                  ___  
                                 |   | autoriteetne nimeserver
                                 |___| sisaldab õieti tartu.ee tsooni
                                      .
                                        .
                     ___              3   .   ns1.kliendi-isp.ee      ns2.kliendi-isp.ee
    juurnimeserver  |   |                   ___                     ___
                    |___| ................ |   |  rekursiivne      |   | autoriteetne           
                                2          |___|                   |___| sisaldab ekslikult tartu.ee tsooni
                                         .
                                       . 
                                ___  .   1
                               |   |
                               |___| dns klient (st töökohaarvuti)

kus

  • 1 - dns klient esitab päringu tartu.ee osas ns1.kliendi-isp.ee'le
  • 2 - ns1.kliendi-isp.ee küsib juurnimeserverilt kus on tartu.ee nimeserver
  • 3 - ns1.kliendi-isp.ee küsib õigelt tartu.ee nimeserverilt andmeid

Märkused

  • Nimeserver kui nimeserveri protsess, mis pakub võrgus teenust ei ole iseenesest primaarne või sekundaarne. Sekundaarne või primaarne on nimeserver tsooni suhtes. Kuna ühes nimeserveris võib olla kirjeldatud mitmeid tsoone, siis seetõttu üks ja sama nimeserver võib olla korraga nii sekundaarne kui primaarne.
  • Kleepekirje on täiendavate omadustega A kirje, nt küsides vastavast tsoonist seda A kirjet ei esitata teda vastuses answer sektsioonis, vaid ainult additional sektsioonis.
  • nsdc update kasutamiseks peab tingimata nsd olema binditud muu hulgas ka 127.0.0.1 aadressile
  • Kui nsdc käivida sekundaarsel nimeserveril nn loopback aadressil (nt lo1 seadmele omistatud aadressil), siis tundub, et outgoing-interface direktiivi ei tohi kasutada selleks, et nsdc update töötaks
  • NSD sobib kasutada primaarne-sekundaarne paaris koos Bindiga mõlemat pidi.

Monitooring

Nimeserverit sobib monitoorida Nagiose check_dig lisa abil, nt küsides SOA kirjet

 $ /usr/lib/nagios/plugins/check_dig -l loomaaed.tartu.ee -T SOA -H 192.168.10.190 -a hostmaster

Kasulikud lisamaterjalid