Bu yazımızda Bind dns sunucu üzerinde view yapısını inceliyor olacağız. Bu nedir dediğinizi duyar gibiyim. Bind üzerindeki view yapısı sayesinde dns sunucunuz isim sorgulama sırasında farklı networklere veya hostlara göre farklı ip adreslerini cevap olarak döndürebilir.
Bunun bize nasıl bir faydası olabilir diye düşünüyorsanız hemen bir örnekle açıklamaya çalışayım.
Çok şubeli bir intranet yapınız olduğunu varsayalım ve bu intranet yapısında uygulama sunucunuz veya web sunucunuz bölgelere göre farklı ip adreslerinde hizmet versin istiyorsunuz. Bu sayede izmir bölgesindeki clientler www.cozumpark.com adresine gitmek istediğinde bind dns sunucunuz izmir bölgesi için ayırdığımız web sunucunun ip adresini, istanbul bölgesindeki clientler www.cozumpark.com adresine gitmek istediğinde ise istanbul bölgesi için ayırdığınız web sunucunun ip adresini verecektir. Bu işi load balancer gibi cihazlar ile de yapabiliyoruz fakat bu yöntem ile maliyetsiz ve daha basit bir yapılandırma ile statik olarak gerçekleştirebiliriz.
Veya Active Directory yapınızda kullanıcı profillerinizi clientler yerine nas cihazınızda tutmak istiyorsunuz. Şehirlerarası bağlantılar yavaş olacağı için her bölge için kendi lokalindeki nas cihazını gösterebilirsiniz. Dns tarafında fileserver tanımı her bölge için kendi lokayonundaki nas cihazını gösterecektir böylece.
Bu kadar ön bilgiden sonra işin yapılandırma kısmına geçelim:
Test ortamımda Suse Linux kullanıyorum. Dns sunucu kurulumunu yast içerisinden basit bir şekilde yapabilirsiniz veya rpm paketlerini bulup manuel olarak da kurulum yapabilirsiniz. Debian tabanlı sistemlerde apt-get install named , Redhat tabanlı sistemlerde ise yum install named komutları ile
Dns sunucu kurulumunu yapabiliriz.
Kurulum sonrasında Linux sunucu üzerinde firewall servisinin kapalı olmasına veya sunucuma gelen isteklerde 53 portunun (tcp ve udp ) açık olmasına dikkat ediyorum. Aksi halde dns sunucuma erişimde ve isim çözümleme sırasında sorunlar yaşanabilir.
Bind dns sunucunun yapılandırma dosyası bir çok Linux dağıtımı üzerinde olduğu gibi susede de üzerinde /etc/named.conf şeklindedir. Bu yapılandırma dosyası içerisinde cozumpark.local isminde bölge oluşturuyorum.
zone “cozumpark.local” in {
allow-transfer { any; };
file “master/cozumpark.local”;
type master;
};
Kayıt dosyaları ise /var/lib/named/master/cozumpark.local dosyası içerisinde yer alıyor.
$TTL 2d
@ IN SOA suse. root.suse. (
2015102000 ; serial
3h ; refresh
1h ; retry
1w ; expiry
1d ) ; minimum
cozumpark.local. IN NS suse.cozumpark.local.
suse IN A 10.100.5.250
Bu dns sunucuyu kullanan bir client isim çözümlemek istediğinde hangi lokasyondan gelirse gelsin
suse.cozumpark.local için 10.100.5.250 adresini görüyor.
Şimdi lokasyonlarım için bind dns sunucu üzerinde acl (access list – erişim yetkisi) tanımlarını yapmam gerekiyor.
İstanbul lokasyonumu 10.100.17.0 /24 networku , izmir lokasyonumu da 10.100.19/24 networku olarak tanımlıyorum. Bu tanımlardan sonra dns sunucumun bu lokasyonlardan gelecek istekler için farklı ip adresleri döndürmesini sağlamam gerekiyor.
view “izmir” {
match-clients { izmir; };
zone “cozumpark.local” {
type master;
file “/var/lib/named/master/izmir.cozumpark.local”;
allow-transfer { slaves; };
};
};
view “istanbul” {
match-clients { istanbul; };
zone “cozumpark.local” {
type master;
file “/var/lib/named/master/istanbul.cozumpark.local”;
allow-transfer { slaves; };
};
};
Bu konfigürasyon sonrasında “/var/lib/named/master altında izmir ve İstanbul için ayrı bölge dosyalarımı oluşturmam gerekiyor.
İzmir için :
suse:/var/lib/named/master # cat izmir.cozumpark.local
$TTL 2d
@ IN SOA suse. root.suse. (
2015102000 ; serial
3h ; refresh
1h ; retry
1w ; expiry
1d ) ; minimum
cozumpark.local. IN NS suse.cozumpark.local.
suse IN A 10.100.5.250
www IN A 10.0.0.35
İstanbul için:
suse:/var/lib/named/master # cat istanbul.cozumpark.local
$TTL 2d
@ IN SOA suse. root.suse. (
2015102000 ; serial
3h ; refresh
1h ; retry
1w ; expiry
1d ) ; minimum
cozumpark.local. IN NS suse.cozumpark.local.
suse IN A 10.100.5.250
www IN A 10.0.0.34
bölge dosyalarımı da oluşturduktan sonra konfigürasyonu okuması için bind dns servisini
yetkili kullanıcı ile service named restart komutu ile yeniden başlatıyorum.
İzmir bölgesindeki bir client tarafından ( 10.100.19.0/24 ) ve
İstanbul bölgesindeki bir client tarafından (10.100.17.0/24) testlerimizi yapıp
yaptığımız konfigürasyonun doğru bir şekilde çalışıp çalışmadığını test ediyorum.
İzmir bölgesindeki client :
Bu sorgu için konfigürasyon dosyasında ayarladığımız gibi 10.0.0.35 ip adresini döndürüyor.
İstanbul bölgesindeki client:
Bu sorgu için konfigürasyon dosyasında ayarladığımız gibi 10.0.0.34 ip adresini döndürüyor.
Böylece farklı şubelerimdeki clientler aynı isim sorgusu için farklı sunuculara erişebiliyorlar.
Faydalı olması dileği ile.