Rekursiivse resolveri Unbound kasutamine

Allikas: Kuutõrvaja

Sissejuhatus

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

  • autoriteetne (ingl. k. authoritative) - vastab päringutele ainult nimeserveri tsoonifailis kirjeldatud andmete alusel; autoriteetsed 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 autoriteetsete nimeserverite abil ja seetõttu nimetatakse rekursiivset nimeserverit tihti resolveriks (ingl. k. to resolve - lahendama)

Unbound http://www.unbound.net/ resolveril on selliseid omadused

  • rekursiivne - lahendab nö lõppkasutaja esitatud päringuid, nt sobib seadistada töökohaarvuti nimeserveriks
  • vaheladustav (ingl. k. caching) - Unbound peab kord lahendatud vastust mõnda aega meeles, mis tähendab, et järgmisele samale päringule vastab ta kliendile kohe ja ei pea omakorda pöörduma vastuse saamiseks autoriteetsete nimeserverite poole
  • valideeriv - toetab DNSSEC kasutamist
  • IPv6 tugi

Rekursiivse resolveri vastutus on parimal võimalikul moel anda kliendi esitatud päringule vastus, seejuures

  • anda õige vastus - nt mitte ennast lasta eksitada cache poisoning tehnikatest, võimalusel kasutada DNSSEC vahendeid
  • vastata kiiresti

Unbound paigaldamine

2010 aastal leidub paljude operatsioonisüsteemide paketihalduses Unbound tarkvara.

Debian

Debian Lenny sisaldab versiooni 1.0.2 ja paigaldamiseks sobib öelda

 # apt-get install unbound

OpenBSD

OpenBSD 4.7 sisaldab binaarse paketina versiooni 1.4.1 ja paigaldamiseks sobib öelda

--- +unbound-1.4.1 -------------------
You should add:

    syslogd_flags="${syslogd_flags} -a /var/unbound/dev/log"

to /etc/rc.conf.local to create a syslog socket in the unbound chroot.

You may also want to add the following to /etc/rc.local to start unbound
at boot:

        if [ -x /usr/local/sbin/unbound ]; then
                echo -n ' unbound'; /usr/local/sbin/unbound 
        fi

Unbound seadistamine

Resolveri seadistusfailis tuleb näidata muu hulgas

  • juurnimeserverite aadressid
  • millisel aadressil resolver päringuid teenindab
  • millised kliendid saavad resolverit kasutada, tavaliselt kliendi src ip aadressi täpsusega

Unbound tööd juhib seadistusfail unbound.conf

  • /etc/unbound/unbound.conf - Debian
  • /var/unbound/etc/unbound.conf - OpenBSD

Lihtsamal juhul võib kasutada nt sellise sisuga seadistusfaili

 server:
    interface: 192.168.10.190
    outgoing-interface: 192.168.10.190
    access-control: 192.168.10.0/24 allow
    root-hints: "/var/unbound/etc/named.cache"

kus

  • interface - millisel aadressil arvuti Unbound resolveri kliente teenindab
  • outgoing-interface - milliselt aadressilt resolveri päringud autoriteetsetele nimeserveritele väljuvad
  • access-control - millistelt ip aadressidelt saab Unbound resolverit kasutada
  • root-hints - resolver peab alati teadma interneti juurnimeserverite aadresse

Juurnimeserverite aadresse saab küsida mõnes juba seadistatud resolveriga arvutis

 $ dig . ns

või kopeerida aadressilt

 $ ftp ftp://FTP.INTERNIC.NET/domain/named.cache

Unbound käivitamine

Unbound resolver teenindab päringuid portidel 53/udp ja 53/tcp.

Debian

Käivitamiseks tuleb öelda

 # /etc/init.d/unbound start | stop

OpenBSD

Vaikimisi töötab Unbound OpenBSD all chroot keskkonnas kataloogis /var/unbound kasutajana _unbound. Selleks, et chroot keskkonnas töötav Unbound saaks logida syslog'i tuleb syslog käivitamisel lisaks kasutada '-a /var/unbound/dev/log'

 # syslogd -a /var/www/dev/log -a /var/empty/dev/log -a /var/unbound/dev/log

/etc/rc.conf.local failis sobib kasutada rida

 syslogd_flags="${syslogd_flags} -a /var/unbound/dev/log"

Unbound töö lõpetamiseks sobib öelda

 # pkill unbound

Unbound kasutamine

Unbound resolveri kasutajateks on tavaliselt arvutid, mis vajavad nimelahendust, nt kohtvõrgu arvutid, eposti serverid jt. Linux keskkonnas sobib näidata nimeserveri aadress staatiliselt arvuti /etc/resolv.conf failis nt reaga

 nameserver 192.168.10.190

Unbound resolveri tööd saab kontrollida nt öeldes mõnes arvutis, kus peab kõnealust resolverit saama kasutada

 $ dig @192.168.10.190 kuutorvaja.eenet.ee a

ja vastus peaks sisaldama sarnaseid ridu rida

 ...
 ;; QUESTION SECTION:
 ;kuutorvaja.eenet.ee.           IN      A
 
 ;; ANSWER SECTION:
 kuutorvaja.eenet.ee.    83840   IN      A       193.40.0.7
 ..

Nimepäringu vastuste valideerimine

Nimepäringute vastuste valideerimiseks kasutatakse üldiselt DNSSEC tehnikat. 2010 aastal on selleks mitmeid võimalusi, üks populaarne viis on DLV (DNSSEC Look-aside Validation). DLV seadistamiseks tuleb

  • kopeerida trust anchor fail kataloogi /var/unbound/etc
 # cd /var/unbound/etc
 # ftp http://ftp.isc.org/www/dlv/dlv.isc.org.key
  • Unbound seadistusfailis kasutada rida
 dlv-anchor-file: "dlv.isc.org.key

Valideeritud nimepäringu vastus näeb välja nt selline

 $ dig www.kaminskybug.se a +dnssec +multiline
 
 ; <<>> DiG 9.5.1-P3 <<>> www.kaminskybug.se a +dnssec +multiline
 ;; global options:  printcmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56069
 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 1
 
 ;; OPT PSEUDOSECTION:
 ; EDNS: version: 0, flags: do; udp: 4096
 ;; QUESTION SECTION:
 ;www.kaminskybug.se.    IN A
 
 ;; ANSWER SECTION:
 www.kaminskybug.se.     3590 IN CNAME fou.iis.se.
 www.kaminskybug.se.     3590 IN RRSIG CNAME 5 3 3600 20100205210001 (
                                 20100126210001 13358 kaminskybug.se.
                                 goEav1vWK49WEvGY/G1EBKOgekQk11JvjsQxE7chH6Kg
                                 OwZNpOXwomE1z9zvLcwkD60CQAZWC9psA1z01iIwtOrt
                                 Yq6L+2A0PLVAAuRYeY3CQnbHoHRYClCUz0dIkxhtz9f/
                                 Um1AuC3FtqV6t9q8lLb4ooav0Ex64KuwoPPxqqs= )
 fou.iis.se.             3590 IN A 212.247.204.242
 fou.iis.se.             3590 IN RRSIG A 5 3 3600 20100209131501 (
                                 20100130131501 56315 iis.se.
                                 BOPpSETDBKu6CjOcz2ULnOnfRVoXfOXj9OjW4zwjPuWl
                                 7vJ8630yXsuSEe89RuH/ZsuOGbeJnumQ/XmD6ftWL9yM
                                 MPUF1ZYxCtExaBcIxhxDIFJv4E4RZAOkbb9ZdYKTglIL
                                 zDleOOms0iVgCAnnWJSnmDpzhfvr8xoTGlh7myE= )
 
 ;; AUTHORITY SECTION:
 iis.se.                 3590 IN NS ns.nic.se.
 iis.se.                 3590 IN NS ns3.nic.se.
 iis.se.                 3590 IN NS ns2.nic.se.
 iis.se.                 3590 IN RRSIG NS 5 2 3600 20100209131501 (
                                 20100130131501 56315 iis.se.
                                 B3SheLIv8ouVPpFGjvM8q5fl9ZMnnPWR8x9QDD0uSxoH
                                 iV2fYHjiKC5a2+8Znsi4zSdO2AmH+reUCP74qvYpkl1K
                                 +NbEzndzzrJQ0XlT1icy3MC6vdvgdE7Opqjab/7iIiYV
                                 X9UjZpHKR284EljSrKJ0z53/T+12P3K0VU/dRFE= )
  
 ;; Query time: 1 msec
 ;; SERVER: 10.53.67.69#53(10.53.67.69)
 ;; WHEN: Sun Jan 31 00:25:39 2010
 ;; MSG SIZE  rcvd: 648

kus ad lipp annab tunnistust, et vastus on valideeritud

 flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 1

Lokaalsed nimekirjeldused

Lisaks sellele, et Unboundi kasutab nimede lahendamisel võrgus töötavaid autoriteetseid nimeservereid, saab kirjeldada seadistusfailis päri- ja pöördteisendusi

 local-data: "loomaaed.tartu.ee A 192.168.10.100"
 local-data-ptr: "192.168.10.100 loomaaed.tartu.ee"

kus

  • local-data - päriteisendus
  • local-data-prt - pöördteisendus

Unbound lahendab vaikimisi mõlemas suunas localhost - 127.0.0.1 teisendust.

Stub tsoon

Stub tsooni abil saab öelda, millist autoriteetset nimeserverit kasutada mõne domeeni nimelahenduseks. Praktiliselt võiks seda vaja minna kui asutuses on nt kasutusel mitte-avalik autoriteetne nimeserver ja domeeni 'auul.' nimede lahendamiseks tuleks kasutada seda; vastasel korral püüaks Unbound neid nimesid lahendada pöördudes interneti juurnimeserverite poole.

Seadistusfailis kirjeldatakse stub tsoon selliselt

 stub-zone:
    name: "auul"
    stub-addr: 192.168.1.251

kus

  • name - domeeni nimi
  • stub-addr - domeeni autoriteetne nimeserver

Forward tsoon

Forward tsooni abil saab öelda, millist rekursiivset nimeserverit kasutada mõne domeeni nimelahenduseks. Seadistusfailis kirjeldatakse forward tsoon selliselt

forward-zone:
  name: "loomla.tartu.ee"
  forward-addr: 10.172.20.10

kus

  • name - domeeninimi
  • forward-addr - rekursiivse nimeserveri aadress

Selleks, et suunata kõik päringud lahendamiseks edasi sobib kasutada

forward-zone:
  name: "."
  forward-addr: 10.172.20.10

AS112 tsoonid

Selleks, et asutuse lokaalses autoriteetses nimeserveris kirjeldatud privaatsete aadresside pöördteisendused töötaksid tuleb kasutada

 server:
   ...
   local-zone: "168.192.in-addr.arpa." nodefault
   

ning nt 192.168.1 võrgu puhul

 stub-zone:
    name: "1.168.192.in-addr.arpa."
    stub-addr: 192.168.1.251

Jõudlus

  • Unbound oskab kasutada mitut protsessorit ja nö keskpärasel riistvaral suudab teenidada kümneid tuhandeid päringuid sekundis.
  • Unbound on 2-3 korda kiirem kui Bind.

Klientprogrammi unbound-host kasutamine

Klientprogramm unbound-host võimaldab nt kontrollida, kas nimelahenduse valideerimine töötab

 # unbound-host -C unbound.conf -t A -v www.kaminskybug.se 
 [1264938168] libunbound[2566:0] notice: init module 0: validator
 [1264938168] libunbound[2566:0] notice: init module 1: iterator
 www.kaminskybug.se is an alias for fou.iis.se. (secure)
 fou.iis.se has address 212.247.204.242 (secure)

Haldusprogramm unbound-control

Haldusprogrammiga unbound-control saab juhtida Unbound resolveri tööd ja küsida statistikat. Kuna unbound-control võimaldab resolveri töötamist oluliselt mõjutada, nt laadida cache sisu tekstifailist või resolveri seisata, siis peab hoolega jälgima, et unbound-control kasutamisele oleks seatud vajalikud piirangud.

Unbound resolveri ettevalmistamine

unbound-control suhtleb Unbound serveriga vaikimisi üle 953/tcp pordi. Osaliste autentimiseks kasutatakse avaliku-võtme tehnikat, vajalike võtmete genereerimiseks sobib kasutada unbound-control-setup utiliiti

 # unbound-control-setup

Tulemusena tekivad /var/unbound/etc kataloogi neli võtit, kask serveri ja kaks kliendi jaoks

 unbound_control.key
 unbound_control.pem
 unbound_server.key
 unbound_server.pem

unbound-control kasutamiseks tuleb vastav funktsionaalsus Unbound serveris sisse lülitada nt sektsiooniga

 remote-control:
       control-enable: yes
       control-interface: 127.0.0.1

unbound-control kasutamine

Vaikimisi kasutab unbound-control Unbound serveri seadistusfaili, nt sobib alustuseks kasutada unbound serverit ja unbound-control utiliiti samas arvutis.

  • Unbound resolveri oleku küsimine
 # unbound-control status             
 version: 1.3.0
 verbosity: 1
 threads: 1
 modules: 2 [ validator iterator ]
 uptime: 1184 seconds
 unbound (pid 23298) is running...
  • Resolveri cacheist tsooni loomaaed.tartu.ee andmete kustutamine
 # unbound-control flush_zone loomaaed.tartu.ee
 ok removed 3 rrsets, 2 messages and 0 key entries
  • Cache sisu esitamine
 # unbound-control dump_cache

Resolveri kastutusstatistika

Üks unbound-control kasutusjuht on koguda resolveri kasutusstatistikat

 # unbound-control stats_noreset

Praktiliselt on seda sobiv automatiseerida Munin või Cacti tarkvaraga, mida on kirjeldatud aadressil http://www.unbound.net/documentation/howto_statistics.html.

Kasulikud lisamaterjalid