Centos 8 işletim sistemide BIND kurulumu ve Yapılandırılması (Master ve Secondary)

DNS, Alan Adı Sistemi anlamına gelir, ana bilgisayar adlarını veya URL’leri IP adreslerine çevirir. Örneğin, tarayıcıya www.kadirkozan.com.tr yazarsak, DNS sunucusu alan adını ilişkili ip adresine çevirir. IP adreslerinin her zaman hatırlanması zor olduğundan, www.kadirkozan.com.tr gibi ana bilgisayar adlarını 116.202.53.24’e çevirmek için DNS sunucuları kullanılır. Böylece IP adresi yerine alan adlarını hatırlamayı kolaylaştırır.
Bu makalemde CentOS 8 işletim sisteminde yerel bir DNS sunucusu kurulması ve yapılandırılması yer almaktadır.
DNS Kurulumu
Bu makalem için, üç node kullanacağım. Biri Ana DNS (Master Server) sunucusu olarak hareket edecek, ikinci sistem İkincil DNS olarak hareket edecek ve üçüncüsü de bizim DNS istemcimiz olacaktır. Bu sistemlerin bilgileri aşağıdaki tabloda yer almaktadır.
Bilgisayar Adı | İşletim sistemi | Role | IP Adresi | FQDN |
DNS01 | Centos 8 (minimal kurulum) | DNS Master | 192.168.100.11/24 | dns02.kadirkozan.com.tr |
DNS02 | Centos 8 (minimal kurulum) | DNS Secondary | 192.168.100.12/24 | dns01.kadirkozan.com.tr |
Centos01 | Centos 8 (GUI kurulum) | Linux Client | 192.168.100.211/24 | centos01.kadirkozan.com.tr |
Master Server – Kurulumu ve Yapılandırılması
BIND9 servisini Master sunucuya kurmak için “yum insall bind* -y” komutu çalıştırılır.

Kurulan paketler ve sürüm bilgileri;

Master Server – BIND Servisinin Aktifleştirilmesi ve Başlatılması
DNS hizmetini etkinleştirmek, başlatmak ve durumunu kontrol etmek için aşağıdaki komutları çalıştırınız.
systemctl enable named systemctl start named systemctl status named |

Master Server – BIND Servisi için Firewall Yapılandırması
BIND servisini yeniden başlattıktan sonra sunucunun erişimi için IPtables içerisinde bir konfigürasyon işlemi yapılması gerekiyor. Bunun için bir metin editörü ile “/etc/sysconfig/iptables.config” dosyası içeriği açılır ve içerisine port 53 ‘ün TCP ve UDP protokollerinin açılması ve dışarıdan erişilebilmesi için aşağıdaki satırlar eklenir.
vi /etc/sysconfig/iptables.config |

-A INPUT -p udp -m state –state NEW –dport 53 -j ACCEPT -A INPUT -p tcp -m state –state NEW –dport 53 -j ACCEPT |

Yapılan bu değişiklerin geçerli olması için iptables servisi yeniden başlatılır.
service iptables restart |
Yada daha kolay bir yöntem olan “firewall-cmd” aracı ile aşağıdaki komutlar çalıştırılarak DNS servisi için izin tanımlanır.
firewall-cmd –permanent –add-port=53/tcp firewall-cmd –permanent –add-port=53/udp firewall-cmd –reload |

Master Server – İzinleri, Sahipliği ve SELinux’u Yapılandırılması
Aşağıdaki komutları çalıştırınız.
chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf |

Master Server BIND Servisi Konfigürasyon Yapılandırması
DNS paketi kurulduktan sonra DNS sunucusunun yapılandırılması için “etc/named.conf” dosyası açılır ve bu dosya içerisindeki belirli yerlerin IP adresleri değiştirilir. Bu çıktıda kalın – kırmızı ile seçtiğim kısımlar değiştirilir.
// // 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.100.11;}; ### Master Server DNS IP Address ### # 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.100.0/24;}; ### DNS Server IP Range + Subnet Mask ### allow-transfer{ localhost; 192.168.100.12; }; ### Slave/Secondary DNS Server IP Address ### /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; 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"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "kadirkozan.com.tr" IN { type master; file "forward.kadirkozan"; allow-update { none; }; }; zone "100.168.192.in-addr.arpa" IN { type master; file "reverse.kadirkozan"; allow-update { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";




Master Server’da – Forward Zone Kaydının oluşturulması ve yapılandırılması
Terminal üzerinden metin editörü ile “/var/named” dizini altında aşağıdaki komut ile forward için bir zone kayıt dosyası oluşturuyoruz.
vi /var/named/forward.kadirkozan
Dosyayı oluşturup, açtıktan sonra dosya içerisini aşağıdaki şekilde zone bilgilerini ekliyoruz.
$TTL 86400 @ IN SOA dns01.kadirkozan.com.tr. root.kadirkozan.com.tr. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns01.kadirkozan.com.tr. @ IN NS dns02.kadirkozan.com.tr. @ IN A 192.168.100.11 @ IN A 192.168.100.12 @ IN A 192.168.100.211 dns01 IN A 192.168.100.11 dns02 IN A 192.168.100.12 centos01 IN A 192.168.100.211

Yukarıdaki şekilde kendimize ve senaryomuza göre bir forwarder zone kaydı oluşturduk. Burada yönlendirme kaydımızın hangi domain adına, hangi IP adresine bağlı olduğunu ve hangi IP adreslerinin, hangi makineler ile ilişkili olduğunu gösterir.
Master Server – Reverse Zone Kaydının tanımlanması
Forward kaydı gibi, aynı şekilde metin editörü ile terminal üzerinden bir dosya oluşturulur.
Senaryoya göre reverse zone kaydımızı oluşturup, ardından dosyayı kaydedip kapatıyoruz. Ardından DNS bind servisi yeniden başlatılır. Bu işlem için aşağıdaki komutları çalıştırınız.
vi /var/named/reverse.kadirkozan
$TTL 86400 @ IN SOA dns01.kadirkozan.com.tr. root.kadirkozan.com.tr. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns01.kadirkozan.com.tr. @ IN NS dns02.kadirkozan.com.tr. @ IN PTR kadirkozan.com.tr. dns01 IN A 192.168.100.11 dns02 IN A 192.168.100.12 centos01 IN A 192.168.100.211 11 IN PTR dns01.kadirkozan.com.tr. 12 IN PTR dns02.kadirkozan.com.tr. 211 IN PTR centos01.kadirkozan.com.tr.

Master Server – DNS Servisinin Başlatılması
DNS hizmetinin etkinleştirilmesi ve başlatılması için aşağıdaki komutları çalıştırınız.
Systemctl enable named Systemctl start named |

Secondary Server – BIND Kurulumu ve Yapılandırılması
Secondary server üzerine BIND servisi kurulur. Bu işlem için aşağıdaki komutu çalıştırabilirsiniz.
yum install bind* -y |

Kurulum işlemi tamamlandıktan sonra; BIND konfigürasyonu yapılandırmak için metin editöründe “/etc/named.conf” dosyası açılır ve bu dosya içerisindeki belirli yerlerin IP adresleri değiştirilir. Bu çıktıda kalın – kırmızı ile seçtiğim kısımlar değiştirilir.
// // 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.100.12; }; 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.100.0/24; }; . . . . zone "." IN { type hint; file "named.ca"; }; zone "kadirkozan.com.tr" IN { type slave; file "slaves/kadirkozan.fwd"; masters { 192.168.100.11; }; }; zone "100.168.192.in-addr.arpa" IN { type slave; file "slaves/kadirkozan.rev"; masters { 192.168.100.11; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";



Secondary Server – BIND Servisinin Aktifleştirilmesi ve Başlatılması
DNS hizmetini etkinleştirmek, başlatmak ve durumunu kontrol etmek için aşağıdaki komutları çalıştırınız.
systemctl enable named systemctl start named systemctl status named |

DNS servisi başarılı olarak açıldıktan sonra “/var/named/slaves” dizininde “.fwd” ve “.rev” uzantılı dosya oluşacaktır.

Secondary Server – IP Adres yapılandırmasında
DNS sunucularını ağ kartınızın yapılandırma dosyanıza ekleyiniz.
vi /etc/sysconfig/network-scripts/ifcfg-enp0s33 |
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=98d6468d-dd08-477c-b3a8-1d0fcc364cdf DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.12 PREFIX=24 GATEWAY=192.168.100.254 DNS1=192.168.100.11 DNS2=192.168.100.12 IPV6_PRIVACY=no
Bu aşama başarılı olarak tamamlandıktan sonra BIND sunucusunun başarılı çalışıp / çalışmadığını kontrol etmek için “dig” komutunu çalıştırınız.
dig dns01.kadirkozan.com.tr dig dns02.kadirkozan.com.tr |


Secondary Server – BIND Servisi için Firewall Yapılandırması
BIND servisini yeniden başlattıktan sonra sunucunun erişimi için IPtables içerisinde bir konfigürasyon işlemi yapılması gerekiyor. Bunun için bir metin editörü ile “/etc/sysconfig/iptables.config” dosyası içeriği açılır ve içerisine port 53 ‘ün TCP ve UDP protokollerinin açılması ve dışarıdan erişilebilmesi için aşağıdaki satırlar eklenir.
vi /etc/sysconfig/iptables.config |

-A INPUT -p udp -m state –state NEW –dport 53 -j ACCEPT –A INPUT -p tcp -m state –state NEW –dport 53 -j ACCEPT |

Yapılan bu değişiklerin geçerli olması için iptables servisi yeniden başlatılır.
service iptables restart |
Yada daha kolay bir yöntem olan “firewall-cmd” aracı ile aşağıdaki komutlar çalıştırılarak DNS servisi için izin tanımlanır.
firewall-cmd –permanent –add-port=53/tcp firewall-cmd –permanent –add-port=53/udp firewall-cmd –reload |

Master Server – İzinleri, Sahipliği ve SELinux’u Yapılandırılması
Aşağıdaki komutları çalıştırınız.
chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf |

Secondary Server – DNS Servis Testleri
BIND test işlemi için terminal üzerinden aşağıdaki komutları girilir ve çıktı kontrol edilir. Çıktı aşağıdaki gibi ise DNS konfigürasyonunda sorun yok demektir.
named-checkconf /etc/named.conf named-checkzone kadirkozan.com.tr /var/named/forward.kadirkozan named-checkzone kadirkozan.com.tr /var/named/reverse.kadirkozan |

Bu aşama başarılı olarak tamamlandıktan sonra BIND sunucusunun başarılı çalışıp / çalışmadığını kontrol etmek için “dig” komutunu çalıştırınız.
dig dns01.kadirkozan.com.tr dig dns01.kadirkozan.com.tr |


Son aşama olarak nslookup komutu ile sorgu yapılır
nslookup kadirkozan.com.tr |

Linux Client Konfigürasyonu
Kullanıcıların, DNS sunucusunun IP adresini bilmesi için istemci makinelerde “resolv.conf” dosyalarının düzenlenmesi gerekiyor. Öncelikle client sistem üzerinde “/etc/resolv.conf” dizini metin editörü ile açılır.

DNS sunucu bilgileri tanımlandıktan sonra client sistemin network servisi yeniden başlatılır.
systemctl restart NetworkManager.service |
