DNS NASIL


Nicolai Langfeldt
janl@math.uio.no
v1.1, 30 June 1996

Türkçesi: Onur Volkan HATEM
volkan@compclup.ceng.metu.edu.tr
hatem@ceng.metu.edu.tr

Yasal Açıklamalar:
(C)opyright 1995 Nicolai Langfeldt. Tescil ile uyuşmayan değişiklikler yapmaktan kaçınnız, tescil yazısı ıle birlikte olması şartıyla serbestçe dağıtabilirsiniz.

Legal stuff:
(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.


Nasıl (en kısa sürede) DNS yöneticisi olunur:

Anahtar sözcükler: DNS, bind, named, dialup, ppp, slip, İnternet, domain (alan), name (ad), hosts (...), resolving (çözümleme)

1. Giriş:

Nedir, ne değildir?
DNS (alan adı sistemi), ağ yöneticiliğinin en az anlaşılan alanlarından biridir. Bu "NASIL" bazı şeyleri biraz daha açık hale getirecek. Bu döküman basit bir DNS ad sunucusunun nasıl kurulacağını anlatmaktadır. Daha karmaşık kurulumlar için "Gerçek Dökümanlar"ı okumanız gerekiyor. "Gerçek Dökümanlar"ın neler içerdiğini son kısımda anlatacağım.

Bu dökümanı okumaya başlamadan önce bilgisayarınızın ağ yapılandirmasının (network configuration) tamamlanmış olması gerekmektedir. Yani bilgisayarınızdan dışarıya, dışarıdan bilgisayarınıza her türlü ağ bağlantısının yapılabiliyor olması gerekiyor. Özellikle 127.0.0.1 adresine telnet bağlantısı kurdugunuzda kendi bilgisayarınıza bağlanabiliyor olmalısınız. Buna ek olarak, başlarken, /etc/host.conf /etc/resolv.conf ve /etc/hosts dosyalarının iyi bir şekilde yapılandırılmış olmaları gerekiyor. Bu dosyaların ne yaptıkları ve nasıl yapılandırıldıkları bu dökümanda anlatılmamaktadır. Eger az önce saydığım kurulumlar tamam değilse "NET-2 HOWTO" dökümanını okumanız gerekecek.

Eger SLIP veya PPP kullanıyorsanız onların da calışır durumda olmaları gerekmektedir (Bkz. NASIL PPP).

"Makineniz" dediğimde uzerine DNS kurmaya çalıştığınız bilgisayarı kastediyor olacağım. Ağ yapılandırmanızla ilgili olan diğer bilgisayar(lar)ınızı değil.

"Ad sorguları"nı (name queries) engelleyen bir "firewall" un arkasında olmadığınızı varsayıyorum. Eger bu tür bir yapılandırmanın ardındaysanız "firewall ve diğer özel kurulumlar" bölümünü okumanız gerekiyor.

Ad sunuculugu UNIX'te "named" adı verilen bir programla yapılır. "Named", eşgüdümü İnternet Yazılım Konsorsiyumu için Paul Vixie tarafından yapılan "bind" pakedinin bir parçasıdır. "Named" bir çok Linux dağıtımına dahil edilir ve genellikle "/usr/bin/named" olarak kurulur. Eger "named" niz varsa muhtemelen kullanabiliyor olacaksınız; yoksa derlenmiş "named"yi bir Linux ftp sunucusundan (ftp.metu.edu.tr:/pub/sunsite) ya da kaynak kodunun son sürümünü "ftp.vix.com:/pub/bind" dan alabilirsiniz.

DNS İnternet üzerinde dağıtık bir veri tabanıdır. Nasıl kurduğunuza dikkat edin. Yapacağınız yanlış bir hareket diğer insanları da etkileyecektir. DNS iniz tutarlı ve düzgün olduğu sürece iyi bir hizmet alırsınız.

Bu dökümanda bazı şeyleri basite indirgemek için birtakım varsayımlar yaptım (yarı gerçekler de diyebiliriz). Söylediklerime inanırsanız çalısır durumda bir sisteminiz olacak.

İpucu: Değiştirmenizi isteyeceğim (eger varsa) tüm dosyaların yedeğini alın ki birseyler ters giderse sisteminizi eski, çalışır haline geri getirebilesiniz.

2."caching only" Ad sunucusu:

DNS yapılandırmasında ilk deneme olan bu kısım dialup kullanıcılar için çok kullanışlıdır.

"Cache only" ad sunucusu ad sorgularınızın cevabını bulacak ve bir daha ihtiyacınız olduğunda cevabı hatırlayacaktır.

Oncelikle /etc/named.boot adlı dosyaya ihtiyacınız olacak. "Named" ilk çalıştığında bu dosyayı okur. Şimdilik sadece şunları kapsaması yeterli olacak:


;	nicholais caching ad sunucusu için açılış dosyası
;	
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) satırı named'ye dosyalar için nereye bakması gerektiğini söyler. Gerekli diğer dosyaların yerleşimleri bu dizinin altında olacaktır. Linux Dosya-sistemi Standart'ına göre bu dizin "/var/named" dir. Bence "/local/named" daha uygun bir dizindir ama standartlara uymakta yarar var.

Bu kurulumda cache dosyası olan /var/named/root.cache şunları kapsamalıdır:


 .       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 dünyadaki "root sunucular"ı listeler. Bu liste zamanla degişmektedir ve yeniden düzenlenmesi gerekecektir. Bu dosyayı güncel tutmak için "bakım bölümu"ne bakiniz.

"named.boot" dosyasındaki ikinci satır 'primary' satırıdır. Nasıl kullanıldigini bir sonraki bölümde anlatacagim. Simdilik bu dosyayı "127.0.0" adiyla "pz" altdizinine yerleştirin:


;	/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 adımda aşağıdakine benzeyen bir /etc/resolv.conf dosyası gerekecek:
search alt-alan.sizin-alan.edu sizin-alan.edu
nameserver 127.0.0.1

"search" (ara) satırı bağlanmak isteyeceğiniz adlar için hangi alanlara bakılması gerektigini belirtir. "nameserver" (ad sunucusu) bilgisayarınızın ad sunucusuna ulaşabileceği adresi gösterir. Şu anda bu adres kendi bilgisayarınıza işaret etmektedir. (Not: named bu dosyayı hiçbir zaman okumaz, sadece resolver (çözümleyici) için gereklidir) Bu dosyanın ne yaptığını göstermek için:
Eger bir istemci "foo" adina bakacak olursa adres bulunana kadar sirasıyla


	"foo.alt-alan.sizin-alan.edu" 
	"foo.sizin-alan.edu"
	"foo" 

adları denenecektir.

İstemci"sunsite.unc.edu" adresini arayacak olursa ilk olarak


	"sunsite.unc.edu.alt-alan.sizin-alan.edu"
	"sunsite.unc.edu.sizin-alan.edu"
	"sunsite.unc.edu" 

denenecektir.

Arama suresini uzatacagindan "search" satırına cok sayida alan adi koymak istemeyebilirsiniz.

Asağidaki ornek "alt-alan.sizin-alan.edu" alanına ait olduğunuzu varsayar. Bu durumda bilgisayarınızın adresi "bilgisayarınız.alt-alan.sizin-alan.edu" olacaktır. "search" satırı en üst alan adını kapsamamalıdır (bu durumda TLD -en üst alan- "edu" dur). Eğer başka bir alana ait bilgisayarlara cok sık erişme gereksinimi duyuyorsanız aşagıdaki gibi bir arama satırını /etc/resolv.conf dosyasına ekleyebilirsiniz.


  search alt-alan.sizin-alan.edu. sizin-alan.edu. diğer-alan.com.

Daha sonra "libc" nizin sürümüne bağlı olarak /etc/nsswitch.conf ya da /etc/host.conf dosyasını düzeltmeniz gerekecektir. /etc/nsswitch.conf Değişik veri türlerini hangi dosya ya da veri tabanlarından alacağinizi gösteren uzun bir dosyadır. Genellikle baş kısmında kullanışlı notlar içerir. "hosts:" ile başlayan satırı bulun, ilgili satır şu şekilde olmalı:
hosts:      files dns

Eğer "hosts:" ile başlayan bir satır yoksa ekleyin. Bu satır öncelikle /etc/hosts dosyasına daha sonra dns e bakılması gerektiğini söyler.
/etc/host.conf
Muhtemelen sadece birkaç satır içeriyor olacaktır. "order" ile başlayan satırı bulun ve aşağıdaki gibi olacak şekilde değiştirin:
order hosts,bind

Eger "order" satırı yoksa ekleyin. Bu satır ad çözümleyen yordamlara öncelikle /etc/hosts dosyasına bakılmasını, basarisiz olunmasi halinde ad sunucusuna (sizin resolv.conf dosyanızda 127.0.0.1 olan) bakılmasını soyler. Adi gecen dosyalar resolv(8) man dosyasında anlatilmaktadır (bu dosyayı gormek için "man 8 resolv" komutunu verin)

Named yi çalıştırmak.

"Named"yi çalıştırma zamanı geldi. Eger dialup bağlantı kullanıyorsanız önce bağlantıyı kurun. Daha sonra "ndc start" yazın. Çalışmayacak olursa "/usr/sbin/ndc start" ı deneyin. Şimdi kurulumunuzu test edebilirsiniz. "tail -f /var/adm/messağes" komutunu verdiğinizde (syslog mesaj dosyasına halen yazılmakta olan mesajları gösterir) aşağıdakilere benzer satırlar görmelisiniz:


 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)

Eğer bir hata mesajı görecek olursanız mesajın içinde ilgili dosyanın adını arayın (umarım named.boot ya da named.cache dosyalarından biridir :-) "Named"yi öldürün (kill pid) ve ilgili dosyayı yeniden gözden geçirin.
	$ nslookup
	Default Server:  localhost
        Address:  127.0.0.1

	>

"nslookup" i çalıştırdiktan sonra gordukleriniz yukaridakiler gibiyse hersey yolunda demektir. Baska birsey görecek olursanız su ana kadar yaptıklarınızi gozden gecirmeniz gerekecek. "named.boot" dosyanızı her degistirdiginizde named yi "ndc restart" komutuyla yeniden çalıştırmanız gerekecektir.

Şimdi bir sorgu denemesi yapabilirsiniz. Yakınınızdaki bir bilgisayara bakmayı 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 aramasını ıstedi, daha sonra "root.cache" dosyanızdaki root sunuculardan birine bağlandı ve nereye bakmasi gerektiğini sordu. Sonucu almak için /etc/resolv.conf dosyanızda sıralamış olduğunuz tum alanların taranması gerekeceğinden biraz beklemeniz gerekebilir.

Tekrar deneyecek oursanız:


	> 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) uyarısını aldık. Bu, named nin bu defa dışarıdaki ad sunucularına sormak yerine kendi cep (cache) ine bakıp cevabı burada bulduğu anlamına geliyor. Ancak buradaki bilgi gecerliliğini yitirmiş (eskimiş) olabilir. Bu küçük tehlikeyi hatirlatmak amacıyla yukaridaki uyari mesajini alırız. nslookup tan çıkmak için "exit" komutunu verin.

Eger dialup kullanıcısı ıseniz (ppp, slip) lütfen "dialup bağlantılar üzerine" adlı bölümü okuyun. Burada birtakım öneriler bulacaksınız.

caching named yi nasıl kuracağınızı öğrendiniz, kutlama için bira, süt ya da her neyi seviyorsanız alabilirsiniz :).

3. Basit bir alan

Kendi alanınızi nasıl kurarsınız?

Bu bölüme başlamadan önce DNS'in nasıl çalıştıgına dair bir miktar teorik bilgi vereceğim. Okumanızı öneririm. Eger istemiyorsanız en azından hızlıca bir göz gezdirin. "named.boot" dosyasının neler içermesi gerektiğinden bahsetmeye başladigimda durun.

DNS hiyerarşik bir sistemdir. En üst basamak "." şeklinde yazılır ve "root" denir. "." un altında birkaç TLD (en ust alan) vardır. En ünlüleri ORG, COM, EDU ve NET tir. prep.ai.mit.edu nün adresini bulmak istediğinizde ad sunucunuz EDU alanına hizmet veren bir sunucuya ulaşmak zorunda. Once root.cache dosyasına bakar, "." sunucu EDU alanının ad sunucu listesini verir. Şöyle ki:


	$ nslookup
	Default Server:  localhost
	Address:  127.0.0.1

Bir root sunucunun adresini soralım.
	> server c.root-servers.net.
	Default Server:  c.root-servers.net
	Address:  192.33.4.12

Sorgu tipini NS (ad sunucusu) yapalım.
	> set q=ns

EDU alanını sorgulayalım.
	> edu.

EDU nun ardındaki "." cok önemlidir. Sunucuya root'un (".") hemen altındaki EDU alanını sorguladığımızı söyler ki bu da arama alanını daraltır.
	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 sunucularının EDU alanına hizmet verdiğini gösterir. Simdi mit.edu alanına kimin hizmet verdiğine bakalım:
	>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 sunucuları mit.edu alanına hizmet veriyorlar. Bunlardan w20ns i ai.mit.edu için sorgulayalım:
	 > server W20NS.mit.edu.

Host adlarında küçük/büyük harf ayırımı yokturğ ama bunları yazmak için faremi kullandıgımdan nslookup ın verdiği çıktının aynısını yazıyorum.
	
	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 alanının 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 degiştiriyorum. Ihtiyacımız olan sunucunun adını bulduk. Bakalım wheaties prep.ai.mit.edu hakkında 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 başlayarak bir alt düzeydeki alanların ad sunucularını bulduk. Kendi DNS sunucunuzu kullanmış olsaydınız, named niz bütün bu bilgileri saklayacak ve bir süre için bu sorguları yeniden yapmaya gerek duymayacaktı.

Çok az bahsettigimiz fakat en az diğerleri kadar önemli bir alan daha var: "in-addr.arpa". O da diğer alanlar gibi hiyerarşik bir yapıya sahiptir. Bu alan "internet adresi"nden "ad"a ulaşmamızı sağlar. Önemli bir nokta: in-addr.arpa alanında ip'ler tersten yazılırlar. 192.128.52.43 gibi bir adresin adını öğrenmek istediğinizde named prep.ai.mit.edu örneğinde olduğu gibi davranır:


	arpa.				sunucularını bul
	in-addr.arpa.			sunucularını bul
	192.in-addr.arpa.		sunucularını bul
	128.192.in-addr.arpa. 		sunucularını bul
	52.128.192.in-addr.arpa.	sunucularını bul
	43.52.128.192.in-addr.arpa.	kayıtlarını  bul

Zekice di mi? ("evet" deyin).

Yalan söyledim. DNS böyle çalışmaz. Ama neredeyse bu şekilde..

Kendi alanımız.

Şimdi kendi alanımızı tanımlayacagız. Adı linux.bogus olacak ve içinde bu alana ait bilgisayarların tanımları olacak. Tamamen -hayali- bir ad verdim ki diğer insanları rahatsiz etmeyelim.

Bu bölüme named.boot dosyasına aşağıdaki satırı yazarak başlıyoruz:


primary 	0.0.127.in-addr.arpa	pz/127.0.0

Bu dosyada alan adlarının sonunda "." olmadıgına lütfen dikkat edelim. İlk satır pz/127.0.0 dosyasını 0.0.127.in-addr.arpa. yı tanımlayan dosya olarak gösterir. Bir önceki kurulumda bu dosyayı hazırlamıştık:
@               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 dosyasındakinin aksine alan adlarının sonlarındaki "." ların olmasına lütfen dikkat edelim.

Bazıları her alan (zone) dosyasını $ORIGIN direktifiyle başlatmaktan yanadırlar ki bence gereksiz birşeydir. Alan dosyasının orijini (DNS hiyerarsisinde ait oldugu yer) named.boot dosyasının "domain" sütununda yeralır. Bu durumda:


	 0.0.127.IN-ADDR.ARPA. IN      SOA ...

NS "Name server RR" (ad sunucusu kaynak kaydı) dır. DNS e alanın ad sunucusunu söyler. Son olarak PTR kaydı 1 in (1.0.0.127 ye denk gelir) localhost olduğunu söyler.

SOA (yetki başlangıcı) kaydı tüm alan dosyaları ıçin başlıktır ve her alan dosyasındaki ilk kayıt olmalıdır. Alanın nereden kaynaklandığını (linux.bogus adlı bilgisayar), kayıtlardan kimin sorumlu olduğunu (hostmaster@linux.bogus), sürüm numarasını (serial: 1), ve caching only ile ikincil ad sunucusuyla ilgili diğer bilgileri tutar. Geri kalan değerler refresh (yenile), retry (yeniden dene), expire (bitis) ve minimum (en az) için bu NASIL daki sayıları kullanabilirsiniz.

NS kaydı 0.0.127.in-addr.arpa alanına hangi sunucunun hizmet verdiğini gösterir (ns.linux.bogus). PTR kaydi 1.0.0.127.in-addr.arpa nın (127.0.0.1) localhost olduğunu gösterir.

Şimdi named yi yeniden çalıştırın (ndc restart) ve test etmek için nslookup ı kullanın:


	$ 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. Zorlamayın. Simdi asıl işimiz olan linux.bogus alan tanımı ıçin named.boot a bir "primary" satırı ekleyelim :
primary               linux.bogus                     pz/linux.bogus

!!!!!!!! linux.bogus un sonunda "." olmadigina dikkat edin linux.bogus alan dosyasına tamamen -hayali- veri yerleştirelim:
;
; 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 ..........). Posta sistemlerine birisi@linux.bogus adina posta gonderildiginde postanın hangi bilgisayara verilmesi gerektiğini söylerler. Adresten önceki sayi "öncelik" (priority) değeridir. Sayı ne kadar küçük olursa adres o derece önceliklidir. Yani posta, mail.linux.bogus a verilemezse mail.friend.bogus denenir Named yi yeniden başlatın ve nslookup la test edin:
	$ 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 olursanız bir hata olduğunu farkedeceksiniz.
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

yanlış, doğrusu şöyle olmalı:
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus

Kasten bir yanlış yaptım ki öğrenebilesiniz :). Alan dosyasına baktığımızda görürüz ki:

	MX      10 mail.linux.bogus   ; Primary mail Exchanger

en sonda olması gereken "." yazılmamıştır. Dogrusu ya
@               MX      10 mail.linux.bogus.    ; Primary mail Exchanger

ya da
@               MX      10 mail                 ; Primary mail Exchanger

şeklinde olmalıdır. Daha kolay yazıldıgından ikincisini tercih ediyorum. Alan dosyasında alan adi ya "." ile bitirilerek yazılmalı ya da hiç yazılmamalıdır. Tekrar uyarıyorum, named.boot dosyasında alan adlarının sonunda "." olmamalıdır. Bu hatanın kaç defa sorun çıkarmış olduğunu tahmin bile edemezsiniz.

Yeni alan dosyasındaki uyarıdan sonra bazı 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"

İlk üç "A" kaydını ilgili kayıtların yanına koymak isteyebilirsiniz.

Bu dosyada birkaç yeni RR var:

HINFO (Host INFOrmation) nun iki bölümden oluşmakta. Birinci bölüm makinenin üstündeki donanım ya da MIB ile ilgili ikinci bölüm de yazılım ya da isletim sistemi ile ilgilidir. "ns" in MIBi pentium, işletim sistemi de Linux 1.2 dir.

TXT kaydı serbest bir kayıttır. İstediginiz herhangi bir şey için kullanabilirsiniz.

CNAME (Canonical NAME) ayni makineye birden fazla ad verebilmek için kullanılır. "www" ve "richard" "ns" için birer lakaptır.

Onemli not: A, MX, CNAME ve SOA kayıtları HİÇBİR ZAMAN CNAME kaydına işaret etmemelidir. Sadece A tipi kayıtlara işaret etmelidirler. Yani:


  foobar  CNAME   richard                 ; NO!

yanlıştır, doğrusu:
  foobar  CNAME   ns                      ; Yes!

olmalıdır.

Dikkat edilmesi gereken başka bir nokta ise CNAME in e-posta adresi olamayacağıdır: webmaster@www.linux.bogus geçersiz bir adrestir. E-posta adresi olarak geçerli olabilmesi için A kaydı olması gerekmektedir:


 www     A       127.0.0.2

Paul Vixie, CNAME kullanımını tavsiye etmiyor. Bunu kullanmamayı ciddi bir şekilde düşünün.

Yeni veritabanını "ndc reload" komutuyla yeniden yükleyin.


	$ nslookup
       	Default Server:  localhost
	Address:  127.0.0.1
	
	> ls -d linux.bogus

Tüm kayıtları 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" için 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 görünüyor.

Aşağıya Doğru

Elbette bu alan tamamiyle --hayali--, tüm adresler de öyle. Gerçek bir alan için asıl alan adlarını ve internet adreslerini kullanın. Bunu tamamladıktan sonra bir reverse lookup alan dosyası gerekiyor. 127.0.0 dosyasına benzeyen bu dosya her makine için bir PTR RR içerecek.


	
       		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 yi unutmayın)

Dosya adı 127.0.0 0.0.127.in-addr.arpa örneğinde olduğu gibi tersine çevrilmeli.

linux.bogus alanıyla oynamayı bitirdikten sonra named.boot dosyanızdan çıkarmayı unutmayın.

4. Firewall ve diğer özel durumlar

Soru: Firewall un ardından nasıl DNS kullanırım.
Cevap: Birkaç ipucu: "forwarders", "slave" ve bu NASIL ın sonundaki referanslara bakın.
Soru: DNS in her defasında geçerli adreslerden diğerini göndermesini nasıl sağlarım?(www.busy.site için 127.0.0.[2-5] ten biri)
Cevap:www.busy.site için birkaç A kaydı tanımlayın ve bind 4.9.3 veya daha yenisini kullanın. Daha eski sürümlerde çalışmayacaktır.

5. Bakım

Çalısır durumda tutmak.

root.cache dosyasını güncel tuttuğunuz sürece sorun cıkmayacaktır."dig" programını çalıştırdıgınızda kendi sunucunuz için gerekli root.cache dosyasını oluşturacak çıktıyı verecektir. "dig"i tekrar bu root sunuculardan birinin adresiyle çalıştırın ve yeni cache dosyanızı oluşturun. (dig .@e.root-servers.net > root.cache.yeni)

cache dosyasını yeniledikten sonra "ndc restart" demeyi unutmayın.

named.cache i otomatik olarak güncellemek için aşağıdaki scripti de kullanabilirsiniz. Crontab'a koyun ve unutun. Aşagidaki script posta sisteminizin çalıştığını ve hostmaster aliasının olduğunu 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 bağlantılar için otomatik kurulum

Bu bölüm herşeyi otomatikleştirmek için ne yaptığımı anlatıyor. Benim seçtiğim yol size hiç uymayabilir de. Ama bir fikir vermeli. Dialup için ppp kullanıyorum. Fakat slip in dip i de yaptığım şeylerin pek çoğunu yapabilmeli.

Normalde ağa bağlı olmadığımda resolv.conf dosyam sadece


 domain uio.no

satırını içerir.

Bu çözümleme yordamlarının bir ad sunucusuna bağlanmaya çalısıp beni bekletmelerini engeller. Fakat ağa bağlandığımda gerçek bir resolv.conf dosyasına ihtiyaç duyarım, bu nedenle de iki tane hazır dosya bulunduruyorum: resolv.conf.yerel ve resolv.conf.bağlı . İkincisi dökümanda anlattıgım resolv.conf dosyasına benziyor. Ağa bağlanmak için küçük bir script im var: "ppp-on"


#!/bin/sh
echo calling...
pppd

pppd nin nasıl bağlanacağını gösteren bir dosyası vardır. bağlantı sağlanır sağlanmaz pppd "ip-up" adli scripti çalıştırır:
#!/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 çalıştırıyorum. pppd bağlantıyı kestiğinde pppd "ip-down" adli scripti çalıştırır.
#!/bin/sh
cp /etc/resolv.conf.local /etc/resolv.conf
read namedpid /var/run/named.pid
kill $namedpid

irc ve talk gibi programlar cok sayıda varsayımda bulunarak çalışırlar. Bu tür programlar için hosts dosyasını düzeltmeniz gerekmekte. Bunun için de:
cp /etc/hosts.ppp /etc/hosts
echo $myip      roke >>/etc/hosts

satırlarını ip-up a ekliyorum. hosts.ppp:
 127.0.0.1       localhost

echo satırı da bilgisayarım için verilen ip yi yazıyor.

Ağa bağlı olmadığınızda named çalıştırmak pek zekice bir davranış değil bence. Her defasında ağa sorgular gonderip bekleyecek olan named sizi iyice yavaşlatacaktir. Eger dialup kullanıyorsanız bağlantıyı her kapatışınızda named yi öldürmeniz gerekmektedir.

Bazıları yavaş bağlantılarda "forwarders" kullanmayı tercih ediyorlar. Eger internet servis sağlayıcınızın 1.2.3.4 ve 1.2.3.5 adreslerinde ad sunucuları varsa named.boot dosyasına aşağıdaki satırı ekleyebilirsiniz:


 forwarders 1.2.3.4 1.2.3.5

Bu sırada named.cache dosyanız da boş olabilir. Bu bilgisayarınızdan kaynaklanacak olan ip trafiğini azaltacaktır. Özellikle geçirdiğiniz trafik üzerinden ödeme yaptığınız zaman önem kazanmaktadır.

7. Daha geniş bilgi

Dökümanlar ve araçlar.

Online dökümanlar:

RFC'ler: