DNS NASIL

v1.1, 30 June 1996

Nicolai Langfeldt
janl@math.uio.no

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

Kaynak:
http://ekitap.kolayweb.com/
İlker Fıçıcılar
filker2000@yahoo.com

http://www.linux.org.tr/

TR-LDP

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)


DNS NASIL

İçindekiler:

1. Giriş:
2. "caching only" Ad sunucusu:
3. Basit bir alan
4. Firewall ve diğer özel durumlar
5. Bakım
6. Dialup bağlantılar için otomatik kurulum
7. Daha geniş bilgi


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ıldigin
i bir sonraki bölümde anlatacagim. Simdilik bu dosyayı "127.0.0" adiyla "pz" al
tdizinine 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ın
a 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.linu
x.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 <hostmaster>"
echo "From: system <root>"
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.


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 diğer pek çok sey için yararlı başka bir kitap:
Zen ve motorsiklet bakım sanatı.


Online dökümanlar:

http://www.dns.net/dnsrd/
http://www.vix.com/isc/bind.html


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.