| Debian Gnu/Linux ile DjbDns Kurulumu ve Yapılandırılması
Giriş : Belgede yazılanların uygulanıp uygulanmaması tamamen uygulayan kişinin sorumluluğundadır. Belgede bahsedilenlerin uygulanması sonucu ortaya çıkabilecek hertürlü zarardan yazar sorumlu tutulamaz. Belge GNU Özgür Belgeleme Lisansının http://www.gnu.org/copyleft/fdl.html adresinde yer alan -son sürümdeki- lisans içeriğine bağlı kalmak koşulu ile aynen yada kısmen dağıtılabilir, yayınlanabilir. Bu belgenin son sürümüne; http://www.serdaraytekin.com/docs/os/debian/debian-djbdns.html adresinden ulaşabilirsiniz. Belgede tinydns ve dnscache kurulumu, yapılandırılması ana hatlarıyla debian'a özel izah edilmeye çalışılacaktır. Djbdns hakkında çok detaylı ve djbdns ile ilgili tüm konuları ele alan bilgi içermez (en azından şu anki sürümü itibari ile). Detaylı bilgilerin bulunduğu adresler belgenin sonunda verilmiştir. Daemontools Kurulumu :
ile daemontools paketinin kaynak kodları sisteme indirilir.
sorularını "enter" ile geçiniz. Bunlardan sonra herhangibir yama uygulayacaksak yapmamız gerekeni belirtip bekliyor olacak.
İlave bir yama uygulamayacağımız için son kısımıda enter ile geçip derleme işlemine başlamasını sağlıyoruz.
Yukarıdakine
benzer ifadelere ulaşmışsanız (özelliklede "It seems that all went
ok" demişse) şu ana kadarki işlemler başarılı demektir. Bu kısımda
/tm/demontools altında derleme sırasında oluşan ve "build-daemontools"
ile indirdiğimiz kaynak kodlarından artık ihtiyaçımız olmayanları temizlemek
isteyip istemediğimizi soruyor. Evet dersek Enter ile temizlemesini söylüyor ve devam ediyoruz. Şimdi ;
Oluşmuş olan daemontools_0.76-9_i386.deb paketini kurmak isteyip istemediğimizi soruyor, burada enter ile kurmasını isteyip devam ediyoruz.
Sorusuna "Evet" dersek yukarıdaki "daemontools" paketini sisteme yükleyebilmemizi sağlayan, bir nevi aracılık yapan "daemontools-installer" paketini sistemden temizler. Bu kısmı "enter" ile "hayır" diyerekde geçebilirsiniz. Her iki seçimde sistemin çalışmasına etki etmez. Djbndns Kurulumu : Djbdns içinde benzer işlemleri yapacağız.
Enter ile devam ediyoruz, derleme işlemi bitince "It seems that all went ok" görmüşseniz derleme işi tamam demektir.
sorusuna da "enter" ile onay vererek devam ediniz. "djbdns has been installed." ifadesini görmüşşeniz kurulum işleminiz başarılı demektir.
Sorusuna "enter" ile yanıt verebileceğiniz gibi "evet" diyede yanıt verebilirsiniz. Evet derseniz djbdns'in kurulumasında aracılık eden "djbdns-installer" paketini sistemden kaldırmış olacak. Her iki durumda sistemin düzgün çalışmasına engel değil. Djbdns'in Yapılandırılması : Bu kısımda en önemli nokta, tinydns'in hangi arabirimi (hangi ip adresini) dinlemesini istiyorsak o ip adresini dinlemesini sağlayacak şekilde aşağıdaki gibi yapılandırıyoruz.
Sizin sisteminizdeki ip dışarıya bakan ip adresiniz a.b.c.d olsun. Bu durumda yukarıdaki yapılandırma
şeklinde olacaktır. Burada a.b.c.d ip adresinin 53/udp portunun tinydns tarafından dinlenmesini sağlamış olduk.
ile /service için bağlantı yapıyoruz.
ilede tinydns'i restart edebiliriz. Dnscache'in Yapılandırılması : Burada da internal dnscache ve external dnscache diye iki farklı yapı söz konusu. Öncelikle dnscache ile genel olarak ifade eden yapıyı izah etmeye çalışalım. Dnscache istediğimiz adresin ip'sine ulaşmamızı sağlayan bir çözümleyicidir (recursive resolver). Daha açık bir ifade ile /etc/resolv.conf da nameserver olarak bizim dns sunuzumuzu kullanabilmemizi sağlar. Internal dnscache, dns'in sadece kendi makinemizin sorgularına cevap vermesi yani /etc/resolv.conf içerisinde 127.0.0.1 ipsini belirterek dns sorgularının bizim dns sunucumuz üzerinden yapılmasını sağlamaktır. External dnscache ise farklı makinelerin bizim dns sunucumuzu kullanarak ip çözümlemesi yapabilmesine izin vermemizi sağlar. Internal Dnscache : Şayet bir ağınız var ve o ağdaki tüm makinelerin sizin dns sunucunuzu kullanarak sorgulama yapmasını istiyorsanız, external dnscache kısmına göz atın. Sadece kendi yerel makinenizin bu hizmetden faydalanmasını istiyorsanız bu kısımdan devam edin.
ile 127.0.0.1 nolu arabirimin (lo) 53/udp portunun dnscache tarafından dinlenmesi sağlandı. Burada ip adresini belirtmesekde olur zaten varsayılan olarak 127.0.0.1'dir.
Hemen bir test yapalım.
Yukarıdaki testimizde" nslookup" komutunu çalıştırıp, "nameserver 127.0.0.1" ifadesi ile sorguları bizim makinemizdeki dns sunucudan yapmasını istedik. www.google.com sorgusu için "Non-authoritative answer" ile sonuçları döndürdü. "Non-authoritative answer" ifadesi kısaca, sorguladığımız adresin kendi dns sunucumuzda değilde başka bir dns sunucusunda olduğunu (kaydının başka bir dns sunucusunda olduğunu) belirtir diyebiliriz. Evet, yukarıdaki işlemler başarılı ise artık sorgulamalar için /etc/resolv.conf içerisinde;
ifadesini kullanabiliriz. /etc/resolv.conf içerisinde yukarıdaki şekilde kaydı girdikten sonra nsloolup yerine dig ilede sorgulama yapabiliriz;
External Dnscache : Diyelimki bir ağımız var, ve o ağdaki makinelerin hepsinin bizim dns sunucumuzu kullanarak sorgulama yapmalarını istiyoruz. Bu durumda ihtiyacımız olan şey external dnscache.
Burada 192.168.0.1 nolu ip adresinin 53/udp portunun dnscache tarafından dinlenmesini sağladık. Burada kullanacağımız ip adresinin yukarıdaki yapılandırmalarda kullanılmamış olmasına dikkat ediniz. Her biri farklı ip adreslerini dinleyecek şekilde ayarlanmalıdır. /etc/dnscachex ifadesindeki "x" 'i externalı temsil etmesi açısından kullandık. Şayet makinenizde kullanabileceğiniz yeterli ip adresi olmazsa "ip aliasing" yöntemi ile arabiriminizin ip adresini çoğaltabilirsiniz.
gibi ip-aliasing yapmak mümkün olur. Bu durumda eth0 arabirimine ilave olarak ikinci bir ip daha verilmiş olacaktır. External dnscache deki önemli noktalardan biriside dns sunucumuzdan sorgulama yapabilmesini istediğimiz ip adresi veya ip adreslerini (belirli bir aralık da olabilir) belirtmemizin gerekliliğidir. Şayet herhangibir ip adresi belirtmezsek varsayılan olarak tüm ip adresleri dns sunucumuzdan hizmet alamayacak şekilde ayarlıdır. 192.168.0.x 'li ağımızın bu dns sunucudan hizmet alabilmesini sağlayalım.
NOT : Şayet yukarıda internal dnscache kurmuş ve daha sonra bunu external dnscache'e çevirmek istiyorsanız, yukarıdaki konfigurasyon üzerinden devam edebilirsiniz. Bunun için;
ile daha önce bu dosyada 127.0.0.1 olarak belirtmiş olduğunuz ip adresini 192.168.0.1 gibi (bu dns sunucuya ulaşılmasını sağlayacak ip adresidir. Diğer bir deyişle, ağdaki makinelerin dns ayarlarında belirtmesini istediğiniz ip budur. Bu ip sizin herhangibir arabiriminizde olmalıdır.) bir ip adresine çevirebilirsiniz. Bu durumda,
ile işlemleri tamamlayabilirsiniz. Bu durumda /etc/resolv.conf içerisinde de "/etc/dnscache/env/IP" dosyasında belirttiğiniz ip adresini kullanmanız gerekecek. Test için yine yukarıdakine benzer şekilde nslookup veya dig'i kullanabilirsiniz. Tinydns Yapılandırılması : Bu kısımda da dns sunucumuzda kaydını bulunduracağımız domainlerin kayıtlarının nasıl girilmesi gerektiğine bakacağız. Domain kayıtları "/etc/tinydns/root/" içerisindeki "data" dosyasında yer alır. Domain kayıtlarını elle bu dosyaya uygun formatta girmek mümkün olduğu gibi, add-ns , add-host, add-mx gibi hazır betikler ile kayıtların düzgün olarak girilebilmesini sağlamak mümkün. Djbdns'deki en önemli özelliklerden birisi, konfigurasyon dosyasının (/etc/tinydns/root/data) çok katı kurallarının olmaksızın, mümkün olduğunca esnek bir yapıda oluşturulabilmesinin sağlanmış olması. Aşağıdaki örneklerle bunu daha net izah etmeye çalışalım. /etc/tinydns/root/data dosyası örnekleri : Örneklerdeki ns1.domain.com ilgili domainin nameserver adını, a.b.c.d de ise ip adresini, e.f.g.h ise domainin barındırlacağı ve mail, ftp sunucularının yer alacağı makinenin ip adresini işaret eder.
Yukarıdaki örnekte example.com, www.example.com, mail.example.com ve ftp.example.com için ilgili kayıtlar girilmiş ayrıca example.com domainin mail alabilmesi için gerekli MX kaydıda (@example.com:a:example.com:86400) girilmiştir.
Yukarıdaki örneklerde 86400 değeri, ttl değeridir. Yani verilerin ne kadar süre cache'de tutulacağını belirtir. 86400 değeri 1 güne (60*60*24 = 86400 sn) tekabül eder. son örnekdeki ;
satırındaki rakamlar kafanızı karıştırmasın. Bu satırın da formatı şu şekilde :
mname : birincil nameserver (ns1.domain.com) rname : ikinci nameserver (bizdeki kayıtda boş) ser : serial değeri (20041120 gibi , o günün tarihini verebiliriz) ref : tazeleme (refresh) süresi (10000) ret : yeniden deneme (retry) süresi (3600 = 1 saat) exp : yok olma (expire) süresi (604800 = 1 hafta) min : minimum süre (bizdeki kayıtda boş) ttl : cache süresi (86400) timestamp : kayıtda değişiklik yapınca, değiiklik yapılan zamanı belirtebileceğimiz alan (bizdeki kayıtda boş). lo : IN veya EX değerlerini içerir. Yönlendirme amaçlı kullanılır (bizdeki kayıtda boş). Bu satır komple formatı içermek yerine sadece şu şekilde de olabilir;
Yani yukarıdaki formatda yazmak istemediğiz alanları boş geçebilirsiniz. example.com için yine farklı bir kayıt örneği: a.b.c.d nameserver'ın ip adresini, e.f.g.h ise domainin barındırılacağı makinenin ip adresini işaret eder. Bu sefer cache süresi 3 gün olarak belirtilmiştir (259200). Yalnız önemli bir noktaya dikkat çekmekte fayda var, @example.com:a:example.com:259200 satırında, example.com için maillerin yine example.com makinesine gönderilmesini istiyoruz, bu satırın hemen üstündeki kayıtda, +example.com:e.f.g.h:259200 ile example.com domainin e.f.g.h adresine sahip olduğunu belirtmiştik. Bu durumda example.com için göndereceğimiz mailler e.f.g.h adresine gidecektir. Bu durumda e.f.g.h adresinde example.com için gelen mailleri alan bir mail sunucu olmalı tabiki. Aynı şekilde ftp sunucusunda e.f.g.h adresinde olduğunu belirttik.
yukarıdaki örnekleri, yapının ne kadar esnek ve kullanışlı oldunu göstermek için verdim. Şayet kafa karıştırıcı olmuş ise son olarak biraz daha somut (gerçi ip adresi olarak 192.168. li adreslerden örnek vereceğim ama) bir örnekle bu kısımdaki ayarları noktalayalım. Senaryo : Yine example.com domaini için dns kayıtlarını gireceğiz. İsim sunucu (nameserver) ip adresi 192.168.0.1 (dns kaydının tutulduğu makinenin ip adreside denilebilir) olsun. www.example.com, mail.example.com ve ftp.example.com 192.168.0.2 ip adresine sahip makinede barındırılacak olsun ve son olarakda example.com için mail sunucu görevini yapacak makinede 192.168.0.3 ip adresine sahip olsun. Bu durumda aşağıdakine benzer şekilde kaydın girilmesi uygun olur.
Bu işlemler sonucunda /etc/tinydns/root/data dosyası aşağıdaki şekilde olacaktır. Dilerseniz yukarıdaki işlemleri yapmaksızın bu kaydı data dosyasına siz ellede girebilirsiniz.
Önemli Not : Tekrar hatırlatmakta fayda var, gerekli kayıtları girip, data dosyasını kaydettikden sonra değişikliklerin aktif olabilmesi için;
Girdiğiniz kayıtların çalışıp çalışmadığını test etmek için "dnsq" komutunu kullanabilirsiniz. www.example.com kaydı için dns sunucudan sorguya cevap dönüp dönmediğini kontrol etmek için;
Djbdns ile ilgili daha detaylı bilgilere aşağıdaki belgelerden ulaşabilirsiniz.
|