spacer

 

 

 

Versiyon: 2 

                             

 
Giri: 

                             

02 Austos 2001
 

BIND, the Buggy Internet Name Daemon is like Microsoft Windows. The damn thing doesn't work. Every version has been brimming with bugs.                                
                                                                          --D.J.Bernstein ( cr.yp.to/djbdns/ad/unbind.html )

 

Bu dkumanda u an Unix dnyasnda bulunan en gvenli dns sunucusu olan djbDNS ve kurulumu anlatlacaktr.DjbDNS D.J.Bernstein tarafndan yazlmtr.  Kendisi ayn zamanda qmail,tcpserver,publicfile,daemontools gibi eitli sistem yazlmlar yazmtr. Sanrm ssteki ifadeye katlmamak mmkn deil.DjbDNS gerek niversite gerekse ticari irketler tarafndan rahata kullanlabilir. Bind tek bana SPOI (Single Point of InSecuritness ) lakabn yeterince hakketmektedir. Ayrca djbdns dns sistemi iin yeni client libraryleride sunmaktadr. cr.yp.to/djbdns/ad/library.html adresinden gerekli bilgiler edinebilir.

OpenBSD zerine kurulacak basit bir makinada djbdns 2-3 sene kesintisiz hizmet verebilir. OpenBSD'yi merak ediyorsanz www.enderunix.org/docs/openbsd_installation.html adresinde TRKE kurulum klavuzundan yaralanarak bu iletim sistemine bir giri yapabilirsiniz.

 

Bilindii zere u anda dnya zerinde en ok kullanlan dns server yazlm olan Bind paketinde bir ok vulnerability bulunmaktadr. Bunlarn ortaya kmas sadece zaman meselesidir. Nitekim u an kullanlan bind srmnde bile birka vulnerability'nin var olduu ve bunun internette trade yapld konuulmaktadr. Sylenti bile olsa bind'i kullanmak zorunda olan sistem yneticileri ne demek istediimi anlayacaklardr. Securityfocus.com adresinde de djbdns kurulumu anlatlmaktadr. Zaten djbdns ile biz byle tantk. Sendmailden Qmail'e ekilen zorluklar bind'tan djbdns'e geerken yaamayacaksnz. Bu yaznn sonunda bind ve djbdns karlatrmasnn adresi de verilecektir.

Genel Notlar
Bu dokumanin en guncel hali; www.enderunix.org/docs/djbdns_installation.html adresindedir.

Aksi belirtilmedigi takdirde bu kabil dokumanlarin haklar  yazan yazarlarda saklidir. Bu dokuman da, parca parca ya da tamamen herhangi bir sekilde, yazarinin izni dahilinde dagitilabilir.

Yazar, bu dokumani okuyanlarin ugrayacaklari herhangi bir zarardan oturu sorumluluk kabul etmez. Use-at- your-own-risk!

Eger, herhangi bir konuda yardima ihtiyaciniz olursa, roots@enderunix.org  adresine mail atabilirsiniz.!

 

DNS Nedir?
Domain Name System [DNS] dagtk yapda bir databasedir. Bu sistem hostnameleri IPv4(yada ipv6) yada IPv4 adresleri hostnamelere evirmeye yarar. Ayrca bir domain iin gerekli mail sunucusunun adreslerini yada domain name serverlarnn hangi IP'de bulunduunu daha teknik bir ifade ile RR(Resource Records)'lar tutar.DNS yaps gerei hzl olmaldr. Bu yzden yaplan sorgulamalar eer 512 byte'tan kk ise yada master dns server ile slave dns server aras zone transferi delise UDP zerinden yaplacaktr. DNS sisteminin yazalar dns iin gerekli  bilgileri dier internet aralarnda olduu gibi RFC'lerde tanmlamlardr. 
(RFC 1034 ve 1035) Bu dkumanlara bakarsanz iinde birka kod ve zone file'larnn nasl yazlacan bulursunuz.

 

BIND (Berkeley Internet Name Daemon)da yazlrken bu kriterler dikkate alnmtr. Fakat bu sistemde gereksiz karmaklkta code'lar ve bunun getirdii gvenlik problemleri vardr. Fakat djbdns bu karmaadan uzak ve gvenli bir yazlmdr. Bunun sonucu olarakta two-thumbs-up bir daemon olmay bizce hak kazanmtr. Hatta bizce bind 9.1.X ve ileriki surumlerinde kullanlan Dns-sec sistemi bile  bind iin bir zm olmaktan ok uzaktr. Sonuta temel yani daemon internetin ilk zamanlarndan kalmtr. u an ipv4'te yaanlan gvenlik sorunlarda ayn sebepten olumaktadr. 

Bu yzden kkl bir deiim olmas gereklilii savunulmu ve ipv6 ortaya atlmtr. Bind iinde benzer model sz konusu olmadkca djbdns popleritesini srdrecektir. (Hakl bir poplerite !!!).

 

Genel olarak dns yazlmlarnn yapt iki vazife vardr. Bind kullananlar eer ok profesyenel deillerse yada bu konu ile alakal kitap okunmamsa bu iki olguyu kartrabilmektedirler. Bunlar:

1)  Resolving: Aranlan bir kayd bulma ilemi.Mesela www.yildiz.edu.tr/ adresine karlk gelen ipv4 adresinin 193.140.1.1 olmasnn bulunmas. Resolving yapan yazlmlar iki eit resolving yaparlar; recursive resolving yada non-recursive resolving. Querylerde gnderilen RD (recursion required) bitlerine gre querynin tipi belirlenir. Non-recursive querylere cevap veren serverlar cevap olarak recursive name servlar verirler.

Sonu olarak yaplan bir query recursive ise www.yildiz.edu.tr/ iin direk 193.140.1.1 IP'si yada host bulunamad cevab verilebilir. Fakat non-recursive bir query'de cevab bulmak iin baka bir name server ip'si verebilir. Non-recursive query'ler ayn anda iterative query'ler olarakta bilinirler.

2)  Authoritive Nameserving: Bir domain hakknda bilgi bulunduran daemondur. Mesela yildiz.edu.tr domainin MX,NS,A (Bunlar Resource Record olarak bilinir) recordlarnn yada kaytlarnn tutulduu name serverdr.

 

 

CANLI BIR RNEK:
Bir query nasl yaplr. Mesela www.yildiz.edu.tr/ adresinin ipv4 karl nedir? Bunun iin resolver yada sizin bilgisayarnz internette birka authoritive name servelar gezmek zorundadr. lk bata " . " serverlarndan  tr. TLD'si iin authoritive name server IP'si bulunur. Bunun IP'si (ki bu ip'nin hostname'i lkemiz iin ns1.metu.edu.tr yada ns2.metu.edu.tr'dir) alndktan sonra bu authoritive nameserver'a "edu.tr." i barndran authoritive nameserver ip'si sorulacak ve bu ilem bylece devam edecektir ve sonu olarak 193.140.1.1 adresini sizin makinanz yada /etc/resolv.conf'unuzda bulunan resolver'nz yildiz.edu.tr'in authoritive nameserver'ndan ald bilgilere gre cache'inde belli bir mddet tutacaktr. Bu sreye TTL (time to live) sresi denir. Bu sre boyunca resolver gerekli bilgileri hafzasnda cacheleyecektir. DjbDNS iin aksi belirtilmezse bu sre 42 dakikadr. Implemente edilecek sisteme gre bu sure 5 saniyede yaplabilir. (Nitekim birden fazla www servermz var ve bunlar arasnda round-robin kullanarak load balancing yapmak istersek bu  saniye deeri kullanlacaktr).




nceden Kurulmas Gerekli Yazlmlar
DjbDNS'i kullanmak iin nceden kurulmas gereken birka yazlm vardr. Bunlar yine D.J. Bernstein tarafndan yazlmlardr. Bunlar kullanlmas istenen sisteme gre deiir. Genel olarak sistem eer sadece master server olacaksa daemontools kurulmas yeterli olacaktr. Daemontools sisteminizde alan daemonlar yada servisleri gzetleyen bir yazlmdr. Fakat sadece gzetlemekle kalmaz eer konfigurasyon dizininde bulunan daemaon almyor ise bunlar tekrar balatr. Bu yazlm ile benzer vazifeleri yapan birka yazlm daha vardr. Mesela "mon" rnek verilebilir.

Kurulumu:
$ wget daemontools-0.70.tar.gz
$ tar zxvf daemontools-0.70.tar.gz
$ cd daemontools-0.70
# make setup check
# mkdir /service
#svscan /service &

Bundan sonra asl yazlmmz olan djbdns sisteme kurulur.
$ wget djbdns-1.05.tar.gz
$ tar zxvf djbdns-1.05.tar.gz
$ cd djbdns-1.05
# make setup check

Eer kurulacak olan sistemde ikinci bir slave server olacaksa zone transferi gerekecektir. Bunun iin gerekli olan yazlmlar. Ucspi (tcpserver ) ve axfrdns olacaktr. Bu yazlmlarda stte anlatld ekilde kurulabilir.

Dnscache Programnn Kurulmas
Dnscache yukarda anlatlan yazlmlardan resolver ksmna girmektedir. Yani /etc/resolv.conf'a yazlacak IP imdi kuracamz yazlmn kotuu bir bir server'a ait olmaldr. Burada kuracamz dnscache aslnda dnscache'in kurulmas olas iki eidinden birisi olacaktr. Bunlar "external dnscache" ve "internal dnscache" olarak adlandrlr. Biz burada internette yada amzda bulunan baka bir bilgisayarn querylerini ileyecek yetisine sahip olan external dnscache kuracaz. Eer evinizden dial-up balanan bir kullanc iseniz sisteminizde internal bir dnscache kuracabilir ve /etc/resolv.conf'a 127.0.0.1 ip'sini yazabilirsiniz. nternal denmesinin sebebi 127.0.0.1 interface'ine kurulmas ve dnscache'in kendini o ip'nin 53. portuna bind etmesidir. Externalda ise fark sadece dnscache'in 127.0.0.1 den farkl ve dier bilgisayarlarn ulaabilecei bir IP olmasdr.

Ek olarak dnscache kurulmadan nce hangi user olarak koaca ve hangi user olarak loglarn tutulaca belirtilmelidir. Genel olarak sisteminize login olmas ihtimali olmayan (shelli /non-existant olan) iki kullanc ekleyin. Bunlardan biri "dnscache" dieride loglar tutacak account olan "dnslog" olabilir. Birde programmzn koaca dizinde belirlenmelidir. Genel olarak   /etc/dnscachex (x = external) kullanlmaktadr. imdi yazlm kurabiliriz.


External dnscache:


#dnscache-conf dnscache dnslog /etc/dnscachex 192.168.1.1             { dnscache-conf user loguser dizin ip}
#ln -s /etc/dnscachex /service                {bu ilem ile daemontools yazlmmz  saniye iinde balatacaktr}
# echo "192.168.1.1" > /etc/resolv.conf

Internal dnscache:


#dnscache-conf dnscache dnslog /etc/dnscache        {Dikkat ederseniz IP belirtmedik.Default 127.0.0.1'dir }
#ln -s /etc/dnscache /service
#echo "127.0.0.1" > /etc/resolv.conf
# touch /etc/dnscachex/root/ip/193.140.1              {***Default olarak dnscache btn queryleri deny eder.Bu 193.140.1 dosyas ile a iine dnsquery yapmas iin izin verelim.}

Cache'imizin alp almadn sorgulamak iin "dnsqr " komutu kullanlabilir. Yaplan querylerde nemli olan satr  "answer"  satrdr.
 

# dnsqr a yildiz.edu.tr
1 yildiz.edu.tr:
166 bytes, 1+1+3+3 records, response, noerror
query: 1 yildiz.edu.tr
answer: yildiz.edu.tr 30218 A 193.140.1.1      {answer ile balayan ksm bizim aradmz cevaptr.}
authority: yildiz.edu.tr 86391 NS ana.cc.yildiz.edu.tr
authority: yildiz.edu.tr 86391 NS ns.ulak.net.tr
authority: yildiz.edu.tr 86391 NS vm4381.ce.yildiz.edu.tr
additional: ana.cc.yildiz.edu.tr 86391 A 193.140.1.1
additional: ns.ulak.net.tr 62760 A 193.140.83.251
additional: vm4381.ce.yildiz.edu.tr 86391 A 193.140.2.1



    

Artk elimizde alan bir resolver var. Ek olarak istersek CACHE bykln 100mb ram harcayacak ekilde ayarlayabiliriz. Bunun iin:
#echo 100000000 > /etc/dnscachex/env/CACHESIZE
#echo 104857600 > /etc/dnscachex/env/DATALIMIT yaplmas gerekir. Tabi bundan sonra "svc -t /service/dnscache "  ile programmz yeniden balatmak gerekecektir.

imdi sra domanimiz iin authoritive nameserver olacak olan  " tiny-dns " programn kurmaya geldi.

Tiny-dns Kurulumu
Tiny-dns yukarda da anlatld zere bizim domanimiz iin authoritive nameserverimiz olacak. (ayn zamanda authoritive reverse name servermiz olacak ipv4-->hostname.. )
nce sistemimize tiny-dns user'n(tinydns) ekleyelim ayrca sistem loglar iin dnslog da eer daha nce dnscache kurulmadysa eklenmelidir.
NEMLI NOT : Dikkat edilmesi gereken bir nokta olarak dnscache ile tinydns ayn ip'yi dinleyemez. Bu yzden tiny-dns'i 192.168.1.2'nin 53. portuna bind edeceiz.(IP-ALIASING artk btn *NIX'lerde vardr). Eer elinizde sadece bir real ip varsa bu gerek ip'yi tiny-dns iin kullann ve 192.168.1.1 ip'sinide dnscache iin kullann.

Tiny-dns:
#tinydns-conf tinydns dnslog /etc/tinydns 192.168.1.2              {yada gerek bir IP }
#ln -s /etc/tinydns /service                                                      { 5 saniye sonra daemon up olacak }

Sra tinydns'e hostname ve reverse kaytlarnn girilmesine girilimesinde. Bu aamada iki seeneiniz var.Ya "data" dosyasn manuel olarak dzenleyeceksiniz ya da /etc/tinydns/root dizini altnda bulunan add* scriptlerini kullanacaksiniz. Burada bizim tavsiyemiz data dosyasna girdilerin add* scriptleri ile girilmesi ynnde olacaktir. Bylece her ne kadar data dosyasnn konfigurasyonu bind'a gre son derece kolay ve anlalr olsada ufak hatalar yaplabilme olaslnn olmasdr. Fakat add* scriptleri ile bu ba artc hatalarn oluturduu problemlerden kurtulmu olursunuz.

Srasyla yildiz.edu.tr iin dns kaytlarn girelim ve authoritive name servermizi kuralm.

#cd /etc/tinydns/root
#./add-ns yildiz.edu.tr 193.140.1.1                  { *.yildiz.edu.tr iin authoritive nameserver 193.140.1.1 olacak; SOA}
#./add-ns 1.140.193.in-addr-arpa 193.140.1.1  {reverse authoritive nameserver 193.140.1.1 olacak}
#./add-host ogis.yildiz.edu.tr 193.140.1.3        { Sanrm baya zor anlaslacak birsey :) }
#./add-alias www2.yildiz.edu.tr 193.140.1.3     {DAHA NCEDEN TANIMLANMI bir ip'ye hostname alias ekliyoruz}
#./add-mx yildiz.edu.tr 193.140.1.1                 {bir numaral mx olarak 193.140..1.1 ekleniyor}
#./add-mx yildiz.edu.tr 193.140.1.5                 {ikinci srada gelen yildiz.edu.tr mx serveri}
#./add-childdns ece.yildiz.edu.tr 193.140.1.15  { subdomainler iin namserver }
# make                                                        {tindns-data komutu altrlr }



     Bu noktada nemli birey var. add-ns ve add-mx scriptlerini kullanrken dikkat ederseniz ns serverlarn hostname'ini vermedik. Bu iki script default olarak a.ns ... b.ns hostnamlerini atarlar. Eer internic'te yada daha doru ifadesiyle registrar'nzda nameserver hostname'i olarak farkl bir isim olabilir. te bu noktada iki hostname'de ayn olmaldr. add-ns ve add-mx yine ayn dizinde ( /etc/tinydns/root/) dizini altinda bulunan "data" dosyasn dzenler. Burada favori editrnzle bu dosyay ap gerekli deiiklikleri yapmalsnz. rnek olarak ulak.net.tr'de yildiz.edu.tr nameserverinin hostname'i ana.cc.yildiz.edu.tr olarak tanmldr. "data" dosyasnda bu deiiklik yaplmaldr.
  
    Sra geldi data dosyasndaki bilgileri data.cdb olarak yani tinydns'in konfigurasyon dosyas olarak kaydetmeye. Yine ayni dizinde dikkat ederseniz bir Makefile vardir. Yaplmas gereken tekey bu dizinde "make" komutunu altrmaktr. Make komutunun yazlmas ile birlikte tiny-dns hizmet vermeye hazir olacaktr. Make komutu Makefile dosyasndanda anlalaca zere "tinydns-data" programn kullanarak data.cdb'yi oluturur. Ksacas tinydns-data data dosyasn okur ve tinydnsin hzl bir ekilde ulaabilecei data.cdb dosyasn yaratr. Ayrca tinydns-data otamatik olarak data.cdb'yi gnceller. Bylece data dosyasnda yaplan bir deiiklik tinydns'i bir daha balatmadan direk data.cdb dosyasn gnceller. Eer bu data.cdb update edilirken sistem kse bile sistem yeniden baladnda sistem data.cdb dosyasnda bir problem yaamaz. Tam bir all-or-nothing mantyla yada transaction mant ile alr.

    Aada data file'n ierii verilmitir. Bu dosyay stte add-* scriptleri ile yapabileceiniz gibi manuel olarakta yapabilirsiniz.
 

.yildiz.edu.tr:193.140.1.1:a:259200                  {yildiz.edu.tr iin  authoritive nameserver notka ile balyor.}
.1.140.193.in-addr.arpa:193.140.1.1:a:259200
=www.yildiz.edu.tr:193.140.1.1:86400             {www.yildiz.edu.tr iin host kayd}
.1.140.193.in-addr.arpa:193.140.1.1:a:259200  {*.1.140.193 iin authoritive nameserver }
=ogis.yildiz.edu.tr:193.140.1.3:86400              {ogis.yildiz.edu.tr iin host kayd }
+www2.yildiz.edu.tr:193.140.1.3:86400           { Bir alias kayd.Alias kaytlar + ile balar}
@yildiz.edu.tr:193.140.1.3:a::86400                { yildiz.edu.tr iin mx kayd.Prioritysi harflerle ifade ediliyor. }
@yildiz.edu.tr:193.140.1.5:b::86400                { yildiz.edu.tr iin ikinci mx kayd. @ ile balyor. }
&ece.yildiz.edu.tr:193.140.1.15:86400             {ece.yildiz.edu.tr iin gelen queryleri 193.140.1.15 ip'sine ynlendir} 

 

   Bu arada istenirse daemontools ile gelen svstat ile tinydns alyormu almyormu kontrol edilebilir.
#svstat /service/tinydns.
   Yada log filelara bakabiliriz.
#tail -f /service/tinydns/log/current ile gerek zamanl olarak ilemler gzlenebilir.

Birde tinydns'in datasn kontrol edelim. Bunun iin dnscache'i iin kullandmz komuta benzer bir komut olan "dnsq" komutunu kullanacaz.

#dnsq a yildiz.edu.tr 193.140.1.1
1 yildiz.edu.tr:
127 bytes, 1+1+2+2 records, response, authoritative, weird ra, noerror
query: 1 yildiz.edu.tr
answer: yildiz.edu.tr 86400 A 193.140.1.1               {nemli olan ksm buras }
authority: yildiz.edu.tr 86400 NS smurf.cc.yildiz.edu.tr
authority: yildiz.edu.tr 86400 NS bigblue.ce.yildiz.edu.tr
additional: smurf.cc.yildiz.edu.tr 86400 A 193.140.1.1
additional: bigblue.ce.yildiz.edu.tr 86400 A 193.140.2.1


NOT: Tinydns'i sorgulamak iin dnsq dnscache'i sorgulamak iin dnsqr kullanlr.

 

/service/tinydns/root/data dosyas format:
  Yukarda da belirtildii gibi "data" dosyasndan tinydns'in okuyabilecei formata (data.cdb) dntrlr.Peki "data" dosyasnn format ne ekildedir:

.fqdn:ip:x:ttl:timestamp:lo

Teker teker yukardaki ifadenin ne anlamalara geldiini aklayaym.
1) .fqdn ksm sizin entry'nizi simgeler. Bu entry authoritive bir nameserver'in balang (SOA = Start Of Authority) si olabilir. Nitekim data dosyasinda "." ile balayanlar SOA kaydini belirtir. stteki rneimize bakarsak en st iki satir "." ile balamaktadir. Bunlar SOA'lar oluturur. "." dan baka karakterler vardr:

      a) . ile balayanlar SOA'y belirtir.Mutlaka olmaldr.
       b
) @ ile balayan satr bunun bir mx entry'si olduunu gsterir.
      c) = ifadesi A record'lar iin kullanilir. Ayni zamanda tinydns-data reverse record kayitlarindan olan PTR entry'sini   girer.
      d) + ifadesi add-alias script'i ile oluturulur. Yine bu iaret tinydns-data'ya A record yaratmasn soyler fakat PTR kaydi girilmez. Eer ayn IP iin iki tane = kullanrsanz hata alrsnz ( data dosyasini elle deitirerek yada add-host ile ).
      e) & simgesi ile balayan satrlar child-dns girmek icindir. Mesela elek.yildiz.edu.tr 'nin kendi dns server'nn olmasn istiyorsunuz. Bunun iin add-childdns komutunu kullanrz.


2) ip ksm girdisi yaplacak fqdn'nin resolve edilecegi ip'yi belirler.Mesela:
&ece.yildiz.edu.tr:193.140.1.15:86400  ifadesindeki ikinci sekmen  ip dir ve kendisinden nce gelen ifadenin   (&ece.yildiz.edu.tr)  ip'sini belirler.

3) x ksm mx ve ns kaytlarnda ie yaramaktadr. Bu ncelii belirlemek iin kullanlr ve query'lere  buna gre verilir. yleki eer buraya "a" yada "b" girerseniz dnsq ile size dnecek cevap eer ns kaydi szkonusu ise a.ns.yildiz.edu.tr olur.Eer girilen deer b ise bu ikincil nameserver' (authoritive)  gsterir ve b.ns.yildiz.edu.tr olarak gsterilir. Yine mx kaytlar iinde a.mx.yildiz.edu.tr ve b.mx.yildiz.edu.tr kullanlr. Eer bu tarz gsterim yapmak istemiyorsanz. Bu ksma direk "dns1.yildiz.edu.tr" yada "dns2.yildiz.edu.tr" girebilirsiniz. Ya da ayn ekilde "mx1.yildiz.edu.tr" ve de  "mx2.yildiz.edu.tr".

**Aklnza u soru gelebilir. Eer bu ksma ben kendi hostname'lerimi girersem ncelik sras ne olacak. Burada first-come-first-served ilkesi esas alinir. Yani dosyada hangisi stte ise o ncellie sahiptir.

4)ttl ksm ise kurduumuz authoritive nameserver' sorgulayan cache'lerin cache'lerinde bu entry'i ka saniye(**) tutacan belirler. ns  ve mx server lar iin burada default deger 3 gn (259200 saniye) iken dier entry'ler iin 1 gndr (86400 saniye).

5)timestamp Adndanda anlalaca zere dosyann ne zaman deitirildiini gsterir. " add-* " scriptleri bu ksma dokunmazlar.

6) lo Bu ksm aada da anlatld zere "Deiik istemcileri deiik cluster'lara nasl ynlendirebilirim? " sorusunun cevab olmaktadr.

EK: 3 ksmda anlatlanlar somutlatrmak iin  rnek bir data dosyasndan alnt yapaym:

.yildiz.edu.tr:193.140.1.1:dns1.yildiz.edu.tr:259200    

Byle bir entry'de tinydns-data komutu iki ey yapar. Ilk bata dns1.yildiz.edu.tr iin 193.140.1.1 'i gsteren A record yaratlr. Daha sonra  bunun SOA olduunu belirtilen ksm data.cdb'ye yazlr

@yildiz.edu.tr:193.140.1.3:mx1.yildiz.edu.tr::86400 

Bu rnekte ise ilk bata A record sonrada mx kaydi yaratlr.


 

 

Zone Transferi:
Zone Transferi Nedir?

Master yada primary dns servernzda yaptnz deiiklikleri secondary yada slave serverlara kopyalamanz gerekmektedir. Aslnda bunun iin bir ok deiik aralar mevcuttur. Bunun iin default shelli ssh olan rsync bile kullanlabilir. Bylece dosyannn tamamnn kopyalanmas yerine artan dosyalarn sondaki ekleri kopyalanabilir. Yada isterseniz direk data.cdb dosyasn manuel kopyalayabilirsiniz.

Fakat bu i iin en akl banda zm axfrdns kullanlabilir. Bunun iin ncellikle:

1)DNS server account name'i: "axfrdns". Dier btn djbdns programlarnda olduu gibi program kendini bu account name ad altnda belirtilen dizine chroot eder. te bu djbdns programn gvenli klan en nemli etkenlerden biridir
2)DNS log accountu: dnslog.
3)axfrdns'in alaca dizin /etc/axfrdns
4)tinydns dizini: /etc/tinydns

Sonra srasyla:

#axfrdns-conf axfrdns dnslog /etc/axfrdns /etc/tinydns 193.140.1.1                                 {Bu ip tinydns ip'si ile ayn olabilir.nk axfrdns zone transferi iin 512 bytetan byk dosylar transfer eder bu yzden tcp kullanlr fakat tinydns udp kullanr.}

#cd /etc/axfrdns
#echo "193.140.1.:allow,AXFR="yildiz.edu.tr/1.140.193.in-addr.arpa" > /etc/axfrdns/tcp     {193.140.1'deki makinalara reverse ve normal zone'larnn transferine izin ver }
#make
#ln -s /etc/axfrnds /service                                                                                         {axfrdns'i altralm}

 

 

 

axfr-get {zone xfer istemcisi }
Eer master olarak bir BIND server kullanacaksanz ve slave (ya da secondary) name server olarak axfr-get programn kullanmalsnz. Ya da dier bir master tinydns serverdan zone transferinde bulunmak iin kullanlabilir. Eer iki serverda (master ve slave) tinydns ise scp yada rsync ile direk ana servardan data.cdb'yi slave server'n /etc/tinydns/root/ dizinine kopyalayabilirsiniz. Eer rsync hususunda bir bilgi almak isterseniz www.freebsddiary.org/ adresini size tavsiye edebilirim.

 

Axfrdns-get ksaca yle alr:
#tcpclient authoritive_name_server_ipsi 53 axfr-get yildiz.edu.tr fn fn.tmp

Burada eer axfr-get ana eitli queryleri yaparak domain iin primary server bulacak ve eer ana serverda zone transferi iin axfr-get komutunun alt servera izin verilmise ana serverdan (master) ektii yildiz.edu.tr hakkndaki bilgileri fn.tmp olarak yazacaktr. Eer zone transfer ilemi baar ile tamamlanrsa dosya ad otamatik olarak fn olarak deitirilecektir.Bu fn dosyas da   tinydns-data formatnda olacaktr. Yani daha nce grdmz data dosyas ile ayn formatta olacaktr.
Genel olarak axfr-get programnn getirdii dosyalarda ayn kayda ait birden fazla girdi olacaktr. Dosyay "sort -u" komutu ile dosyay filtreleyebilirsiniz.

 

NOT: axfr-get iin daha nceden tcpclient programn kurmu olmanz gerekmektedir. Zaten sisteminiz tcpserver  kurulu ise tcpclient otamatik gelecektir.

DjbDns komutlar
u an kadar anlatlanlar neyin nasl yaplaca hususunda genel bir bilgi vermek iindi. Bu blmde anlatlacak olanlar djbdns ile gelen programlarn (hepsinin) teker teker ksaca bir aklamas olacak. DjbDns ile gelen bir ok komut var. Bunlarn aklnzda biraz daha kolay yer etmesi ve bu dkumann bir referans kabul alnmas iin bu tarz bir uygulama yapyorum.

 

dnscache : Ksaca resolver olarak kullanlmaktadr.zlen her istekleri ayn zamanda cacheleyerek cevap verme sresinin azalmasn salar.A ortamndan gelen isteklere cevap verecek ekilde ayarlanabilecei gibi local resolver olarakta kullanlabilir.

tinydns :  Authoritive bir nameserver'dr.UDP altnda alr.rnek vermek gerekirse yildiz.edu.tr domaini iin gelebilecek tm querylere cevap verecek ekilde ayarlanabilir.512 byte ve zeri isteklere cevap vermez.Bunun sebebi sadece udp altnda almas ve dns implementationun bu ekilde olmasdr.

walldns : WallDNS reverse bir dns walldr.Yani sisteminiz gerisindeki real ip'ye sahip hostlarn isimlerini saklamakta kullanlabilir.Firewall mant ile rtr.Baz ftp serverlar kendine gelen requestleri kabul etmek iin mutlaka reverse kaydnn o host iin tanml olmasn isterler.Bu durumlar iin walldns kullanlabilir.

dnsq     :  tinydns gibi authoritive namserverlar sorgulamak iin kullanlr.
#dnsq type FQDN server
#dnsq MX yildiz.edu.tr 193.140.1.1
193.140.1.1 serverna yildiz.edu.tr iin kaytl mx kaydn sorar.

dnsqr   : Bu komut dnsq'ya benzer fakat authoritive nameserver sorgulamas yerine dnscache gibi cacheleri sorgulamaya yarar.
#dnqr ns www.yildiz.edu.tr/
Cache'e yildiz.edu.tr nin ns kaydn sorar.

dnsfilter : Bu komut dnsname gibidir fakat ayn anda oklu query yapabilir.dnsname sadece bulduu ilk entry'i listeler.
#dnsfilter
193.140.1.1                                     {Bizim girdimiz }
193.140.1.1=smurf.cc.yildiz.edu.tr
193.140.1.3                                      {Bizim girdimiz }
193.140.1.3=ogis.cc.yildiz.edu.tr


axfrdns : Zone transferi iin kullanlr.eitli  slave nameserverlar iin zone transfer server olarak vazife yapar.Tinydns'in alt IP'de alabilir.TCP kullanr.

dnstrace : Belirtilen root nameserver'dan balayarak ( r ) bir domain altinda ( fqdn )  istenenen tipte ( t ) queryleri bulur ve iliki kurduu btn serverlar stdout'a yazar.Fakat karmak bir formatta.
1) #dnstrace t fqdn r
2)
#dnstrace any www.yildiz.edu.tr  a.root-servers.net > yildiz &

dnstracesort : dnstrace komutunun ciktisini okuyabilieceimiz ekilde listeler
# dnstracesort < yildiz | less

**Yada direk: dnstrace any www.yildiz.edu.tr  a.root-servers.net | dnstracesort | less

axfr-get : Slave servlarda kullanlmak zere tasarlanmtr.Master serverdan zone transferinde kullanlmak iin kullanlr.



Ayrca birka scripting amal komutlar(dnsmx,dnsip,dnsname)

 

Yardmc Bilgiler
Bu blmde  sahsmn ilgisini eken birka noktay anlatacam:

1) Ayn data'y ieren 5 web server iin Load Balancing nasl yaparm?


Aslnda dns tabanl load-balancing'e tam manasyla scak bakmasamda djbdns ile load balancing yaplabiliyor. Eer Linux altnda gerek bir Load Balancing ya da High Availability aryorsanz www.linux-vs.org/ yada www.linux-ha.org/ adresine bakn derim. Neyse biz konumuza dnelim.Amacmza ulamak iin TTL ile oynayacaz.Her bir www serverimizin entrysi iin 5 saniye bir TTL tanmlayacaz. Bylece kar tarafta cachelenen querylerinin yaam sresi 5 saniye olacak. Gelen her bir request iin djbdns'te round-robin yaparak bu 5 server arasnda tercihini yaparak kar taraftaki resolvera bildirecektir.  /etc/tinydns/root/data dosyasna

+www.yildiz.edu.tr:193.140.1.1:5
+www.yildiz.edu.tr:193.140.1.2:5
+www.yildiz.edu.tr:193.140.1.1:5
......
yazlr. /etc/tinydns/root/ dizininde "make" komutu altrarak tinydns-data komutunun data dosyasndaki bilgileri data.cdb gibi cdb formatnda saklamas salanr.



2)Deiik istemcileri deiik cluster'lara nasl ynlendirebilirim?


Diyelimki niversiteniz yada irketiniz iinden gelen querylere yani intranet'inizden gelen querylere www.yildiz.edu.tr/ iin 193.140.1.1 internetten gelen www.yildiz.edu.tr/ queryleri iin 192.193.140.1.2...5 aras cevaplarn verilmesini istiyorsunuz. Bunun iin /etc/tinydns/root/data dosyasna farkl iki location tanmlarz. IN ve EX gibi 1 yada 2 byte uzunluunda (maximum  2 byte uzunluunda) tanmlamalar yaparz. yleki:

%IN:193.140.1
%EX
+www.yildiz.edu.tr:193.140.1.1:5::IN
+www.yildiz.edu.tr:193.140.1.2:5::EX
+www.yildiz.edu.tr:193.140.1.3:5::EX
...

3)Dier bir problem ise ayn ada bulunun bir dnscache'in o a iin tanml authoritive nameserveri nasl bulacadr. Normalde aadaki bir dzenleme yaplmazsa local olarak bulunabilecek bir cevap iin btn interneti gezmesi gerekecektir. Bu durumu nlemek iin:

#cd /etc/dnscachex/root/servers
#echo "193.140.1.1" > yildiz.edu.tr
# echo "193.140.1.1" > 1.140.193.in-addr.arpa

ile bu sorunu zebilirsiniz.

 

4)Bu ksm ok nemli (!!!). Diyelimki djbdns'i kurdunuz ve hereyin tam olarak alp almadndan emin olmak iin sisteminizi yeniden balattnz. Fakat o ne.Djbdns almad ve u ekil bir hata veriyor :

svscan: warning: unable to start supervise dnscache: file does not exist

Burada bulunamayan ve svscanin dnscache'i almamasn salayan /usr/local/bin altndaki daemontools komutlarnn bulunmamas. Buradaki zm: /usr/local/etc/rc.d/djbdns.sh gibi bir dosya yaratp, chmod 755 djbdns.sh ile altrlabilir hale getirip u satrlar djbdns.sh'a eklemektir.

 

---------------burdan balyor------------
#!/bin/sh
export PATH="$PATH:/usr/local/bin"
svscan /service &
------------
burada bitiyor--------------



Kaynaklar:
DJBDNS SOURCE:
cr.yp.to/

DJBDNS HOMEPAGE:
www.djbdns.org/
djbdns.enderunix.org/ (Official Olarak djbdns.org'un mirrorunu tutmaktayz.)

Ayrca bu sayfalarda djbdns iin yaplm birkac patch bulabilirsiniz. rnek olarak bir cache'in dnscache ile birden ok ip'ye bind edilmesi verilebilir.

DJBDNS FAQ:
cr.yp.to/djbdns/faq/

DjbDNS ve BIND Implemantation Comparison:
cr.yp.to/djbdns/ad/easeofuse.html

Bu dokmana official djb sitesi vastasylada ulaabilirsiniz
www.djbdns.org

DjbDNS'in tinydns paketini webten ynetmek iin python ile yazlm bir ara:
www.linuxis.net/twa

Gerrit Pape'in yazd djbdns manuel sayfalar: (Djbdns ile manual page gelmemektedir)
ftp://ftp.innominate.org/gpa/djb/

dnscache iin round-robin yamasi:  (Bu patch dnscache iindir.tinydns icin round-robin destei paketle gelmektedir)
www.legend.co.uk/djb/dns/round-robin.patch

 




gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.