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
- 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.
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.