RHEL/CentOS 6.5'te "Bind" Araçlarını Kullanarak Master-Slave DNS Sunucusunu Kurun


Herhangi bir ana makineye ad çözümlemesi için kullanılan Alan Adı Sunucusu (DNS). Ana DNS sunucuları (Birincil Sunucu) orijinal bölge veri işleyicileridir ve Yardımcı DNS sunucusu (İkincil Sunucu) yalnızca aynı bölge bilgilerini kopyalamak için kullanılan bir yedekleme sunucularıdır. ana sunucular. Master Server, bölge veritabanında tanımladığımız her ana bilgisayarın adını çözecek ve UDP protokolünü kullanacaktır, çünkü UDP protokolleri hiçbir zaman onaylama işlemini kullanırken tcp onaylama işlemini kullanmaz. DNS sunucuları da sorgu isteğini en kısa sürede çözüme kavuşturmak için UDP protokollerini kullanır.

DNS Nasıl Çalışır?

DNS'yi anlamak yeni başlayanlar için biraz kafa karıştırıcı olabilir. DNS'nin nasıl çalıştığına dair kısa bir açıklamayı burada bulabilirsiniz.

Diyelim ki herhangi bir siteye erişmemiz gerekirse ne yapacağız? Tarayıcıya www.google.com yazıp enter tuşuna basmanız yeterlidir. Hmm bildiğimiz bu kadar ama gerçek şu ki, DNS bizi sorgularken ne kadar acı çekiyor. Biz www.google.com yazarken sistem www.google.com'u arayacaktır. Ne zaman bir alan adı yazsak, www.google.com adresinin sonunda ad alanının kök sunucusunu aramamızı söyleyen bir . (nokta) bulunur.

Dünya çapında sorguyu çözümlemek için 13 kök sunucu mevcuttur. İlk olarak www.google.com olarak enter tuşuna bastığımızda tarayıcımız, ana ve yardımcı DNS sunucu bilgilerimiz hakkında girişi olan yerel çözümleyicimize bir istek iletecektir. İstenen sorgu hakkında bilgileri yoksa, isteği Üst Düzey etki alanına (TLD) iletirler; eğer TLD, isteği bilmiyorum diyorsa, yetkili sunucu sizin bilgilerinizi biliyor olabilir. isteği yetkili sunuculara iletecektir, burada sadece www.google.com 72.36.15.56 adresi olarak tanımlandı.

Bu arada yetkili sunucu TLD'ye yanıt verecek ve TLD kök sunucuya geçecek ve kök tarayıcıya bilgi sağlayacak, dolayısıyla tarayıcı gelecekte kullanılmak üzere DNS isteğini önbelleğe alacaktır. Böylece bu uzun işlemler milisaniyeler içerisinde çözülecektir. İsteği bilmiyorlarsa NXDOMAIN olarak yanıt vereceklerdir. Yani Zone veritabanında herhangi bir kayıt bulunamadı. Umarım bu DNS'nin nasıl çalıştığını anlamanızı sağlar.

Ayrıca Okuyun: Ubuntu'da DNS Önbellek Sunucusunu Kurun

Test Ortamım

Bu yazı için 2'si sunucu kurulumu için (ana ve bağımlı) ve 1'i istemci için olmak üzere 3 makine kullanıyorum.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
İhtiyaç Paketleri
bind, bind-utils, bind-chroot
Kullanılan Yapılandırma Dosyaları
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Kullanılan Bağlantı Noktası ve Protokoller
53, UDP

Ana DNS Sunucusunu Kur

İlk olarak, kuruluma geçmeden önce Ana DNS Sunucusunun IP adresini, Ana Bilgisayar Adını ve Dağıtım sürümünü doğrulayın.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Yukarıdaki ayarların doğru olduğunu onayladıktan sonra gerekli paketleri kurmanın zamanı geldi.

sudo yum install bind* -y

Bind'i Yükleme ve Yapılandırma

Gerekli paketleri yükledikten sonra, şimdi ana yapılandırmanın 'named.conf' dosyasında bölge dosyalarını tanımlayın.

sudo vim /etc/named.conf

Aşağıda named.conf dosya girişi verilmiştir, yapılandırma dosyasını ihtiyacınıza göre değiştirin.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Yukarıdaki dosyada kullandığımız her konfigürasyonun açıklaması aşağıdadır.

  1. dinleme bağlantı noktası 53 – Bu, DNS'nin mevcut arayüzleri dinlemesi için kullanılır.
  2. Ana DNS – Sorguyu dinlemek için Ana DNS IP adresinizi tanımlayın.
  3. Bağımlı DNS – Ana bilgisayarları Ana Bilgisayardan çözümlemek amacıyla bölge bilgilerimizi senkronize etmek için kullanılan Bağımlı DNS'nizi tanımlayın.
  4. özyineleme hayır – Evet olarak ayarlanırsa, özyinelemeli sorgular sunucunun DDOS saldırısına uğramasına neden olur.
  5. Bölge Adı – Burada tecminlocal.com olarak tanımlanan Bölge adınızı tanımlayın.
  6. master yazın – Bu sistem bir ana sunucu için yapılandırıldığından, yakında çıkacak olan bağımlı sunucu için bu, bağımlı sunucu olacaktır.
  7. tecmintlocal.fwd.zone – Bu dosya, bu bölgenin ana bilgisayar bilgilerini içerir.
  8. hiçbirini güncellemeye izin verme – Hiçbiri ayarlanmazsa. Dinamik DNS (DDNS) kullanmaz.

Ana Bölge Dosyaları Oluşturma

Öncelikle ileriye dönük bölge girişini tanımlayalım. Burada aşağıdaki gibi named.conf dosyasında tanımladığımız isimde bölge dosyalarını oluşturmamız gerekiyor.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

İleri bölge dosyaları oluşturmak için örnek konfigürasyon dosyalarını kullanıyoruz, bunun için örnek konfigürasyon dosyalarını kopyalamamız gerekiyor.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Yapılandırma dosyalarını kopyaladıktan sonra, şimdi bu bölge dosyalarını vim düzenleyiciyi kullanarak düzenleyin.

sudo vim /var/named/tecmintlocal.fwd.zone

Forward Zone dosyasında host bilgilerimizi tanımlamadan önce örnek bölge dosyasına hızlıca bir göz atın.

Bu benim ileri bölge konfigürasyonumdur, aşağıdaki girişi ekleyin ve ihtiyacınıza göre değişiklikler yapın.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

wq! kullanarak dosyayı kaydedin ve çıkın. İleriye doğru aramayı düzenledikten sonra aşağıdaki gibi görünür: Bölge dosyasında uygun bir format elde etmek için SEKME'yi kullanın.

Şimdi geriye doğru arama dosyası oluşturun, geri döngü dosyasının bir kopyasını zaten tecmintlocal.rev.zone adına oluşturduk. Bu nedenle geriye doğru aramamızı yapılandırmak için bu dosyayı kullanıyoruz.

sudo vim /var/named/tecmintlocal.rev.zone

Ters bölge dosyasında ana bilgisayar bilgilerimizi tanımlamadan önce, aşağıda gösterildiği gibi örnek geriye doğru arama dosyasına hızlıca göz atın.

Bu benim ters bölge konfigürasyonumdur, aşağıdaki girişi ekleyin ve ihtiyacınıza göre değişiklikler yapın.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

wq! kullanarak dosyayı kaydedin ve çıkın. Geriye doğru aramayı düzenledikten sonra aşağıdaki gibi görünecektir. Bölge dosyasında uygun bir format elde etmek için SEKME'yi kullanın.

Yapılandırmada herhangi bir hata olup olmadığını kontrol etmeden önce ileriye doğru arama ve geriye doğru arama dosyalarının grup sahipliğini kontrol edin.

sudo ls -l /var/named/

Burada her iki dosyanın da kök kullanıcının mülkiyetinde olduğunu görüyoruz, çünkü örnek dosyalardan kopyasını oluşturduğumuz dosyalar /var/named/ altında mevcuttur. Aşağıdaki komutları kullanarak grubu her iki dosyada da adlandırılmış olarak değiştirin.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Dosyalarda doğru sahipliği ayarladıktan sonra bunları tekrar doğrulayın.

sudo ls -l /var/named/

Şimdi DNS hizmetini başlatmadan önce bölge dosyalarındaki hataları kontrol edin. Önce named.conf dosyasını kontrol edin, ardından diğer bölge dosyalarını kontrol edin.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

Varsayılan olarak iptables çalışıyordu ve DNS sunucumuz localhost ile sınırlıydı, eğer müşteri DNS Sunucumuzdan adı çözümlemek istiyorsa, gelen isteğe izin vermemiz gerekir, bunun için 53 numaralı bağlantı noktası için iptables gelen kuralını eklememiz gerekir.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Şimdi kuralların INPUT zincirine doğru şekilde eklendiğini doğrulayın.

sudo iptables -L INPUT

Daha sonra kuralları kaydedin ve güvenlik duvarını yeniden başlatın.

sudo service iptables save
sudo service iptables restart

Adlandırılmış hizmeti başlatın ve kalıcı hale getirin.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Son olarak, dig ve nslookup araçlarını kullanarak yapılandırılmış Ana DNS bölge dosyalarını (ileri ve geri) test edin.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Serin! bir Ana DNS yapılandırdık, şimdi bir Bağımlı DNS Sunucusu kurmamız gerekiyor. Şimdi Slave sunucu kurulumuna geçelim. Master kurulum olarak bu çok fazla zaman almayacaktır.

Slave DNS Sunucusunu Kur

Slave makinede de Master'da gösterilen bağlama paketlerinin aynısını kurmamız gerekiyor, o yüzden aşağıdaki komutu kullanarak yükleyelim.

sudo yum install bind* -y

Bölge veritabanımız ve bağlantı noktası dinlememiz için 'named.conf' dosyasını açın ve düzenleyin.

sudo vim /etc/named.conf

Gereksinimlerinize göre gösterildiği gibi değişiklikler yapın.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

DNS hizmetini kullanarak başlatın.

sudo service named start

Bağlama hizmetini yeniden başlattıktan sonra, allow-transfer işlemimiz bölge bilgilerini aşağıdaki resimde gösterildiği gibi ana sunucudan kopyalayacağından bölge bilgilerini ayrı ayrı tanımlamamız gerekmez.

sudo ls -l /var/named/slaves

Cat komutunu kullanarak bölge bilgisini doğrulayın.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

Daha sonra, gelen bağlantıya izin vermek için iptables'ta 53 DNS bağlantı noktasını açın.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

İptables kurallarını kaydedin ve iptables hizmetini yeniden başlatın.

sudo service iptables save
sudo service iptables restart

Hizmeti sistem önyüklemesinde kalıcı hale getirin.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

Bu kadar!. Şimdi istemci makinelerimizi yapılandırma ve ana bilgisayar adını kontrol etme zamanı.

İstemci Makinesini Yapılandır

İstemci tarafında, bir ana bilgisayar adı atamak için ağ ayarlarında Birincil (192.168.0.200) ve İkincil DNS (192.168.0.201) girişini atamamız gerekir. Bunun için setup komutunu çalıştırarak tüm bu girişleri resimdeki gibi tanımlayın.

setup

Aksi takdirde, '/etc/reslov.conf' dosyasını düzenleyin ve aşağıdaki girişleri ekleyin.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Şimdi ip, ana bilgisayar adı ve ad sunucusu aramasını doğrulayın.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Şimdi ileri ve Ters DNS aramasını kullanarak kontrol edin.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Kazma Çıktısını Anlamak:

  1. Başlık – Bu, sorduğumuz her şeyi ve sonucun nasıl olduğunu belirtir.
  2. Durum – Durum HATA YOK idi; bu, tarafımızdan gönderilen sorgu isteğinin herhangi bir HATA olmadan başarılı olduğu anlamına gelir.
  3. Soru – Tarafımızca yapılan sorgu, burada benim sorgum masterdns.tecmintlocal.com idi.
  4. Yanıt – Mevcut bilgi varsa Sorgu isteği çözümlenir.
  5. Yetki – Alan adı ve bölge için ad sunucularının yanıtı.
  6. Ek – Ana makine adı ve IP adresi gibi ad sunucularıyla ilgili ek bilgiler.
  7. Sorgu süresi – Yukarıdaki sunuculardaki adların çözümlenmesinin ne kadar sürdüğü.

Son olarak düğümümüzü kontrol edin ve bir ping yapın.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Sonunda kurulum tamamlandı, burada hem Birincil (Ana) hem de İkincil (İkincil) DNS sunucusunu başarıyla yapılandırdık, herkesin sorunsuz kurulum yaptığını umuyoruz, kurulum sırasında herhangi bir sorunla karşılaşırsanız yorum bırakmaktan çekinmeyin.