DNS-NASIL ----------------- Nicolai Langfeldt janl@math.uio.no v1.1, 30 June 1996 ----------------- Onur Volkan HATEM , volkan@knidos.cc.metu.edu.tr volkan@compclup.ceng.metu.edu.tr hatem@ceng.metu.edu.tr v1.0, 24.11.1996 ----------------- Nasil (en kisa surede) DNS yoneticisi olunur. Anahtar sozcukler: DNS, bind, named, dialup, ppp, slip, Internet, domain (alan), name (ad), hosts (...), resolving (cozumleme) Yasal Aciklamalar: (C)opyright 1995 Nicolai Langfeldt. Tescil ile uyusmayan degisik- likler yapmaktan kacininiz, tescil yazisi ile birlikte olmasi sartiyla serbestce dagitabilirsiniz. (C)opyright 1995 Nicolai Langfeldt. Do not modify without amending copyright, distribute freely but retain copyright message. The author wishes to thank Arnt Gulbrandsen who read the drafts to this work countless times and provided many useful suggestions. 1. Giris: Nedir, ne degildir? DNS (alan adi sistemi), network yoneticiliginin en az anlasilan alanlarindan biridir. Bu "NASIL" bazi seyleri biraz daha acik hale getirecek. Bu dokuman basit bir DNS ad sunucusunun nasil kurulacagini anlatmaktadir. Daha karmasik kurulumlar icin "Gercek Dokumanlar"i okumaniz gerekiyor. "Gercek Dokumanlar"in neler icerdigini son kisimda anlatacagim. Bu dokumani okumaya baslamadan once bilgisayarinizin ag yapi- landirmasinin (network configuration) tamamlanmis olmasi gerek- mektedir. Yani bilgisayarinizdan disariya, disaridan bilgisa- yariniza her turlu ag baglantisinin yapilabiliyor olmasi gereki- yor. Ozellikle 127.0.0.1 adresine telnet baglantisi kurdugunuzda kendi bilgisayariniza baglanabiliyor olmalisiniz. Buna ek olarak, baslarken, /etc/host.conf /etc/resolv.conf ve /etc/hosts dosyalarinin iyi bir sekilde yapilandirilmis olmalari gerekiyor. Bu dosyalarin ne yaptiklari ve nasil yapilandirildiklari bu doku- manda anlatilmamaktadir. Eger az once saydigim kurulumlar tamam degilse "NET-2 HOWTO" dokumanini okumaniz gerekmektedir. Eger SLIP veya PPP kullaniyorsaniz onlarin da calisir durumda olmalari gerekmektedir (Bkz. NASIL PPP). "Makineniz" dedigimde uzerine DNS kurmaya calistiginiz bilgisa- yari kastediyor olacagim. Ag yapilandirmanizla ilgili olan diger bilgisayar(lar)inizi degil. "Ad sorgulari"ni (name queries) engelleyen bir "firewall" un arkasinda olmadiginizi varsayiyorum. Eger bu tur bir yapi- landirmanin ardindaysaniz "firewall ve diger ozel kurulumlar bolumunu okumaniz gerekiyor. Ad sunuculugu UNIX'te "named" adi verilen bir programla yapilir. "Named", esgudumu Internet Yazilim Konsorsiyumu icin Paul Vixie tarafindan yapilan "bind" pakedinin bir parcasidir. "Named" bir cok Linux dagitimina dahil edilir ve genellikle "/usr/bin/named" olarak kurulur. Eger "named" niz varsa muhtemelen kullanabiliyor olacaksiniz; yoksa derlenmis "named"yi bir Linux ftp sunucusundan (ftp.metu.edu.tr:/pub/sunsite) ya da kaynak kodunun son surumunu "ftp.vix.com:/pub/bind" dan alabilirsiniz. DNS internet uzerinde dagitik bir veri tabanidir. Nasil kur- dugunuza dikkat edin. Yapacaginiz yanlis bir hareket diger insan- lari da etkileyecektir. DNS iniz tutarli ve duzgun oldugu surece iyi bir hizmet alirsiniz. Bu dokumanda bazi seyleri basite indirgemek icin birtakim varsa- yimlar yaptim (yari gercekler de diyebiliriz). Soyledikleri- me inanirsaniz calisir durumda bir sisteminiz olacak. Ipucu: Degistirmenizi isteyecegim (eger varsa) tum dosyalarin yedegini alin ki birseyler ters giderse sisteminizi eski, calisir haline geri getirebilesiniz. 2. caching only Ad sunucusu: DNS yapilandirmasinda ilk deneme olan bu kisim dialup kullani- cilar icin cok kullanislidir. Cache only ad sunucusu ad sorgularinizin cevabini bulacak ve bir daha ihtiyaciniz oldugunda cevabi hatirlayacaktir. Oncelikle /etc/named.boot adli dosyaya ihtiyaciniz olacak. "Named" ilk calistiginda bu dosyayi okur. Simdilik sadece sunlari kapsamasi yeterli olacak: ---------------------------------------------------------------- ; nicholais caching ad sunucusu icin acilis dosyasi ; directory /var/named ; ; type domain kaynak dosya ya da host cache . root.cache primary 0.0.127.in-addr.arpa pz/127.0.0 ----------------------------------------------------------------- "directory" (dizin) satiri named'ye dosyalar icin nereye bakmasi gerektigini soyler. Gerekli diger dosyalarin yerlesimleri bu dizinin altinda olacaktir. Linux Dosya-sistemi Standart'ina gore bu dizin "var/named" dir. Bence "/local/named" daha uygun bir dizindir ama ben biraz da tuhafimdir. Bu kurulumda cache dosyasi olan /var/named/root.cache sunlari kapsamalidir: _________________________________________________________________ . 518400 NS D.ROOT-SERVERS.NET. . 518400 NS E.ROOT-SERVERS.NET. . 518400 NS I.ROOT-SERVERS.NET. . 518400 NS F.ROOT-SERVERS.NET. . 518400 NS G.ROOT-SERVERS.NET. . 518400 NS A.ROOT-SERVERS.NET. . 518400 NS H.ROOT-SERVERS.NET. . 518400 NS B.ROOT-SERVERS.NET. . 518400 NS C.ROOT-SERVERS.NET. ; D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 _________________________________________________________________ Bu dosya dunyadaki "root sunucular"i listeler. Bu liste zamanla degismektedir ve yeniden duzenlenmesi gerekecektir. Bu dosyayi guncel tutmak icin "bakim bolumu"ne bakiniz. "named.boot" dosyasindaki ikinci satir "primary' satiridir. Nasil kullanildigini bir sonraki bolumde anlatacagim. Simdilik bu dosyayi "127.0.0" adiyla "pz" altdizinine yerlestirin: __________________________________________________________________ ; /var/named/pz/127.0.0 @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. _________________________________________________________________ Bir sonraki adimda asagidakine benzeyen bir /etc/resolv.conf dos- yasi gerekecek: _________________________________________________________________ search alt-alan.sizin-alan.edu sizin-alan.edu nameserver 127.0.0.1 _________________________________________________________________ "search" (ara) satiri baglanmak isteyeceginiz hostnameler icin hangi alanlara bakilmasi gerektigini belirtir. "nameserver" (ad sunucusu) makinenizin ad sunucusuna ulasabilecegi adresi gosterir. Su anda bu adres kendi bilgisayariniza isaret etmektedir. (Not: named bu dosyayi hicbir zaman okumaz, sadece resolver (cozumleyici) icin gereklidir) Bu dosyanin ne yaptigini gostermek icin: Eger bir istemci "foo" adina bakacak olursa : "foo.alt-alan.sizin-alan.edu" denenen ilk yer olur, daha sonra (eger ilk deneme basarisiz ise) "foo.sizin-alan.edu" ya bakilir, son olarak da "foo" ya. Istemcinin "sunsite.unc.edu" adresini arayacak olursa ilk olarak "sunsite.unc.edu.alt-alan.sizin-alan.edu", daha sonra "sunsite.unc.edu.sizin-alan.edu" ve son olarak "sunsite.unc.edu" denenecektir. Arama suresini uzatacagindan "search" satirina cok sayida alan adi koymak istemeyebilirsiniz. Asagidaki ornek "alt-alan.sizin-alan.edu" alanina ait oldugunuzu varsayar. Bu durumda bilgisayarinizin adresi "bilgisa- yariniz.alt-alan.sizin-alan.edu" olacaktir. "search" satiri en ust alan adini kapsamamalidir (bu durumda TLD -en ust alan- "edu" dur). Eger baska bir alana ait bilgisayarlara cok sIk erisme gereksinimi duyuyorsaniz asagidaki gibi bir arama satirini /etc/resolv.conf dosyasina ekleyebilirsiniz. _________________________________________________________________ search alt-alan.sizin-alan.edu. sizin-alan.edu. diger-alan.com. _________________________________________________________________ Daha sonra "libc" nizin surumune bagli olarak /etc/nsswitch.conf ya da /etc/host.conf dosyasini duzeltmeniz gerekecektir. /etc/nsswitch.conf Degisik veri turlerini hangi dosya ya da veri tabanlarindan alacaginizi gosteren uzun bir dosyadir. Genellikle bas kisminda kullanisli notlar icerir. "hosts:" ile baslayan satiri bulun, il- gili satir su sekilde olmali: __________________________________________________________________ hosts: files dns __________________________________________________________________ Eger "hosts:" ile baslayan bir satir yoksa ekleyin. Bu satir once- likle /etc/hosts dosyasina daha sonra dns e bakilmasi gerektigini soyler. /etc/host.conf Muhtemelen sadece birkac satir iceriyor olacaktir. "order" ile bas- layan satiri bulun ve asagidaki gibi olacak sekilde degistirin: __________________________________________________________________ order hosts,bind __________________________________________________________________ Eger "order" satiri yoksa ekleyin. Bu satir ad cozumleyen yor- damlara oncelikle /etc/hosts dosyasina bakilmasini, basarisiz ol- unmasi halinde ad sunucusuna (sizin resolv.conf dosyanizda 127.0.0.1 olan) bakilmasini soyler. Adi gecen dosyalar resolv(8) man dosyasinda anlatilmaktadir (bu dosyayi gormek icin "man 8 re- solv" komutunu verin). Bunu simdi yapin. Aksi takdirde bir daha yapmayacaginizdan neredeyse eminim. Named yi calistirmak. "Named"yi calistirma zamani geldi. Eger dialup baglanti kullaniy- orsaniz once baglantiyi kurun. Daha sonra "ndc start" yazin. Ca- lismayacak olursa "/usr/sbin/ndc start" i deneyin. Simdi kurulu- munuzu test edebilirsiniz. "tail -f /var/adm/messages" komutunu verdiginizde (syslog mesaj dosyasina halen yazilmakta olan mesajlari gosterir) asagidakilere benzer satirlar gormelisiniz: Jun 30 21:50:55 roke named[2258]: starting. named 4.9.4-REL Sun Jun 30 21:29:0 3 MET DST 1996 janl@roke.slip.ifi.uio.no:/var/tmp/bind/named Jun 30 21:50:55 roke named[2258]: cache zone "" loaded (serial 0) Jun 30 21:50:55 roke named[2258]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1) Eger bir hata mesaji gorecek olursaniz mesajin icinde ilgili dosyanin adini arayin (umarim named.boot ya da named.cache dosyalarindan biridir :-) "Named"yi oldurun (kill -9 pid) ve il- gili dosyayi yeniden gozden gecirin. $ nslookup Default Server: localhost Address: 127.0.0.1 > "nslookup" i calistirdiktan sonra gordukleriniz yukaridakiler gibiyse hersey yolunda demektir. Baska birsey gorecek olursaniz su ana kadar yaptiklarinizi gozden gecirmeniz gerekecek. "named.boot" dosyanizi her degistirdiginizde named yi "ndc restart" komutuyla yeniden calistirmaniz gerekecektir. Simdi bir sorgu denemesi yapabilirsiniz. Yakininizdaki bir bilgi- sayara bakmayi deneyin. > eel.cc.metu.edu.tr Server: localhost Address: 127.0.0.1 Name: eel.cc.metu.edu.tr Address: 144.122.202.113 nslookup "named" nin eel.cc.metu.edu.tr adresini aramasini iste- di, daha sonra "root.cache" dosyanizdaki root sunuculardan birine baglandi ve nereye bakmasi gerektigini sordu. Sonucu almak icin /etc/resolv.conf dosyanizda siralamis oldugunuz tum alanlarin taranmasi gerekeceginden biraz beklemeniz gerekebilir. Tekrar deneyecek olursaniz: > eel.cc.metu.edu.tr Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: eel.cc.metu.edu.tr Address: 144.122.202.113 Bu defa "Non-authoritative answer:" (yetkisiz cevap) uyarisini aldik. Bu, named nin bu defa disaridaki ad sunucularina sormak yerine kendi cache ine bakip cevabi burada buldugu anlamina geli- yor. Ancak buradaki bilgi gecerliligini yitirmis (eskimis) olabi- lir. Bu kucuk tehlikeyi hatirlatmak amaciyla yukaridaki uyari mesajini aliriz. nslookup tan cikmak icin "exit" komutunu verin. Eger dialup kullanicisi iseniz (ppp, slip) lutfen "dialup baglan- tilar uzerine" adli bolumu okuyun. Burada birtakim oneriler bula- caksiniz. caching named yi nasil kuracaginizi ogrendiniz, kutlama icin bi- ra, sut ya da her neyi seviyorsaniz alabilirsiniz :). 3. Basit bir alan Kendi alaninizi nasil kurarsiniz? Bu bolume baslamadan once DNS'in nasil calistigina dair bir mik- tar teorik bilgi verecegim. Okumanizi oneririm. Eger istemiyor- saniz en azindan hizlica bir goz gezdirin. "named.boot" dosyasinin neler icermesi gerektiginden bahsetmeye basladigimda durun. DNS hiyerarsik bir sistemdir. En ust basamak "." seklinde yazilir ve "root" denir. "." un altinda birkac TLD (en ust alan) vardir. En unluleri ORG, COM, EDU ve NET tir. prep.ai.mit.edu nun adresi- ni bulmak istediginizde ad sunucunuz EDU alanina hizmet veren bir sunucuya ulasmak zorunda. Once root.cache dosyasina bakar,root sunucu (ya da ".") EDU alaninin ad sunucu listesini verir. Soyle ki: $ nslookup Default Server: localhost Address: 127.0.0.1 Bir root sunucunun adresini soralim. > server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Sorgu tipini NS (ad sunucusu) yapalim. > set q=ns EDU alanini sorgulayalim. > edu. EDU nun ardindaki "." cok onemlidir. Sunucuya root'un (".") hemen altindaki EDU alanini sorguladigimizi soyler ki bu da arama alanini daraltir. edu nameserver = A.ROOT-SERVERS.NET edu nameserver = H.ROOT-SERVERS.NET edu nameserver = B.ROOT-SERVERS.NET edu nameserver = C.ROOT-SERVERS.NET edu nameserver = D.ROOT-SERVERS.NET edu nameserver = E.ROOT-SERVERS.NET edu nameserver = I.ROOT-SERVERS.NET edu nameserver = F.ROOT-SERVERS.NET edu nameserver = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17 F.ROOT-SERVERS.NET internet address = 192.5.5.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4 Bu bize *.root-servers.net sunucularinin EDU alanina hizmet verdi- gini gosterir. Simdi mit.edu alanina kimin hizmet verdigine bakalim: >mit.edu Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = STRAWB.mit.edu mit.edu nameserver = W20NS.mit.edu mit.edu nameserver = BITSY.mit.edu Authoritative answers can be found from: STRAWB.mit.edu internet address = 18.71.0.151 W20NS.mit.edu internet address = 18.70.0.160 BITSY.mit.edu internet address = 18.72.0.3 steawb, w20ns ve bitsy sunuculari mit.edu alanina hizmet veriyorlar. Bunlardan w20ns i ai.mit.edu icin sorgulayalim: > server W20NS.mit.edu. Host adlarinin buyuk/kucuk harfle yazilmasi onem tasimaz ama bunlari yazmak icin faremi kullandigimdan nslookup in verdigi ciktinin aynisini yaziyorum. Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver = WHEATIES.AI.MIT.EDU ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU ai.mit.edu nameserver = TRIX.AI.MIT.EDU ai.mit.edu nameserver = MUESLI.AI.MIT.EDU Authoritative answers can be found from: AI.MIT.EDU nameserver = WHEATIES.AI.MIT.EDU AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU WHEATIES.AI.MIT.EDU internet address = 128.52.32.13 WHEATIES.AI.MIT.EDU internet address = 128.52.35.13 ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 ALPHA-BITS.AI.MIT.EDU internet address = 128.52.37.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.32.4 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.32.6 TRIX.AI.MIT.EDU internet address = 128.52.38.6 MUESLI.AI.MIT.EDU internet address = 128.52.32.7 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 Yukarida goruldugu gibi ai.mit.edu alaninin sunucusu weaties.ai.mit.edu dur. > server WHEATIES.AI.MIT.EDU. Default Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 Simdi sorgu tipini degistiriyorum. Ihtiyacimiz olan sunucunun adini bulduk. Bakalim wheaties prep.ai.mit.edu hakkinda ne biliyor? > set q=any > prep.ai.mit.edu. Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp #21 #23 #25 #79 prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = wheaties.ai.mit.edu ai.mit.edu nameserver = grape-nuts.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = life.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu life.ai.mit.edu internet address = 128.52.32.80 alpha-bits.ai.mit.edu internet address = 128.52.32.5 wheaties.ai.mit.edu internet address = 128.52.35.13 wheaties.ai.mit.edu internet address = 128.52.32.13 grape-nuts.ai.mit.edu internet address = 128.52.36.4 grape-nuts.ai.mit.edu internet address = 128.52.32.4 mini-wheats.ai.mit.edu internet address = 128.52.32.11 mini-wheats.ai.mit.edu internet address = 128.52.54.11 mintaka.lcs.mit.edu internet address = 18.26.0.36 "." tan baslayarak bir alt duzeydeki alanlarin ad sunucularini bulduk. Kendi DNS sunucunuzu kullanmis olsaydiniz, named niz bu- tun bu bilgileri saklayacak ve bir sure icin bu sorgulari yeniden yapmaya gerek duymayacakti. Cok az bahsettigimiz fakat en az digerleri kadar onemli bir alan daha var: "in-addr.arpa". O da diger alanlar gibi hiyerarsik bir yapiya sahiptir. Bu alan "internet adresi"nden "ad"a ulasmamizi saglar. Onemli bir nokta: in-addr.arpa alaninda ip'ler tersten yazilirlar. 192.128.52.43 gibi bir adresin adini ogrenmek iste- diginizde named prep.ai.mit.edu orneginde oldugu gibi davranir: arpa. sunucularini bul in-addr.arpa. sunucularini bul 192.in-addr.arpa. sunucularini bul 128.192.in-addr.arpa. sunucularini bul 52.128.192.in-addr.arpa. sunucularini bul 43.52.128.192.in-addr.arpa. kayitlarini bul Zekice di mi? ("evet" deyin). Yalan soyledim. DNS boyle calismaz. Ama neredeyse bu sekilde.. Kendi alanimiz. Simdi kendi alanimizi tanimlayacagiz. Adi linux.bogus olacak ve icinde bu alana ait bilgisayarlarin tanimlari olacak. Tamamen bo- gus bir ad verdim ki diger insanlari rahatsiz etmeyelim. Bu bolume named.boot dosyasina asagidaki satiri yazarak basliyoruz: ------------------------------------------------------------------- primary 0.0.127.in-addr.arpa pz/127.0.0 ------------------------------------------------------------------- Bu dosyada alan adlarinin sonunda "." olmadigina lutfen dikkat ede- lim. Ilk satir pz/127.0.0 dosyasini 0.0.127.in-addr.arpa. yi tanim- layan dosya olarak gosterir. Bir onceki kurulumda bu dosyayi hazir- lamistik: ------------------------------------------------------------------- @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. ------------------------------------------------------------------- Bu dosyada named.boot dosyasindakinin aksine alan adlarinin sonla- rindaki "." larin olmasina lutfen dikkat edelim. Bazilari her alan (zone) dosyasini $ORIGIN direktifiyle baslat- maktan yanadirlar ki bence gereksiz birseydir. Alan dosyasinin orijini (DNS hiyerarsisinde ait oldugu yer) named.boot dosyasinin "domain" sutununda yeralir. Bu durumda: 0.0.127.IN-ADDR.ARPA. IN SOA ... NS "Name server RR" (ad sunucusu kaynak kaydi) dir. DNS e alanin ad sunucusunu soyler. Son olarak PTR kaydi 1 in (1.0.0.127 ye denk gelir) localhost oldugunu soyler. SOA (yetki baslangici) kaydi tum alan dosyalari icin basliktir ve her alan dosyasindaki ilk kayit olmalidir. Kusagin nereden kaynaklandigini (linux.bogus adli bilgisayar), kayitlardan kimin sorumlu oldugunu (hostmaster@linux.bogus), surum numarasini (serial: 1), ve caching only ile ikincil ad sunucusuyla ilgili diger bilgileri tutar. Geri kalan degerler refresh (yenile), retry (yeniden dene), expire (bitis) ve minimum (en az) icin bu NASIL daki saylari kullanabilirsiniz. NS kaydi 0.0.127.in-addr.arpa alanina hangi sunucunu hizmet verdigini gosterir (ns.linux.bogus). PTR kaydi 1.0.0.127.in-ad- dr.arpa nin (127.0.0.1) localhost oldugunu gosterir. Simdi named yi yeniden calistirin (ndc restart) ve test etmek icin nslookup i kullanin: $ nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 localhost un adresini 127.0.0.1 den alabiliyor, iyi. Zorlamayin. Simdi asil isimiz olan linux.bogus alan tanimi icin named.boot a bir "primary" satiri ekleyelim : ________________________________________________________________ primary linux.bogus pz/linux.bogus ________________________________________________________________ !!!!!!!! linux.bogus un sonunda "." olmadigina dikkat edin linux.bogus alan dosyasina tamamen bogus veri yerlestirelim: ________________________________________________________________ ; ; Zone file for linux.bogus ; ; Mandatory minimum for a working domain ; @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 199511301 ; serial, todays date ; + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 3600000 ; expire, seconds 86400 ) ; minimum, seconds NS ns.linux.bogus. NS ns.friend.bogus. MX 10 mail.linux.bogus ; Primary ; Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 ns A 127.0.0.2 mail A 127.0.0.4 ______________________________________________________________________ Bu dosyada yeni bir RR tipiyle karsilasiyoruz: MX. Ya da "mail exchanger" (posta ........). Mail sistemlerine birisi@linux.bo- gus adina posta gonderildiginde postanin hangi bilgisayara verilmesi gerektigini soylerler. Adresten onceki sayi "oncelik" (priority) degeridir. Sayi ne kadar kucuk olursa adres o derece oncelik- lidir. Yani posta mail.linux.bogus a verilemezse mail.friend.bogus denenir $ nslookup > set q=any > linux.bogus Server: localhost Address: 127.0.0.1 linux.bogus origin = linux.bogus mail addr = hostmaster.linux.bogus serial = 199511301 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) minimum ttl = 86400 (1 day) linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 127.0.0.2 mail.linux.bogus internet address = 127.0.0.4 Biraz dikkatli inceleyecek olursaniz bir hata oldugunu farkede- ceksiniz. ------------------------------------------------------------------ linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus ------------------------------------------------------------------ yanlis, dogrusu soyle olmali: ------------------------------------------------------------------- linux.bogus preference = 10, mail exchanger = mail.linux.bogus ------------------------------------------------------------------- Kasten bir yanlis yaptim ki ogrenebilesiniz :). Alan dosyasina baktigimizda goruruz ki: MX 10 mail.linux.bogus ; Primary Mail Exchanger en sonda olmasi gereken "." yazilmamistir. Dogrusu ya ____________________________________________________________________ @ MX 10 mail.linux.bogus. ; Primary Mail Exchanger ____________________________________________________________________ ya da _____________________________________________________________________ @ MX 10 mail ; Primary Mail Exchanger _____________________________________________________________________ seklinde olmalidir. Daha kolay yazildigindan ikincisini tercih ediyorum. Alan dosyasinda alan adi ya "." ile bitirilerek yazilmali ya da hic yazilmamalidir. Tekrar uyariyorum, named.boot dosyasinda alan adlarinin sonunda "." olmamalidir. Bu hatanin kac defa sorun cikarmis oldugunu tahmin bile edemezsiniz. Yeni alan dosyasindaki uyaridan sonra bazi ek bilgilerle son hali: __________________________________________________________________ ; ; Zone file f r linux.bogus ; ; Mandatory minimum for a working domain ; @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 604800 ; expire, seconds 86400 ) ; minimum, seconds NS ns ; Inet Address of name server NS ns.friend.bogus. MX 10 mail ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 ns A 127.0.0.2 mail A 127.0.0.4 ; ; Extras ; @ TXT "Linux.Bogus, your DNS consultants" ns MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 1.2" TXT "RMS" richard CNAME ns www CNAME ns donald A 127.0.0.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 1.2" TXT "DEK" mail MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.0.9" ftp A 127.0.0.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 1.3.59" _________________________________________________________________ Ilk uc "A" kaydini ilgili kayitlarin yanina koymak isteyebilirsi- niz. Bu dosyada birkac yeni RR var: HINFO (Host INFOrmation) nun iki bolumden olusmakta. Birinci bolum makinenin ustundeki donanim ya da MIB ile ilgili ikinci bolum de yazilim ya da isletim sistemi ile ilgilidir. "ns" in MIBi pentium, isletim sistemi de Linux 1.2 dir. TXT kaydi serbest bir kayittir. Istediginiz herhangi bir sey icin kullanabilirsiniz. CNAME (Canonical NAME) ayni makineye birden fazla ad verebilmek icin kullanilir. "www" ve "richard" "ns" icin birer lakaptir. Onemli not: A, MX, CNAME ve SOA kayitlari HICBIR ZAMAN CNAME kay- dina isaret etmemelidir. Sadece A tipi kayitlara isaret et- melidirler. Yani: ________________________________________________________________ foobar CNAME richard ; NO! ________________________________________________________________ yanlistir, dogrusu: _________________________________________________________________ foobar CNAME ns ; Yes! _________________________________________________________________ olmalidir. Dikkat edilmesi gereken baska bir nokta ise CNAME in e-posta adresi olamayacagidir: webmaster@www.linux.bogus gecersiz bir adrestir. E-posta adresi olarak gecerli olabilmesi icin A kaydi olmasi gerekmektedir: __________________________________________________________________ www A 127.0.0.2 __________________________________________________________________ Paul Vixie, CNAME kullanimini tavsiye etmiyor. Bunu kullanmamayi ciddi bir sekilde dusunun. Yeni veritabanini "ndc reload" komutuyla yeniden yukleyin. $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus Tum kayitlari listele. [localhost] linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995 11301 28800 7200 604800 86400) linux.bogus. NS ns.linux.bogus linux.bogus. NS ns.friend.bogus linux.bogus. MX 10 mail.linux.bogus linux.bogus. MX 20 mail.friend.bogus linux.bogus. TXT "Linux.Bogus, your DNS consultants" localhost A 127.0.0.1 mail A 127.0.0.4 mail MX 10 mail.linux.bogus mail MX 20 mail.friend.bogus mail HINFO 386sx Linux 1.0.9 donald A 127.0.0.3 donald MX 10 mail.linux.bogus donald MX 20 mail.friend.bogus donald HINFO i486 Linux 1.2 donald TXT "DEK" www CNAME ns.linux.bogus richard CNAME ns.linux.bogus ftp A 127.0.0.5 ftp MX 10 mail.linux.bogus ftp MX 20 mail.friend.bogus ftp HINFO P6 Linux 1.3.59 ns A 127.0.0.2 ns MX 10 mail.linux.bogus ns MX 20 mail.friend.bogus ns HINFO Pentium Linux 1.2 ns TXT "RMS" linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995 11301 28800 7200 604800 86400) Yeterince iyi, bakalim sadece "www" icin ne diyecek. > set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus canonical name = ns.linux.bogus ns.linux.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 127.0.0.2 ve ns.linux.bogus un adresi 127.0.0.2 , iyi gorunuyor. Winding Down Elbette bu alan tamamiyle --hayali--, tum adresler de oyle. Gercek bir alan icin asil alan adlarini ve internet adreslerini kullanin. Bunu tamamladiktan sonra bir reverse lookup alan dosyasi gerekiyor. 127.0.0 dosyasina benzeyen bu dosya her makine icin bir PTR RR icerecek. 127.0.0.2 PTR ns.linux.bogus. 127.0.0.3 PTR donald.linux.bogus. 127.0.0.4 PTR mail.linux.bogus. 127.0.0.5 PTR ftp.linux.bogus. (SOA RR i unutmayin) Dosya adi 127.0.0 0.0.127.in-addr.arpa orneginde oldugu gibi tersine cevrilmeli. linux.bogus alaniyla oynamayi bitirdikten sonra named.boot dosyanizdan cikarmayi unutmayin. 4. Firewalls ve diger uhaf yapilandirmalar Soru: Firewall un ardindan nasil DNS kullanirim. Cevap: Birkac ipucu:"forwarders","slave" ve bu NASIL in sonundaki referanslara bakin. Soru: DNS in her defasinda gecerli adreslerden digerini gonder- mesini nasil saglarim?(www.busy.site icin 127.0.0.[2-5] ten biri) Cevap:www.busy.site icin birkac A kaydi tanimlayin ve bind 4.9.3 veya daha yenisini kullanin. Daha eski surumlerde calismayacaktir. 5. Bakim Calisir durumda tutmak. root.cache dosyasini guncel tuttugunuz surece sorun cikmayacak- tir."dig" programini calistirdiginizda kendi sunucunuz icin gerekli root.cache dosyasini olusturacak ciktiyi verecektir. "dig"i tekrar bu root sunuculardan birinin adresiyle calistirin ve yeni cache dosyanizi olusturun. (dig .@e.root-servers.net > root.cache.yeni) cache dosyasini yeniledikten sonra "ndc restart" demeyi unutmayin. named.cache i otomatik olarak guncellemek icin asagidaki scripti de kullanabilirsiniz. Crontab'a koyun ve unutun. Asagidaki script posta sisteminizin calistigini ve hostmaster aliasinin oldugunu varsayar. ___________________________________________________________________ #!/bin/sh # # Update the nameserver cache information file once per month. # This is run automatically by a cron entry. # ( echo "To: hostmaster " echo "From: system " echo "Subject: Automatic update of the named.boot file" echo export PATH=/sbin:/usr/sbin:/bin:/usr/bin: cd /var/named dig . @rs.internic.net >named.cache.new echo "The named.boot file has been updated to contain the following information:" echo cat named.boot.new chown root.root named.cache.new chmod 444 named.cache.new rm -f named.cache.old mv named.cache named.cache.old mv named.cache.new named.cache ndc restart echo echo "The nameserver has been restarted to ensure that the update is complete. " echo "The previous named.cache file is now called /var/named/named.cache.old." ) 2>&1 | /usr/lib/sendmail -t exit 0 ____________________________________________________________________ 6. Dialup baglantilar icin otomatik kurulum Bu bolum herseyi otomatiklestirmek icin ne yaptigimi anlatiyor. Benim sectigim yol sizehic uymayabilir de. Ama bir fikir vermeli. Dialup icin ppp kullaniyorum. Fakat slip in dip i de yaptigim seylerin pek cogunu yapabilmeli. Normalde aga bagli olmadigimda resolv.conf dosyam sadece domain uio.no satirini icerir. Bu cozumleme yordamlarinin bir ad sunucusuna baglanmaya calisip beni bekletmelerini engeller. Fakat aga baglandigimda gercek bir resolv.conf dosyasina ihtiyac duyarim, bu nedenle de iki tane hazir dosya bulunduruyorum: resolv.conf.yerel ve re- solv.conf.bagli . Ikincisi dokumanda anlattigim resolv.conf dosyasina benziyor. Aga baglanmak icin kucuk bir script im var: "ppp-on" _________________________________________________________________ #!/bin/sh echo calling... pppd _________________________________________________________________ pppd nin nasil baglanacagini gosteren bir dosyasi vardir. baglan- ti saglanir saglanmaz pppd "ip-up" adli scripti calistirir: _________________________________________________________________ #!/bin/sh interface="$1" device="$2" speed="$3" myip="$4" upip="$5" ... cp -v /etc/resolv.conf.connected /etc/resolv.conf ... /usr/sbin/named _________________________________________________________________ Named yi burada calistiriyorum. pppd baglantiyi kestiginde pppd "ip-down" adli scripti calistirir. _________________________________________________________________ #!/bin/sh cp /etc/resolv.conf.local /etc/resolv.conf read namedpid >/etc/hosts _________________________________________________________________ satirlarini ip-up a ekliyorum. hosts.ppp: __________________________________________________________________ 127.0.0.1 localhost __________________________________________________________________ echo satiri da bilgisayarim icin verilen ip yi yaziyor. Aga bagli olmadiginzda named calistirmak pek zekice bir davraniz degil bence. Her defasinda aga sorgular gonderip bekleyecek olan named sizi iyice yavaslatacaktir. Eger dialup kullaniyorsaniz baglantiyi her kapatisinizda named yi oldurmeniz gerekmektedir. Bazilari yavas baglantilarda "forwarders" kullanmayi tercih ediy- orlar. Eger internet servis saglayicinizin 1.2.3.4 ve 1.2.3.5 adreslerinde ad sunuculari varsa named.boot dosyasina asagidaki satiri ekleyebilirsiniz: _________________________________________________________________ forwarders 1.2.3.4 1.2.3.5 _________________________________________________________________ Bu sirada named.cache dosyaniz da bos olabilir. Bu bilgisa- yarinizdan kaynaklanacak olan ip trafigini azaltacaktir. Ozellik- le gecirdiginiz trafik uzerinden odeme yaptiginiz zaman onem kazanmaktadir. 7. Daha genis bilgi Dokumanlar ve araclar. DNS & BIND O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. TCP/IP Network Administration, by Craig Hunt from O'Reilly..., ISBN 0-937175-82-X. DNS ve diger pek cok sey icin yararli baska bir kitap: Zen ve motorsiklet bakim sanati. Online dokumanlar: FAQ RFC'ler: RFC 1918 Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, Address Allocation for Private Internets, 02/29/1996. RFC 1912 D. Barr, Common DNS Operational and Configuration Errors, 02/28/1996. RFC 1713 A. Romao, Tools for DNS debugging, 11/03/1994. RFC 1712 C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, DNS Encoding of Geographical Location, 11/01/1994. RFC 1183 R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, New DNS RR Definitions, 10/08/1990. RFC 1035 P. Mockapetris, Domain names - implementation and specification, 11/01/1987. RFC 1034 P. Mockapetris, Domain names - concepts and facilities, 11/01/1987. RFC 1033 M. Lottor, Domain administrators operations guide, 11/01/1987. RFC 1032 M. Stahl, Domain administrators guide, 11/01/1987. RFC 974 C. Partridge, Mail routing and the domain system, 01/01/1986.