- Öncelikle bind9 hizmetinin kurulacağı sunucunun statik bir IP adresinin olması gerek. Bunun için ağdaki diğer makinelerle aynı subnette bir IP adresi ataması yaptım.
- Ardından repository'lerden bind9'u kurdum.
sudo apt-get install bind9
- Sonra root yetkileriyle /etc/bind/named.conf.local dosyasını açıp içine zone'larımı ekledim (zone, DNS sunucuların alan adı bilgilerini tuttuğu veri yapılarıdır). Örnek olarak example.com alan adını DNS sunucuma eklemek için önce forward lookup zone'u ekledim:
zone "example.com" {
type master; file "/etc/bind/zones/example.com.db"; };
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/rev.0.168.192.in-addr.arpa";
};
- DNS sunucum sadece içerideki example.com alan adından sorumlu olacak. Ona başka alan adı sorguları gelirse bunu kendisi çözümlemeyecek, başka bir DNS server'a soracak. Bu yapıyı /etc/bind/named.conf.options dosyasına forwarder ekleyerek sağladım.
forwarders { 195.175.39.40; };
-
Şimdi sıra geldi 1. adımda belirttiğimiz zone'ların dosyalarını yaratmaya. Zone dosyası, bir bilgisayarın host adıyla IP adresi ilişkisini, zone'ların transfer bilgilerini vs. tutar. Bunun için /etc/bind/zones/example.com.db dosyasını yaratarak (/etc/bind/db.local kopyalanarak da düzenlenebilir) şu satırları girdim (eğer /etc/bind/zones klasörü yoksa bunu da yaratarak). Bu tanım dosyasında geçen, ama neredeyse hiç bir yerde açıklanmayan bir ayrıntı da IN belirteci. Şu kaynağa göre IN, internetin kısaltması ve adres sınıfını belirtiyor. Bunun dışında CS (CSNET), CH (CHAOS) ve HS (Hesiod) sınıfları da var ama artık kullanımda değiller. BIND dosyalarında adres sınıfı belirtilmesi zorunlu değil, yazılmazsa varsayılanımız IN.
example.com. IN SOA ns1.example.com. admin.example.com. ( 2006081401 28800 3600 604800 38400 ) example.com. IN NS ns1.example.com. example.com. IN MX 10 mta.example.com. www IN A 192.168.0.2 mta IN A 192.168.0.3 ns1 IN A 192.168.0.1
@ IN SOA ns1.example.com. admin.example.com. ( 2006081401; 28800; 604800; 604800; 86400 ) IN NS ns1.example.com. 1 IN PTR example.com
-
Şimdi bind9 servisini tekrar başlatarak bu ayarların geçerlilik kazanmasını sağlayabiliriz.
sudo /etc/init.d/bind9 restart
* Starting domain name service... bind9 [fail]
hatasıyla karşılaşırsanız /var/log/daemon.log kayıtlarına bakarak hatanın kaynağını bulabilirsiniz. Genellikle bu kayıtlarda '}' expected gibi bir hata ile karşılaşılır ki bu durumlarda 2. adımdaki named.conf.local dosyasına gidip eksik } parantezini koymak gerekir. - DNS sunucumuz çalışıyor. Peki bizim sorgularımız kurulumunu yaptığımız sunucu üzerinden mi yapılıyor? Henüz değil. Bunun için de /etc/resolv.conf dosyasına herhangi bir DNS sunucunun IP adresini değil, kurulumunu yaptığığımız sunucun IP numarasını yazacağız.
search example.com nameserver 192.168.0.1
veyadig example.com
Bu konuyu araştırırken birşey daha öğrendim. DNS hizmetinin normalde 53 UDP üzerinden çalıştığını biliyordum. Bazen 53 TCP'yi de kullandığını okuduğum oluyordu. Ama hiç TCP'nin DNS tarafından niye kullanıldığını (zone transferi hariç) bilmiyordum. UbuntuGeek.com sitesindeki yazıya göre, DNS sunucuya yapılan sorgunun cevabı 1024 byte'ı geçerse, sunucu UDP üzerinden kısmi bir cevap gönderirmiş. Eğer sorguyu yapan taraf tam cevabı öğrenmek isterse TCP kullanarak sorguyu tekrarlarmış. 1024 byte'ın üzerinde bir sorgu ne zaman gerekir bilmiyorum ama bunu öğrendiğim de iyi oldu.nslookup example.com
http://www.ntchosting.com/dns/server-setup.html
http://www.ubuntugeek.com/dns-server-setup-using-bind-in-ubuntu.html
Hiç yorum yok:
Yorum Gönder