Küçük ağlar için DNS-Sunucusu

From Lapis Wiki

Jump to: navigation, search

Konu başlıkları

Giriş

Eğer yerel ağınız internete masquerading sunucu ile çıkıyorsa bağlantı koptuğunda bir bilgisayara bağlanmak için uzun zaman beklemek zorunda kalabilirsiniz.

Bağlanmak istediğiniz IP şu an müsait değil...

Küçük ağlarda bir çok istemci ile beraber tek bir internet bağlantısı (modem, ISDN, DSL vb.) kullanmak oldukça yaygındır. "Diğer işletim sistemleri" bu gibi bir teknolojiyi sunmadan çok zaman önce Linux ismi masquerading (kısmen NAT olarak adlandırılır- Network Address Translation,detaylarda kesinlikle aynı değildir fakat aynı amaca hizmet eder) olan bu sistemi sunuyordu.

Masquerading bir çok Windows vekilinin(proxy) yaptığı gibi sadece istemcilerin www'ye ulaşmasını sağlamaz, aynı zamanda neredeyse her servisi (telnet, ftp, finger,vb.) sevkedebilir. İstemcilere masquearading sunucuyu bir ağ geçidi(gateaway) gibi kullanmaları söylenmelidir. Daha sonra kendi yerel ağı dışarısından olan bilgisayarlara doğru tüm ağ-sorguları, ağ geçidine yönlendirilir. Ağ geçidi bu bu istemcilere resmi bir IP adresi sağlar ve bunu internetteki istenen bilgisayara yönlendirir.

Eğer bir DNS sorgusu başlatmak isterseniz (bu genellikle eğer IP adresi yerine etki alanı(domain) ismi kullanılırsa kendiliğinden yapılır), sorgu /etc/resolv.conf dosyasındaki etki alanı isim sunucusuna adreslenir. Bu sorgu internete masquerading sunucu tarafından yönlendirilir çünkü küçük bir yerel ağ genellikle kendi etki alanı ismine sahip değildir.

Resim:Dnsmasq.jpg

Eğer masquerading sunucusu internete bağlı değilse, istemci bu durumda internette isim sunucusuna ulaşmayı dener. İstemcinin etki alanı sunucusuna bağlanamadığını anlayabilmesi biraz zaman alır; bunun sonucunda bir zaman-aşımı meydana gelir. kul

Bu son derece rahatsız edicidir: servis isim sunucusuna olacak bir sonraki bağlantıya kadar bundan sonraki sorgulara cevap vermeyecektir.

dnsmasq

İşte burada küçük bir program olan dnsmasq sahneye çıkar. Masquerading sunucuya kurulur ve tüm istemcilerden bir isim sunucusu olarak kullanılabilir. Masquerading sunucusu internete bağlı olduğunda, dnsmasq tüm isim sunucusu sorgularını internetteki gerçek bir isim sunucusuna yönlendirir. Eğer Masquerading sunucusu bağlı değilse,dnsmasq bunu anlar; aniden istemciye bir hata mesajı gönderir ve istenilen hostun geçici olarak kullanılmaz olduğunu bildirir. Böylece zaman-aşımı önlenmiş olur.

Aynı zamanda dnsmasq yerel ağlar için kendi başına bir isim sunucu yerine de kullanılabilir. Bir yerel ağda etki alanı ismini kullanarak bir istemcinin başka bir istemciye bağlanması iki farklı yoldan olur. Bunun ilkinde, diğer tüm istemcileri /etc/hosts dosyasında belirtmelisiniz ki bu üçten fazla bilgisayar için gereksiz bir iştir. İkinci yol ise yerel ağda sadece yerel bilgisayarlardan sorumlu kendi isim sunucunuzu kullanmaktır. İkincisinin dezavantajı ise gerçek bir isim sunucunun yapılandırılması ve bakımı oldukça fazla iş gerektirir.

dnsmasq bu problemi mükemmel bir şekilde çözer. Masquerading sunucu her istemcide /etc/resolv.conf dosyası içinde bir (ve tek) DNS bilgisayarı olarak listelenir. /etc/hosts dosyası herhangi bir istemcide yapılandırılmak zorunda değildir.

Bu sadece masquerading sunucuda yapılır. İşte burada /etc/hosts dosyası içinde yerel ağdaki bütün bilgisayarları listelersiniz ve dnsmasq isim sunucu sorgularını yanıtlamak için bu dosyayı kullanır.

Eğer istemcilerden birinin IP adresi değişir veya bir başka istemci ağın yeni bir parçası olursa, değiştirmeniz gereken sadece masquerading sunucudaki /etc/hosts dosyasıdır, böylece diğer tüm istemciler bu IP adresini tanıyacaklardır.

Kurulum

Kurulum çok basittir. Programı http://www.thekelleys.org.uk/dnsmasq/doc.html adresinden indirip ve

tar zxvf dnsmasq-1.xxx-C /tmp/>> cd /tmp/dnsmasq-1.xxx

ile açtıktan sonra (burada biz /tmp dizinini kullandık, siz değiştirebilirsiniz), programı derleyebilirsiniz.

make

Daha sonra, dnsmasq'ı sistem genelli kurmak için

make install

komutu yeterlidir. Veya tüm dizini /usr/local dizini altına kopyalayabilirsiniz.

Daha sonra dnsmasq'ı masquerading sunucuda deneme amaçlı başlatabilirsiniz:

/nerde/bu/dnsmasq

Programın tek çıktısı /var/log/messages dosyasındadır ve şuna benzer:

dnsmasq[1334]: started, version 1.0 cachesize 300

İstemci yapılandırması

Şimdi yeni DNS ayarları istemci bilgisayarlarında yeni duruma göre yapılandırılmalıdır. Öncelikle masquerading sunucu tek DNS sunucu olarak ayarlanmalıdır. Aksi takdirde dnsmasq'ın avantajlarını kullanamayız.

Yapılandırma dosyasını elle düzenleyebilirsiniz. DNS ayarlarını değiştirmek için, tüm DNS sunucuları /etc/resolv.conf'dan silinmeli ve masquerading sunucunun IP aderesi kayıt edilmelidir:


Dosya: /etc/resolv.conf
 
  search mydomainname.org
  nameserver 192.168.0.1
  

İlk satır yerel ağın etki alanı isminin değişmeyecğini gösterir. Masquerading sunucunun IP adresi ikinci satırda listelenir (tabi ki bu sizin sisteminizde farklı olabilir).

Daha sonra /etc/hosts içindeki tüm satırlar silinmeli (ya da işlem dışı bırakılmalı) ve yerel ağın bilgisayar isimleri çözümlenmelidir.


Dosya: /etc/hosts
 
 #
 # hosts         This file describes a number of hostname-to-address
 #               mappings for the TCP/IP subsystem.  It is mostly
 #               used at boot time, when no name servers are running.
 #               On small systems, this file can be used instead of a
 #               "named" name server.
 # Syntax:
 #
 # IP-Address  Full-Qualified-Hostname  Short-Hostname
 #


 127.0.0.1	localhost
 192.168.0.11   hal2000.mydomainname.org 	hal2000


  

localhost ve IP adresi ve istemcinin host ismi için girişler aynen kalabilir.

Deneme

Şimdi yapılandırmayı bir istemci bilgisayarından yapabilirsiniz: nslookup ile yerel ağda bir başka bilgisayar arıyoruz (burda örneğin "paul"):

nslookup paulServer:
masquerade.mydomainname.org
Address:  192.168.0.1
Non-authoritative answer:
Name:    paul.mydomainname.org
Address:  192.168.0.15

İlk blok DNS sunucunun sorgulandığını gösterir. Olması gerektiği gibi, dnsmasq sunucusu gösterilir, bundan sonraki tüm sorgulara o bakacaktır.

İkinci blok DNS sunucunun cevabını ve "paul" isimli bilgisayarın IP adresini gösterir.

Bu isim çözümlemesi bundan sonra masquerading sunucu üzerindeki /etc/hosts dosyası tarafından yapılacaktır. İstemcilerde bulunan /etc/hosts dosyasındaki girişlerin artık bir önemi yoktur.

Eğer DNS sunucusu çalışmıyorsa muhtemelen şöyle bir çıktı alacaksınız:

nslookup paul
*** Can't find server name for address 192.168.0.1: No response from server
*** Default servers are not available

Eğer cevap

nslookup paul
Server:  masquerade.mydomainname.org
Address:  192.168.0.1
*** masquerade.mydomainname.org can't find paul: Non-existent host/domain

ise bu DNS sunucunun çalıştığı fakat aranan bilgisayar isminin bilinmediği anlamına gelir. masquerading sunucudaki /etc/hosts dosyasında uygun bir karşılaştırma bulunamamamış demektir.

Eğer masquerading sunucusu internete açık bir bağlantıya sahipse, aynı zamanda internet bilgisayarlarının IP çözümlemelerini de deneyebilirsiniz. dnsmasq harici bilgisayarların yaptığı tüm sorguları masquerading sunucudaki /etc/resolv.conf dosyasında listelenmiş DNS sunucularına yönlendirecektir.

nslookup www.yahoo.com
Server:  masquerade.mydomainname.org
Address:  192.168.0.1

Güvenli olmayan cevap:

Name:    www2.vip.lng.yahoo.com
Address:  217.12.3.11
Aliases:  www.yahoo.de

Şu an her şey düzgün çalışıyor. Böylece DNS sunucu masquerading sunucunun her başlatıldığında kendiliğinden başlatılması gerekir. Bunun için başlangıç betiğinize (dağıtımınıza göre değişir) şu satırı ekleyin:

/nerede/bu/dnsmasq &

Veya bunu bir betik ile de yapabilirsiniz.


Dosya: /nerde/betik/dizininiz/dnsmasq (örneğin /etc/init.d/dnsmasq)
 
  #! /bin/sh

case "$1" in
    start)
        echo -n "Starting DNSMASQ daemon"
        /usr/local/dnsmasq-1.0/dnsmasq         
        ;;
    stop)
        echo -n "Shutting down DNSMASQ daemon"
        killall dnsmasq 
        ;;
    restart)
        $0 stop && $0 start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0
  

Kendi dağıtımınıza göre betik, dizin değişikliklerini yapmalısınız.

Daha fazla özellik

dnsmasq'ın özellikleri sadece bunlar değildir: Örneğin bir e-posta hub'ı gibi davranıp bağlantı olmadığında gönderilen e-postaları kısa bir süre için tutup, daha sonra masquerading sunucu bağlantıyı edindiğinde bu tutulan e-postaları sahiplerine gönderebilir. Mail programının kullanıcısı bunun hakkında hiçbir şey farketmeyecektir. Bu özelliğin aynısını sendmail yapılandırması ile de yapabilirsiniz. Ancak, bu genelde yöneticileri korkutur zira, hiçkimse sendmail'in büyük yapılandırması altından kalkabileceğine inanmaz.

Daha ileri ve güzel bir özellik ise DHCP sunucusunun yapılandırmasını kendiliğinden kullanmaktır. Bu yerel ağdaki bilgisayarların hem DHCP yapılandırma dosyası hem de /etc/hosts dosyasında listelenmesini engeller.

Hatta DNS önbelleklemesi(caching) dahi desteklenmektedir. DNS sorgularının sonuçları bir süreliğine saklanır ve yapılan aynı sorgu için her seferinde internete çıkmaya gerek kalmaz. Bu yavaş bağlantılarda zaman kazandırır.

Ne yazık ki dnsmasq'ın daha fazla özelliğini detaylarıyla hala anlatabilmiş değiliz.

İnternet sitesi: http://www.thekelleys.org.uk/dnsmasq/doc.html


Bu makalenin aslı ve tercüme edilmemiş halinin bulunduğu adres: http://www.linuxnetmag.com/en/issue7/m7dnsmasq1.html