djbdns İsmail YENİGÜL İsmail@EnderUNIX.org EnderUNIX Kurucu Çekirdek Üyesi http://www.enderunix.org -Eskişehir Osman Gazi Üniversitesi 22 Nisan 2005
Ajanda DNS Nedir? DNS Mimarisi dnscache tinydns Bind ve djbdns Karşılaştırması
DNS (Domain Name System) Kolay anlaşılabilir ve kullanılabilir makine ve alan isimleri ile makine IP adresleri arasında çift taraflı dönüşüm sağlar. Hiyerarşik yapıdan oluşan, dağıtık veritabanları kullanılarak çalışır. Genel olarak UDP protokolü üzerinde hizmet verir. DNS hizmetlerini 53 numaralı TCP- UDP portları üzerinden verir.
DNS Protokolü
Internet DNS Yönetim Hiyerarşisi Root Domain üst seviyede olan.com,.net,.org,.tr gibi domain isimlerini barındırır. Root Domain yönetimi INTERNIC tarafından yapılır..
DNS Sorguları
djbdns Nedir? Djbdns tüm DNS işlemleri için gerekli araçlarını içeren bir yazılımdır. Qmail'in yazarı Daniel.J. Bernstein tarafından yazılmıştır. En önemli yazılma sebebi: güvenlik
Kimler Kullanıyor? Lycos pobox.com directnic MyDomain/NamesDirect Dotster Namezero Netfirms EnderUNIX.org ;) Ve Siz?
Djbdns Bileşenleri enleri tinydns: Yetkili DNS sunucusu dnscache: caching DNS sunucusu walldns:ters(reverse) IP kayıtları için rasgele isim üretir. rbldns:ip adresleri tuttan sunucu (RBL gibi) DNS komutları: dnsq,dnsip,dnsname...
Niçin in djbdns? Basit, Güvenilir Güvenli: Güvenli açığı bulana $500 vaad ediliyor.(http://cr.yp.to/djbdns/guarantee.html) Yüksek performanslı dnsache, tinydns,walldns ve rbldns ön tanımlı olarak non-root uid ve chroot olarak çalışır. Tüm kodlar güvenlik ön planda tutularak yazılmıştır.
Niçin in djbdns? devamı- Ayrıştırması kolay yapılandırma dosyası kullanır. Djbdns de 7000 (yönerge), bind9 da 100000 (yüz bin) talimat (instructions) var. Dah az kod! devel/bind-9.3.1# rm fr contrib devel/bind-9.3.1# find. -name "*.[c h]" xargs wc -l $1 67016 total devel/djbdns-1.05# find. -name "*.[c h]" xargs wc -l $1 11731 total devel/bind-9.3.1# find. -name "*.[c h]" xargs du -ch $1 2.3M total devel/djbdns-1.05# find. -name "*.[c h]" xargs du -ch $1 940K total
Niçin in djbdns? devamı- Daha Güvenli!!! devel/bind-9.3.1# more CHANGES --- 9.3.1 released --- 1818. [bug] 'named-checkconf -z'... devel/bind-9.3.1 # devel/bind-9.3.1# grep "\[bug\]" CHANGES more 1818. [bug] 'named-checkconf -z' triggered an INSIST. [RT #13599] 1808. [bug] zone.c:notify_zone() contained a race condition, devel/bind-9.3# devel/bind-9.3.1 # grep "\[bug\]" CHANGES wc l 939 devel/bind-9.3.1 #
dnscache/tinydns Güvenlik sebebiyle yetkili dns sunucu ile (tinydns), caching dns sunucusu (dnscache) bir birinden ayrılmıştır. The BIND company (which has always separated its own f.root-servers.net server from its caches) issued a statement in 2002.12 saying the same thing: Although BIND can provide both functions (authoritative and nonauthoritative) in single instance, ISC recommends always separating these two functions. In other words, you should run one server for your authoritative zones, and another that caches non-authoritative data. Bu yüzden dnscache ve tinydns aynı IP üzerinden çalışmaz.
Djbdns kurulumu Gereksinimler: *daemontools *ucspi-tcp # wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz # gunzip djbdns-1.05.tar.gz # tar -xf djbdns-1.05.tar # cd djbdns-1.05 # make # make setup check
dnscache yapıland landırması Kullanımı: # dnscache-conf acct logacct Dizin ip # dnscache-conf dnscache dnslog /etc/dnscache 192.168.1.1 # ln -s /etc/dnscache /service # sleep 5 # svstat /service/dnscache # touch /etc/dnscache/root/ip/192 /etc/resolv.conf nameserver 192.168.1.1 # dnsip www.enderunix.org 64.90.164.206
dnscache Bind chroot olarak belirtilen kullanıcı adı ve grup haklarıyla çalışır. Belirtilen boyutta cache tutar.(ön tanımlı 1MB) Cache dolduğu zaman eski kayıtları cache den kaldırır. Bu sayede göçmeden sürekli çalışır. Belirli alan adlarına gelen istekleri belirli DNS sunuculara gönderebilir. Ön tanımlı olarak chroot çalışmaz. Bind 9.2 de maxcache-size özelliği geldi. (Ön tanımlı olarak sınırsız!) According to the BIND company, BIND 9 stays within a memory resource limit without crashing. Unfortunately, when the cache fills up, BIND 9 discards new cache entries. Performance drops dramatically. The server begins failing under moderate loads.
tinydns Yetkili DNS sunucusu. Hızlı (Örnek: saniye de 6000 sorgu Pentium III-1000 üzerinde 40% CPU kullanıyor) Güvenilir. UDP 53 portunu dinler. Çifte kayıtlara izin vermez.
tinydns - Bind Veriler cdb veritabanı formatında saklanır. Dosya boyutu 1GB olsa bile anında cevap verir. Veriler her defasında data.cdb veritabanı dosyasından okunur. Yeni dosya yüklenene kadar eski dosyadan cevap verir. (Yeni data.cdb dosyası (350MB, ~300000 domain) Pentium III-550 makinada 1dakikadan az sürede derlendi.) Veriler belleğe yüklenir. Tüm zone dosyaları yüklenene kadar sorgulara cevap vermez.
tinydns yapıland landırması # tinydns-conf tinydns dnslog /etc/tinydns 1.8.7.200 # ln -s /etc/tinydns /service # sleep 5 # svstat /service/tinydns service/tinydns/root/makefile remote: data.cdb rsync -az -e ssh data.cdb 1.8.7.201:/service/tinydns/root/data.cdb data.cdb: data /usr/local/bin/tinydns-data veya remote: data.cdb scp data.cdb 1.8.7.201:/service/tinydns/root/data.cdb.tmp ssh 1.8.7.201 mv /service/tinydns/root/data.cdb.tmp \ /service/tinydns/root/data.cdb data.cdb: data /usr/local/bin/tinydns-data
Kayıt t ekleme betikleri add-ns: NS kaydı ekler. add-mx: MX kaydı ekler. add-host: Host kaydı ekler. add-alias: Alias (CNAME) kaydı ekler. add-childns: Alt alanlar için farklı NS ekler.
A ve CNAME Kaydı Ekleme =fqdn:ip:ttl:timestamp:lo +fqdn:ip:ttl:timestamp:lo # cd /service/tinydns/root #./add-host lion.enderunix.org 1.8.7.4 #./add-alias www.enderunix.org1.8.7.4 #./add-alias web.enderunix.org1.8.7.4 # make Dosya Karşılığı =lion.enderunix.org:1.8.7.4 +www.enderunix.org:1.8.7.4 +web.enderunix.org:1.8.7.4
NS kaydı +fqdn:ip:ttl:timestamp:lo add-ns: NS sunucu kaydı ekler. # cd /service/tinydns/root #./add-ns enderunix.org 1.8.7.200 #./add-ns enderunix.org 1.8.7.201 #./add-ns 7.8.1.in-addr.arpa 1.8.7.200 #./add-ns 7.8.1.in-addr.arpa 1.8.7.201 # make Dosya karşılığı.enderunix.org:1.8.7.200:a:259200.enderunix.org:1.8.7.201:b:259200.7.8.1.in-addr.arpa:1.8.7.200:a:259200.7.8.1.in-addr.arpa:1.8.7.201:b:259200 Aşağıdaki gibi değiştirilebilir..enderunix.org::ns1.enderunix.org:259200.enderunix.org::ns2.enderunix.org:259200 Not: ns1 ve ns2 için A kaydı eklenmelidir.
MX kaydı @fqdn:ip:x:dist:ttl:timestamp:lo # cd /service/tinydns/root #./add-mx enderunix.org 1.8.7.193 # make Dosya Karşılığı @enderunix.org:1.8.7.193:a::86400 Aşağıdaki gibi değiştirilebilir. @enderunix.org::mail.enderunix.org::86400 Öncelik değeri atanabilir: @enderunix.org:0:mail.enderunix.org::86400 @enderunix.org:5:mail2.enderunix.org::86400
Alt alan için i in NS kaydı &fqdn:ip:x:ttl:timestamp:lo # cd /service/tinydns/root #./add-childns people.enderunix.org 1.2.3.144 # make Dosya Karşılığı &people.enderunix.org:1.2.3.144:a
Yıldız z (*) Kaydı +*.sub.enderunix.org:1.2.3.200 = +istanbul.sub.enderunix.org:1.2.3.200 +fuzuli.sub.enderunix.org:1.2.3.200 +qmail.sub.enderunix.org:1.2.3.200 +devel.sub.enderunix.org:1.2.3.200 @*.sub.enderunix.org::mail.enderunix.org = @istanbul.sub.enderunix.org::mail.enderunix.org @fuzuli.sub.enderunix.org::mail.enderunix.org @qmail.sub.enderunix.org::mail.enderunix.org @devel.sub.enderunix.org::mail.enderunix.org
Diğer Kayıtlar Zamana Bağlı DNS cevabı: +www.enderunix.org:1.2.3.4:0:4000000038af1379 +www.enderunix.org:1.2.3.7::4000000038af1379 4000000038af1379 (TAI format) = 2000-02-19 22:04:31 UTC TAI:Temps Atomique International İstemcilere göre DNS cevabı %in:192.168 %ex +jupiter.enderunix.org:192.168.1.2:::in +jupiter.enderunix.org:1.2.3.4:::ex Yük dengeleme +www.enderunix.org:192.168.1.10:5 +www.enderunix.org:192.168.1.11:5 +www.enderunix.org:192.168.1.12:5
Diğer kayıtlar -fqdn:ip:ttl:timestamp:lo: - ifadesi ile geçici olarak kayıt iptal edilir. 'fqdn:s:ttl:timestamp:lo: ile TXT kaydı (s: mesaj) girilir.
Kullanım m Kolaylığı Karşı şılaştırması BIND vs djbdns
Ama Amaç: 1.2.3.4 sunucu üzerinde 1.2.4.* ağı için in cache sunucu tanımlama BIND çözümü: 1. SOA, NS,ve A kayıtlarını içeren bir localhost zone dosyası oluştrulur. 2. SOA, NS ve PTR kayıtlarını içeren bir 0.0.127.in-addr.arpa zone dosyası oluşturulur. 3. Root sunucuların IP adreslerini içeren root.hints dosyası oluşturulur. 4. named.conf dosyası oluşturulur: zone "localhost" in { type master; file "localhost"; }; zone "0.0.127.inaddr.arpa" in { type master; file "0.0.127.in-addr.arpa"; }; zone "." in { type hint; file "root.hints"; }; options { interface-interval 0; listen-on { 1.2.3.4; }; allow-query { 1.2.3/24; }; }; 5. named başlatılır. 6. Günlük (log) dosyasına bakılarak hata olup olmadığı kontrol edilir. djbdns çözümü: 1. Gdnscache ve Gdnslog kullanıcıları oluşturulur. 2. dnscache-conf Gdnscache Gdnslog /etc/dnscache 1.2.3.4 3. ln -s /etc/dnscache /service 4. cd /service/dnscache 5. touch root/ip/1.2.3
Amaç: Ek olarak 1.5.* ağıa ğına da caching dns i i kullanma izni verilecek. BIND çözümü: 1. named.conf dosyası düzenlenir. 2. allow-query bölümüne 1.5/16 eklenir. 3. Named a HUP sinyali gönderilir. 4. Günlük (log) dosyasına bakılarak hata olup olmadığı kontrol edilir. djbdns çözümü: 1. cd /service/dnscache 2. touch root/ip/1.5
Amaç: cache i non-root ve chrooted olarak çalıştırma BIND çözümü: 1. Gbindin hesabı oluşturulur. 2. mkdir /etc/bindin 3. Sistemle ilgili gerekli dosyalar /etc/bindin dizinine kopyalanır. 4. named öldürülür 5. named -u Gbindin -t /etc/bindin komutu ile named çalıştırlır.. 6. Açılış betiğinde gerekli düzenlemeler yapılır. djbdns çözümü: Rahatlayın! djbdns zaten non-root ve chrooted özellikleri ile çalışıyor.
Ama Amaç: cache in kazara öldürülmesinden lmesinden sonra otomatik başlatmas latmasını sağlay layın. BIND çözümü: named prosesini sürekli kontrol edecek, proses çalışmıyorsa çalıştıracak bir betik yazılmalıdır. djbdns çözümü: Rahatlayın!. Djbdns svscan prosesi ile sürekli izlenmektedir. Proses öldürüldüğünde tekrar başlatılır.
Amaç: cache in moon.x.mil alan adına gelen paketleri 10.1.2.5 IP li yerel sunucuya yönlendirilmesi BIND çözümü: named.conf dosyası düzenlenir. forwarding zone: zone "moon.x.mil" in { type forward; forward only; forwarders { 10.1.2.5; }; }; satırları eklenir. named a HUP sinyali gönderilir. Günlük (log) dosyasına bakılarak hata olup olmadığı kontrol edilir. djbdns çözümü: cd /service/dnscache echo 10.1.2.5 > root/servers/moon.x.mil svc -t.
Amaç: IP adresi 1.2.3.4 olan lion.x.mil host kaydı ekleme BIND çözümü: 1. x.mil zone dosyası düzenlenir. 2. lion A 1.2.3.4 kaydı eklenir. 3. SOA kayıtlarındaki seri numarası artırılır. 4. 3.2.1.in-addr.arpa zone dosyası düzenlenir. 5. Add 4 PTR lion.x.mil. 6. SOA kayıtlarındaki seri numarası artırılır. 7. named a HUP sinyali gönderilir. 8. Günlük (log) dosyasına bakılarak hata olup olmadığı kontrol edilir. 9. Oops! lion.x.mil sonuna nokta koymayı unutmadık inşallah! djbdns çözümü: 1. cd /service/tinydns/root 2../add-host lion.x.mil 1.2.3.4 3. make Günlük dosyalarında hata oluştumu oluşmadı mı diye düşünmeye gerek yok. Eğer dosyada herhangi bir hata olsaydı make komutu hata verecekti!
Amaç: Kazara aynı host adının n ve host IP sinin kullanımını engelleme BIND çözümü: zone dosyalarında manual arama yapılması yapılmalıdır.. djbdns çözümü: add-host komutu otomatik olarak bu işi halletmektedir. (bir isim veya IP yi tekrar kullanabilmek için addalias kullanılır)
Amaç: people.x.mil alan adının n DNS sunucusu 1.2.3.144 olarak tanımlama BIND çözümü: 1. x.mil zone dosyası düzenlenir. 2. people NS a.ns.people kaydı eklenir. 3. a.ns.people A 1.2.3.144 kaydı eklenir. 4. SOA seri numarasını değiştirilir. 5. named a HUP sinyali gönderilir. Günlük (log) dosyasına bakılarak hata olup olmadığı kontrol edilir. djbdns çözümü: 1. cd /service/tinydns/root 2../add-childns people.x.mil 1.2.3.144 3. make
Değiştirilmesine izin verilmeyen kodu dağı ğıtamayız! Netscape Navigator yıllarca kaynak kodu görülmeden dağıtıldı!. http://www.blooberry.com/indexdot/history/netscape.htm Jan. 1998:Netscape announces its browser will be free. Also announced: Browser source code will be made available for free on the Internet. Mozilla project begins Red Hat Bernard Rosenkraenzer: qmail and djbdns are not open source, so we aren't going to ship them unless the license changes'' diye belirti fakat daha sonra Netscape will disappear in future releases (2001-04-16)???
Yayınlar nlarımız http://www.acikakademi.com
Yayınlar nlarımız http://www.acikakademi.com
Sorular?
Bağlant lantılarlar http://cr.yp.to/djbdns.html http://www.enderunix.org/docs/djbdns_installation.html http://www.tinydns.org
Teşekk ekkürler!