Pädeva nimeserveri NSD kasutamine
Sisukord
- 1 Sissejuhatus
- 2 NSD paigaldamine
- 3 Primaarne nimeserver
- 4 Sekundaarne nimeserver
- 5 NSD nimeserveri töö kontrollimine
- 6 TSIG signatuuride kasutamine
- 7 DNSSEC kasutamine
- 8 Nimeserveri kasutamine chroot keskkonnas
- 9 Jõudlus
- 10 Tsooni migreerimine nimeteenuse haldajate vahel
- 11 Märkused
- 12 Monitooring
- 13 Kasulikud lisamaterjalid
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