|
|
|
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. |
|
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
|