16 Mayıs 2016

BIND DNS Server Kurulumu ve Ayarları

DNS, IP adresi ve domain ismi arasında dönüşüm yapılmasını sağlayan protokoldür. DNS temelleri ile ilgili “DNS Nedir” isimli makalemizi okuyabilirsiniz. Bu makalenin kapsamı DNS server kurulumu ve konfigürasyonu üzerine olacaktır. Bind name server yazılımı DNS protokolünün uygulamasında en yaygın kullanılan yazılımlardan biridir. Ayrıca açık kaynak kodlu bir uygulamadır. 


Bind kurulumu için ;
# apt-get update
# apt-get install bind9 bind9utils bind9-doc

Komutlarının çalıştırılması yeterlidir. Ayrıca bind9 veya isc.org sitelerinde kaynak kod indirilerek kaynak koddan da derlenebilir. 
Kurulum yapıldıktan sonra DNS server’ın fonksiyonalitesinin (primary,secondary vs.)  belirtilmesi için gerekli konfigürasyonlar yapılmalıdır. Konfigürasyon yapılacak dosyalar /etc/bind/ dizini altındadır. Named.conf dosyası ana konfigürsayon dosyası olmakla birlikte ayarları 3 farklı dosyaya bölerek bu dosyaları dışardan dahil etmiştir. Bu 3 dosya şunlardır ;

Named.conf.options  : ayarların bulunduğu dosya 
Named.conf.local      : zone’ların tanımlandığı dosya 
Named.conf.default-zones: default zone bilgilerini içeren dosya


Primary DNS server Ayarları


Konfigürasyona options dosyası ile başlayacağız. Dosya içerisinde options bloğundan önce Access Control List (ACL) bloğu ekleyerek hangi network veya IP adreslerinden sorgulama yapılmasına izin verileceği belirtilebilir. Aşağıda “trusted” ismi ile ilgili network gösterilmiştir. Artık trusted ismini kullandığımızda burda yazılan network anlaşılacaktır.

Daha sonra options bloğu içinde güncelleme yapmamız gerekir. Directory komutudun altında aşağıda gösterilen satırlar eklenmelidir.



Bu konfigürasyonla sadece izin verdiğimiz networkün sorgu yapması sağlanmış oldu. İç ağ için private DNS server kullanmak istersek bu şekilde dış dünyaya kapatmamız gerekiyor.
Şimdi konfigürasyon dosyasını kaydedip kapatalım. Named.conf dosyası üzerinde yapılan konfigürasyonlarda syntax’ın doğru olmaması durumunda DNS server düzgün çalışmayacaktır. Bu yüzden yapılan değişikliklerden sonra named-checkconf komutu kullanılarak syntax’ın doğruluğu kontrol edilmelidir. Örneğin oluşturduğumuz dosyayı kontrol ettirdiğimde hata almazken dosya içerisine gereksiz bir ‘z’ harfi koyduğum zaman syntax’daki hata tespit edilebiliyor.



Sırada local dosyasını konfigüre ederek DNS Zone’ları tanımlayacağız. Named.conf.local dosyası içersinde  forward ve reverse zone bilgilerini girmemiz gerekir ;



Bu şekilde yönetilecek zone bilgileri tanımlandıktan sonra kaydedilip kapatılır. Eğer bir secondary (slave) server’imiz varsa allow-transfer satırında görüldüğü gibi atanabilir. Şimdilik secondary server oluşturmadığımız için yorum satırı olarak bıraktık. Sırada zone dosyası olarak belirtilen dizinde zone file oluşturulması gereklidir. 


Zone Dosyalarının Oluşturulması


Named.conf.local dosyası içerisinde tanımladığımız zone’lar için dosya yolunu da belirtmiştik. Belirttiğimiz yollarda ilgili zone’lar için zone dosyaları oluşturmamız gerekiyor. Sorgu yapıldığı zaman DNS server bu zone dosyalarının içeriğini inceleyerek cevap döndermektedir. 

# mkdir /etc/bind/zones

Komutuyla /etc/bind dizini altına zones isimli yeni bir klasör oluşturulur. Oluşturacağımız zone dosyalarının içeriğini doldururken /etc/bind/ dizininde bulunan default zone dosyalalarından db.local dosyası temel  taslak olarak alınabilir. 



Burada eklenen bazı önemli noktalara dikkat çekmek gerekirse;

  • SOA kaydı değiştirilerek nameserver ismi ve yönetici maili yazıldı
  • Serial girdisi her güncellemede bir artırılmalıdır.(13 yapıldı)
  • Nameserver kaydı olarak ns1.btrisk.com eklendi
  • Nameserver’ın IP adresi eklendi
  • A kayıtları için girdiler eklendi
Daha Sonra PTR sorguları için reverse zone dosyası oluşturulmalıdır. Yine bu dosyanın da yolu named.conf.local dosyasında belirtilmişti. /etc/bind/zones yolu içine db.192.168.2 dosyası oluşturarak içeriği aşağıdaki gibi doldurulur.



Bu dosya içinse önemli olan noktalar ;
  • SOA girdisi eklendi, nameserver ve mail adresi yazıldı
  • Serial sayısı güncellendi
  • NS kaydı olarak ns1.btrisk.com. yazıldı
  • PTR sorguları için gerekli bilgiler girildi.
Bu dosyaya göre örneğin 192.168.2.240 PTR sorgusu yapıldığı zaman cevap olarak blog.btrisk.com. dönderecektir. Daha sonra Zone dosyalarında syntax hataları yapıp yapmadığımı tespit etmemiz gerekir. Syntax hataları DNS serverin çalışmamasına sebep olacaktır. Bu yüzden servisi yeniden başlatmadan önce syntax hataları kontrol edilmelidir. Zone dosyaları için named-checkzone komutu kullanılacaktır. Hatalı olduğu durumda hatanın sebebini belirtirken, düzgün yazılmış ise OK cevabı dönderiyor.

Her iki zone dosyamız içinde bu kontrolü yaparsak ;




Görüldüğü gibi syntax hatasıyla karşılaşmadık. Komutun kullanımında format yukarıdaki gibidir. Named-checkzone [zone name]  [zone file] şeklinde çalıştırılmıştır.
Artık Servisimizi yeniden başlatabiliriz. 



Daha sonra bind9 servisini yeniden başlattığımızda artık DNS server düzgün birşekilde çalışır hale gelecektir. DNS Sorguları için nslookup, dig ve host komutları kullanılabilir. Dig komutuna adresi yazdığızda bütün türler için sorgu cevaplarını dönderir. Örneğin DNS Server’a btriks.com sorgusunda bulunursak ;



Nslookup aracı ile de reverse sorgu yaparsak;



Server’ın doğru bir şekilde çalıştığını görmüş oluruz.


Secondary DNS server Ayarları


Seconadary/Slave DNS server kurulurken Master Server’a benzer ayarlar yapılır. /etc/bind/ klasörü altındaki konfigürasyon dosyaları güncellenmelidir. Secondary Server’de farklı yapılması gereken ilk yer zone dosyalarını tanımlarken type slave şeklinde tanımlama yapılmalıdır.
Option Dosyası incelenecek olursa ;



Slave Server’da zone dosyalarını “Zone Transfer” yaparak master serverdan alabiliriz. Bunun için master server’da options dosyasına allow-transfer {192.168.2.9;}; satırı eklendi. Ayrıca notify yes; satırı periyodik uyarılar için eklenir. Sadece belirli zone’lar için transfere izin verilmesi isteniliyorsa options dosyası yerine local dosyası içerisinde ilgili zone bloğunda allow-transfer{x.y.z.t} şeklinde yazılabilir. Secondary Server’in local dosyası incelenecek olursa ;



Şimdi iki server’da da bind9 servisini yeniden başlatırsak, ikisininde btrisk.com domaini için yapılan sorgulara cevap verdiği görülecektir.


Zone Transfer


Primary serverdan izin verilen zone’lar için transfer yapabiliyoruz. Yani ilgili zone file’ın içeriği master zone’dan talep edilir.  AXFR sorgusu ile nslookup,dig ve host araçları ile gerçekleştirebiliriz.



Zone transaferi public ortama açmak güvenlik açığıdır dolayısıyla serverinizden herkes zone transfer sorgusu yapmaması gerekir.

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.