PDA

Orijinalini görmek için tıklayınız

eXTReMe Tracker
: Giremediğiniz Site Kalmasın (Geniş Bilgi)


SaNsTyUrCeS
04-20-2007, 07:06 PM
Konuya Girmeden Önce Öğrenmeniz Gereken Önemli Bilgiler

Genel Bilgi

Dns Nedir? Nasil Çalışır?

Domain name system (alan adi sistemi) aslinda bir veritabanidir. sistem makine isimlerini IP adreslerine, IP adreslerini ise makine isimlerine cevirir. bunun yanisira alanadi icin gerekli e-posta sunucusu adreslerini ve alanadi sunucu adresleri gibi bilgileri (resource records) saklar.

Dns ustlendigi gorev geregi hizli olmak zorundadir. Bu yuzden sorgulamalar 512 bayttan kucuk ise UDP uzerinden calisacaktir.

Dns sistemi yazarlari dns icin gerekli bilgileri RFC lerde tanimlamislardir. (1034 ve 1035).

Ornegin Sitedeki Linkleri Sadece Üyelerimiz Görebilir.. adresine karsilik gelen IP (IPv4) adresinin 65.19.179.7 olarak bulunmasi islemini dns ler yapar.

Bunun yani sira btturk.net alanadinin MX, NS, A kayitlari da yine dns sunucular tarafindan kayitta tutulmakta ve cevaplanmaktadir.

Internetin IP uzerinden calistigi ve alanadlarinin da ihtiyac oldugu dusunulecek olur ise dns ler herzaman kullanilacaktir.

Kisaca biz web gezginimize Sitedeki Linkleri Sadece Üyelerimiz Görebilir.. adresini yazip bilisim ordumuzun sitesine girmek istedigimizde geri planda sessizce calisip bizi dogru sunucuya yonlendiren sistemdir veya bilgi [at] btturk.net e-posta adresine mail attigimiz zaman btturk.net alanadinin MX kayitlarini bize soyleyerek bizim e-posta sunucumuzun dogru e-posta sunucu ile konusmaya baslamasini saylayan yine dns tir.
__________________________________________________ _______________________________________________

Ekstra(Geniş) Bilgi

DNS Nedir?
Domain Name System [DNS] (Alan Adı Sistemi) dağıtık yapıda bir veritabanıdır. Bu sistem makina isimlerini IPv4 (ya da ipv6) adreslere ya da IPv4 adresleri makina isimlerine çevirmeye yarar. Ayrıca bir alan için gerekli eposta sunucusunun adreslerini ya da alanadı sunucularının hangi IP adreslerinde bulunduğunu daha teknik bir ifade ile RR(Resource Records)'ları tutar. DNS yapısı gereği hızlı olmalıdır. Bu yüzden yapılan sorgulamalar eğer 512 bayttan küçük ise ya da yapılan işlem asıl DNS sunucusu ile yardımcı DNS sunucusu arasında bölge transferi değilse UDP üzerinden yapılacaktır. DNS sisteminin yazarları DNS için gerekli bilgileri diğer Internet araçlarında olduğu gibi RFC'lerde tanımlamışlardır (RFC 1034 ve 1035). Bu belgelere bakarsanız içinde bir kaç kod ve bölge soayalarının nasıl yazılacağını bulursunuz.
BIND'de (Berkeley Internet Name Daemon) yazılırken bu kriterler dikkate alınmıştır. Fakat bu sistemde gereksiz karmaşıklıkta kodlar ve bunun getirdiği güvenlik problemleri vardır. Fakat djbdns bu karmaşadan uzak ve güvenli bir yazılımdır. Bunun sonucu olarakta "two-thumbs-up bir daemon" olmaya bizce hak kazanmıştır. Hatta bizce bind 9.1.X ve ileriki sürümlerinde kullanılan "Dns-sec sistemi" bile bind için bir çözüm olmaktan çok uzaktır. Sonuçta temel yani "daemon Internet"in ilk zamanlarından kalmıştır. Şu an IPv4'te yaşanılan güvenlik sorunları da aynı sebepten oluşmaktadır.
Bu yüzden köklü bir değişim olması gerekliliği savunulmuş ve IPv6 ortaya atılmıştır. Bind içinde benzer model söz konusu olmadıkçca djbdns popüleritesini sürdürecektir. (Haklı bir popülerite !!!).
Genel olarak dns yazılımlarının yaptığı iki vazife vardır. Bind kullananlar eğer çok profesyenel değillerse ya da bu konu ile alakalı kitap okunmamışsa bu iki olguyu karıştırabilmektedirler. Bunlar:
Resolving (Çözümleme): Aranılan bir kaydı bulma işlemi
Mesela Sitedeki Linkleri Sadece Üyelerimiz Görebilir.. adresine karşılık gelen IPv4 adresinin 193.140.1.1 olmasının bulunması. Çözümleme yapan yazılımlar iki çeşit işlem yaparlar; ardışık çözümeme ve ardışık olmayan çözümleme. Sorgularda gönderilen RD (recursion required - ardışık gerekli) bitlerine göre sorgunun türü belirlenir. Ardışık olmayan sorgulara cevap veren sunucular cevap olarak ardışık isim sunucuları verirler.
Sonuç olarak yapılan bir sorgu ardışık ise Sitedeki Linkleri Sadece Üyelerimiz Görebilir.. için doğrudan 193.140.1.1 IP'si ya da "makina bulunamadı" cevabı verilebilir. Fakat ardışık olmayan bir sorguda cevabı bulmak için başka bir isim sunucusunun IP'sini verebilir. Ardışık olmayan sorgular aynı zamanda yinelemeli sorgular olarak daa bilinirler.

Authoritive Nameserving (Yetkili İsim Sunumu)
Bir alan hakkında bilgi bulunduran sunucudur. Mesela yildiz.edu.tr alanının MX, NS, A (Bunlar - Resource Record - Özkaynak Kaydı olarak bilinir) kayıtlarının tutulduğu isim sunucusudur.

Canlı Bir Örnek
Bir sorgu nasıl yapılır. Mesela Sitedeki Linkleri Sadece Üyelerimiz Görebilir.. adresinin IPv4 karşılığı nedir? Bunun için çözümleyici ya da sizin bilgisayarınız Internet'te birkaç yetkili isim sunucusunu gezmek zorundadır. İlk başta " . " sunucularından tr TLD'si için yetkili isim sunucu IP'si bulunur. Bunun IP'si (ki bu IP'nin makina ismi ülkemiz için ns1.metu.edu.tr ya da ns2.metu.edu.tr'dir) alındıktan sonra bu yetkili isim sunucuya "edu.tr." i barındıran yetkili isim sunucu IP'si sorulacak ve bu işlem böylece devam edecektir ve sonuç olarak 193.140.1.1 adresini sizin makinanız ya da /etc/resolv.conf dosyanızda bulunan çözümleyicinin yildiz.edu.tr'nin yetkili isim sunucusundan aldığı bilgilere göre belleğinde belli bir müddet tutacaktır. Bu süreye TTL (time to live - yaşam süresi) denir. Bu süre boyunca çözümleyici gerekli bilgileri belleğinde saklayacaktır. DjbDNS için aksi belirtilmezse bu süre 42 dakikadır. Kurulacak göre bu süre 5 saniye de yapılabilir. (Nitekim birden fazla www sunucunuz var ve bunlar arasında döner turnuva kullanarak yük dengelemesi yapmak istersek bu saniye değeri kullanılacaktır).

Önceden Kurulması Gerekli Yazılımlar
DjbDNS'i kullanmak için önceden kurulması gereken birkaç yazılım vardır. Bunlar yine D.J. Bernstein tarafından yazılmışlardır. Bunlar kullanılması istenen sisteme göre değişir. Genel olarak sistem eğer sadece asıl sunucu olacaksa daemontools kurulması yeterli olacaktır. Daemontools sisteminizde çalışan servisleri gözetleyen bir yazılımdır. Fakat sadece gözetlemekle kalmaz eğer yapılandırma dizininde bulunan bir servis çalışmıyor ise bunları tekrar başlatır. Bu yazılım ile benzer vazifeleri yapan birkaç yazılım daha vardır. Mesela "mon" örnek verilebilir.
Kurulumu:
$ wget daemontools-0.70.tar.gz
$ tar zxvf daemontools-0.70.tar.gz
$ cd daemontools-0.70
# make setup check
# mkdir /service
# svscan /service &

Bundan sonra asıl yazılımımız olan djbdns sisteme kurulur.
$ wget djbdns-1.05.tar.gz
$ tar zxvf djbdns-1.05.tar.gz
$ cd djbdns-1.05
# make setup check

Eğer kurulacak olan sistemde ikinci bir sunucu; yani bir yardımcı sunucu olacaksa bölge transferi gerekecektir. Bunun için gerekli olan yazılımlar Ucspi (tcpserver ) ve axfrdns olacaktır. Bu yazılımlarda üstte anlatıldığı şekilde kurulabilir.

Dnscache Programının Kurulması
Dnscache yukarıda anlatılan yazılımlardan çözümleyici kısmına girmektedir. Yani /etc/resolv.conf dosyasına yazılacak IP şimdi kuracağımız yazılımın çalıştığı bir makinaya ait olmalıdır. Burada kuracağımız dnscache aslında dnscache'in kurulması olası iki çeşidinden birisi olacaktır. Bunlar "harici dnscache" ve "dahili dnscache" olarak adlandırılır. Biz burada Internet'de ya da ağımızda bulunan başka bir makinanın sorgularını işleme yetisine sahip olan "harici dnscache" kuracağız. Eğer evinizden dial-up bağlanan bir kullanıcı iseniz sisteminizde dahili bir dnscache kuracabilir ve /etc/resolv.conf dosyanıza 127.0.0.1 adresini yazabilirsiniz. Dahili denmesinin sebebi 127.0.0.1 arayüzüne kurulması ve dnscache'in kendini o ip'nin 53. portuna bağlamasıdır. Haricinin farkı ise sadece dnscache'in 127.0.0.1'den farklı ve diğer makinaların ulaşabileceği bir IP olmasıdır.
Ek olarak dnscache kurulmadan önce hangi kullanıcı olarak çalışacağı ve hangi kullanıcı olarak günlük kayıtlarının tutulacağı belirtilmelidir. Genel olarak sisteminize giriş yapması ihtimali olmayan (kabuğu /bin/false olan) iki kullanıcı ekleyin. Bunlardan biri dnscache diğeride günlük kayıtlarını hesap olan dnslog olabilir. Bir de programımızın çalışacağı dizin belirlenmelidir. Genel olarak /etc/dnscachex (x = external -> harici) kullanılmaktadır. Şimdi yazılımı kurabiliriz.
Harici dnscache
# dnscache-conf dnscache dnslog /etc/dnscachex 192.168.1.1
# ln -s /etc/dnscachex /service
# echo "192.168.1.1" > /etc/resolv.conf

İlk satırın açılımı:
dnscache-conf çalıştırma-kullanıcısı günlük-kayıt-kullanıcısı ip adresi
şeklindedir. İkinci satır ise dnscache'i açılışta çalıştırmak içindir.
Dahili dnscache
# dnscache-conf dnscache dnslog /etc/dnscache
# ln -s /etc/dnscache /service
# echo "127.0.0.1" > /etc/resolv.conf
# touch /etc/dnscachex/root/ip/193.140.1

Dikkat ederseniz ilk satırda IP belirtmedik. Öntanımlı değeri 127.0.0.1'dir
Öntanımlı olarak dnscache bütün sorguları reddeder. Son satırda 193.140.1 dosyası ile ağ için sorgu yapılmasına izin veriyoruz.
dnscache'in çalışıp çalışmadığını sorgulamak için dnsqr komutu kullanılabilir. Yapılan sorgularda önemli olan satır answer satırıdır.
# dnsqr a yildiz.edu.tr
1 yildiz.edu.tr:
166 bytes, 1+1+3+3 records, response, noerror
query: 1 yildiz.edu.tr
answer: yildiz.edu.tr 30218 A 193.140.1.1 (answer ile başlayan kısım bizim aradığımız cevaptır.}
authority: yildiz.edu.tr 86391 NS ana.cc.yildiz.edu.tr
authority: yildiz.edu.tr 86391 NS ns.ulak.net.tr
authority: yildiz.edu.tr 86391 NS vm4381.ce.yildiz.edu.tr
additional: ana.cc.yildiz.edu.tr 86391 A 193.140.1.1
additional: ns.ulak.net.tr 62760 A 193.140.83.251
additional: vm4381.ce.yildiz.edu.tr 86391 A 193.140.2.1

Artık elimizde çalışan bir çözümleyici var. Ek olarak istersek bellek büyüklüğünü 100MB ram harcayacak şekilde ayarlayabiliriz. Bunun için:
# echo 100000000 > /etc/dnscachex/env/CACHESIZE
# echo 104857600 > /etc/dnscachex/env/DATALIMIT

yapılması gerekir. Tabii bundan sonra svc -t /service/dnscache ile programımızı yeniden başlatmak gerekecektir.
Şimdi sıra alanımız için yetkili isim sunucu olacak olan tiny-dns programını kurmaya geldi.

StaRkoLiK
04-20-2007, 07:09 PM
eyw saoL paylasm içn

CeyPoweR
04-20-2007, 08:50 PM
emeğe saygı

PacMaN
04-20-2007, 08:53 PM
eyw emegıne saglık kardes ugrasmıssın

ozancem
04-20-2007, 08:55 PM
eyw teşekkürler!

kaptan07
02-05-2008, 05:36 PM
bişey anlamadım ama güzeldi genede emeğe saygı:D

oqsiJen
02-05-2008, 06:04 PM
walla copy paste deilse süper paylaşım eline koluna mausene klavyene sağlık...

SanaLVurguN
02-05-2008, 06:19 PM
eline sağlık kardeş saol

HaRdWoRKeR
02-05-2008, 06:33 PM
saol kardeş güzel bilgi

fatalrhymer92
02-06-2008, 01:10 PM
eline sağllıkkk

Shawn
02-10-2008, 09:57 PM
eyw sagol kardes

][Ack.f0rMAT
03-02-2008, 04:04 PM
paylaşım için saol kardeş

cezohan
03-02-2008, 04:09 PM
saol karedeş güzel bilgi

oqsiJen
03-10-2008, 02:56 AM
Saol güzel anlatmışsın