X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar

FreeBSD Caching DNS Server Kurulumu

Kurulum
djbdns freebsd port ağacında bulunmaktadır. Porttan kurulum djbdns'in gereksinim duyduğu daemontools ve uscpi-tcp paketlerini de sisteme yüklemektedir. Dolayısı ile işleri kolaylaştırmak için kurulumu ports'dan yapıyorum:
Yükleme işlemini default seçeneklerle yapmak yeterli olacaktır.

# cd /usr/ports/dns/djbdns
# make install clean
Kurulum bundan ibaret. Şimdi yapılandırma işlemleri.

Yapılandırma
Öncelikli olarak sistemde dnsusers isimli bir grup, dnscache ve dnslog isimli iki tane kullanıcı açıyoruz:
# pw groupadd dnsusers
# pw useradd dnscache -s /bin/nologin
# pw useradd dnslog -s /bin/nologin
# pw groupmod dnsusers -m dnscache,dnslog
Daha sonra da, dnscache loglarının tutulacağı dizini oluşturuyoruz: (normalde bu dizin dnscache servisinin ana dizininde main isimli bir klasorde tutulur ama formal olması açısından /var/log/ dizinini kullanmak daha iyi bir fikirdir.)

# mkdir /var/log/dnscache
Şimdi, dnscache-conf aracı ile dns cache yapılandırmasını gerçekleştiriyoruz. Bu aşamada sunucuya ait IP adresini belirtmek gerekiyor. Sunucumuzun ip'sini 1.2.3.4 olarak düşünürsek dnscache-conf komutu aşağıdaki gibi olacaktır.

# dnscache-conf dnscache dnslog /var/dnscache 1.2.3.4
Bu şekilde, /var/dnscache dizini altında gerekli yapılandırma dosyaları oluşturulacaktır ve dnscache 1.2.3.4 ip adresine bind edilecektir. Yeri geldiği zaman yapılandırma dosyalarıyla ilgili daha fazla bilgi vereceğim.

Şimdi log'lama işlemlerinde/var/log/dnscache dizininin kullanımlası için /var/dnscache/log/run dosyasını editliyoruz:

# vi /var/dnscache/log/run
Dosyayı aşağıda kırmızı ile de işaretlendiği gibi düzenliyoruz:

#!/bin/sh
exec setuidgid dnslog multilog t /var/log/dnscache
Böylece loglama işlemleri için /var/log/dnscache isimli dizin kullanılacaktır.

Şimdi, networkümüzdeki istemcilerin, sunucuya sorgu gönderebilmeleri için ilgili IP networküne izin vereceğiz. Bu işlem, /var/dnscache/root/ip/ dizini altında izin verilecek IP networkü için boş bir dosya oluşturmaktan ibaret.

Örnek olarak local networkümüzün 192.168.12.0/24 olduğunu varsayarsak ilgili dizin altında oluşturulacak dosyanın adı 192.168.12 olacaktır. Şöyle:

# touch /var/dnscache/root/ip/192.168.12
Bu işlemden sonra, gerekli izinleri veriyoruz.

# chown -R dnscache:dnsusers /var/dnscache
# chown -R dnslog:dnsusers /var/log/dnscache
dnscache servisi svscan altında çalışmaktadır; şimdi servisi up edeceğiz.

Öncelikle svscan service dizinini oluşturalım:

# mkdir /var/service/
Sonra, rc.conf dosyasına svscan_enable satırını ekliyoruz:

# echo 'svscan_enable="YES"' >> /etc/rc.conf
Son olarak dnscache servisini svscan'e gösteriyoruz.

# ln -s /var/dnscache /var/service/dnscache
Artık servisi başlatabiliriz:

# /usr/local/etc/rc.d/svscan start
Normal şartlarda şu an dnscache servisi çalışıyor olmalıdır. Kontrol etmek için svstat komutundan yararlanabiliriz.

# svstat /var/service/dnscache
/var/service/dnscache: up (pid 4558) 157 seconds
Evet, dnscache servisi çalışıyor. Şimdi sunucu üzerinde bir sorgulama yapalım.

Ayrıca, dnscache log dosyasını da kontrol edebiliriz. Yukarıdaki sorguyla ilgili çıktılar /var/log/dnscache/current dosyasında aşağıdaki gibi olacaktır.

# tail -f /var/log/dnscache/current
@400000004bc25dba03cb0414 query 2 c0a800e9:d0c7:f6e9 1 google.com.
@400000004bc25dba03d1fd3c tx 0 1 google.com. . c0a80031
@400000004bc25dba097edebc rr c0a80031 217 1 google.com. d1558768
@400000004bc25dba09804a04 rr c0a80031 217 1 google.com. d1558763
@400000004bc25dba098222ac rr c0a80031 217 1 google.com. d155876a
@400000004bc25dba0983053c rr c0a80031 217 1 google.com. d1558769
@400000004bc25dba0983e3e4 rr c0a80031 217 1 google.com. d1558767
@400000004bc25dba0984c28c rr c0a80031 217 1 google.com. d1558793
@400000004bc25dba0986780c stats 2 551 1 0
@400000004bc25dba098ad53c sent 2 124
Aynı sorguyu bir daha yaparsanız bu sefer sonuç cache'den döndürülecek ve log dosyasına aşağıdaki gibi bir ibare düşülecektir.

@400000004bc25ea62d6573cc query 5 c0a800e9:e30c:8fef 1 google.co.uk.
@400000004bc25ea62d6bb55c cached 1 google.co.uk.
@400000004bc25ea62d6bbd2c sent 5 126
Artık bu dns sunucuya gönderilen isteklerin cevapları, ilgili dns sunucularından alınıp cache'leneceklerdir. Daha önceden sorgulanmış alan adlarına ait query'ler için cevaplar bellekten döndürülecektir.

Ancak default dns cache ebatı max 1MB'dir. Dolayısı ile cache size'ı arttırmak mantıklıdır.

Cache Size Değerini Arttırmak
Cache ebatının ne kadar olacağı ile ilgili bilgi, /var/dnscache/env dizininde CACHESIZE ve DATALIMIT dosyalarında tutulur ve bu değer dediğim gibi default 1MB'dir. Örnek olarak cache size'ı 100MB'ye çıkarmak için bahsi geçen dosyaları aşağıdaki gibi yeniden düzenlemek yeterlidir.

Not: Belirlediğiniz değer ramden allocate edilecektir. Bu nedenle bu değeri ram kullanımınıza göre düzenleyin.

# echo 100000000 > /var/service/dnscache/env/CACHESIZE
# echo 104857600 > /var/service/dnscache/env/DATALIMIT
Şimdi değişiklikleri devreye alıyoruz:

# svc -t /var/service/dnscache
Böylece dns cache size değeri 100MB olarak set edildi. Sisteminizin ram kullanımında bu değişimi görebilirsiniz.

Bu yapıda her bir çözümleme işlemi, cache dns sunucunuz tarafından kök ve alt dns sunucularınına istek gönderilerek yapılır. Ancak bu işlem için networkünüzde bulunan diğer bir dns sunucusunu ya da İnternet Servis Sağlayıcınızın kullanımınıza açtığı DNS sunucusunu kullanmak isteyebilirsiniz. Böylece, cache dns sunucunuz tarafından alınan query istekleri, çözümlenmek üzere belirttiğiniz bir başla dns sunucusuna forward edilir ve dönen sonuçlar istemciye iletildikten sonra cache'lenir.

Bu şekilde internete doğru gereksiz trafik oluşturmamış olursunuz ve diğer dns sunucusunun cache'inden yararlanmış olursunuz. Dnscache sunucunuz üzerinde forwardingi etkinleştirmek için aşağıdaki adımları uygulayabilirsiniz.

Forwarding Cache
djbdns'de, kök alan adı sunucularının ip adresleri /var/dnscache/root/servers/@ dosyasında tutulur. Sorgulama işlemleri bu dosyada belirtilen sunuculardan hareketle yapılır. Dolayısı ile bu dosyaya, sorgulama işlemlerinin yönlendirilmesini istediğiniz alan adı sunucusunun ip adresini girebilirsiniz.

Değişikliği yapmadan önce orjinal @ dosyasının bir yedeğini aynı dizine orig_@ ismi ile alalım:

# cp -p /var/dnscache/root/servers/@ /var/dnscache/root/servers/orig_@
Şimdi de örneğin ISP'imize ait olan 2.2.3.3 ip adresine sahip alan adı sunucusunu girelim:

# echo "2.2.3.3" > /var/dnscache/root/servers/@
Son olarak, cache sunucusunu forward only olarak set ediyoruz.

# echo 1 > /var/dnscache/env/FORWARDONLY
ve FORWARDONLY dosyasının owner'ini dnscache kullanıcısı yapalım.

# chown dnscache /var/dnscache/env/FORWARDONLY
Şimdi değişiklikleri devreye alıyoruz.

# svc -t /var/service/dnscache
Böylece, dns cache sunucusunuza gönderilen tüm istekler için çözümlemeler, 2.2.3.3 ip adresli sunucuda yapılacaktır. Bu durumu netstat ya da ngrep gibi araçlarla kontrol edebilirsiniz.

djbdns ile caching name server uygulaması bundan ibaret. Artık, istemcilerinize dns server olarak bu sisteme ait ip adresini gostererek cache'den yararlanmalarını sağlayabilirsiniz.

Detaylı bilgi için aşağıdaki adresten yararlanabilirsiniz.

http://cr.yp.to/djbdns.html

Powered by WISECP
Top