BIND’i Ubuntu 16.04 Üzerinde Özel Ağ DNS Sunucusu Olarak Yapılandırma
Giriş
İnternet dünyasında, alan adlarını (örneğin, google.com) IP adreslerine (örneğin, 172.217.160.142) çeviren sistem olan DNS (Domain Name System), dijital iletişimin temel taşlarından biridir. Genellikle internet servis sağlayıcıları (İSS) veya halka açık DNS hizmetleri (Google DNS, Cloudflare DNS gibi) tarafından sağlanan bu hizmet, özel ağlarda da kritik bir rol oynar. Özel bir ağda, sunucuların, istemcilerin ve diğer ağ cihazlarının birbirlerini isimleriyle bulabilmesi, yönetimi kolaylaştırır, uygulamaların düzgün çalışmasını sağlar ve ağ içi iletişimi hızlandırır. Bu makalede, açık kaynak dünyasının en yaygın ve güçlü DNS sunucusu yazılımlarından biri olan BIND’i (Berkeley Internet Name Domain) Ubuntu 16.04 işletim sistemi üzerinde özel bir ağ DNS sunucusu olarak nasıl yapılandıracağımızı adım adım inceleyeceğiz.
Özel bir DNS sunucusu kullanmanın birkaç önemli avantajı vardır:
* Hız ve Performans: Ağ içi sorgular, harici sunuculara gitmek yerine yerel DNS sunucusu tarafından yanıtlandığı için çok daha hızlı çözümlenir.
* Kontrol ve Yönetim: Ağınızdaki tüm alan adlarını ve IP eşleşmelerini tamamen kontrol edebilirsiniz. Bu, yeni sunucular eklerken veya mevcut olanları taşırken esneklik sağlar.
* Güvenlik: Ağ içi kaynaklarınızın isimlerini ve IP adreslerini dış dünyaya ifşa etmeden yönetebilirsiniz. Ayrıca, istenmeyen dış DNS sorgularını engelleyerek veya belirli alan adlarını filtreleyerek güvenlik katmanı ekleyebilirsiniz.
* Kolay Erişim: Ağınızdaki sunuculara veya hizmetlere IP adresleri yerine kolay hatırlanabilir isimlerle erişim imkanı sunar. Örneğin, 192.168.1.10 yerine “depo-sunucusu” adını kullanmak çok daha pratiktir.
Ubuntu 16.04, uzun süreli destek (LTS) sağlayan kararlı bir işletim sistemi sürümü olduğu için kurumsal ortamlarda hala yaygın olarak kullanılmaktadır. BIND ise esnekliği, geniş özellikleri ve endüstri standardı olması nedeniyle özel ağ DNS ihtiyaçları için ideal bir çözümdür. Bu makale, temel düzeyde Linux komut satırı bilgisine sahip ve ağ kavramlarına aşina olan kullanıcılar için tasarlanmıştır.
Önkoşullar
BIND yapılandırmasına başlamadan önce, aşağıdaki önkoşulların yerine getirildiğinden emin olmalısınız:
Ubuntu 16.04 Sunucusu
Temiz bir Ubuntu 16.04 sunucu kurulumu önerilir. Bu, potansiyel çakışmaları veya önceden yapılmış hatalı yapılandırmaları ortadan kaldırır. Makineye SSH ile erişiminizin olması gerekmektedir.
Sabit IP Adresi
DNS sunucunuzun sabit bir IP adresine sahip olması zorunludur. Dinamik IP adresleri, DNS çözümlemesinde tutarsızlıklara yol açar ve hizmetin güvenilirliğini düşürür. Bu makalede, DNS sunucumuzun IP adresinin 192.168.1.5 olduğunu ve özel ağımızın 192.168.1.0/24 subnetinde çalıştığını varsayacağız.
IP adresinizi kontrol etmek için:
ip addr show
Eğer IP adresiniz statik değilse, /etc/network/interfaces dosyasını düzenleyerek statik bir IP adresi atayabilirsiniz (Ubuntu 16.04 için yaygın yöntem).
Örnek /etc/network/interfaces yapılandırması:
# Bu dosya ağ arayüzlerinin nasıl yapılandırılacağını açıklar.
Daha fazla bilgi için interfaces(5) man sayfasına bakın.
source /etc/network/interfaces.d/*
Loopback arayüzü
auto lo
iface lo inet loopback
Birincil ağ arayüzü
auto ens33 # veya eth0, enp0s3 vb. olabilir, kendi arayüz adınızı kontrol edin
iface ens33 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.5 8.8.8.8 # Kendi DNS sunucunuzu ve bir yedek sunucuyu belirtin
Değişiklikleri uyguladıktan sonra ağ hizmetini yeniden başlatın:
sudo systemctl restart networking
Sudo Yetkileri
Kurulum ve yapılandırma adımları için sudo yetkilerine sahip bir kullanıcıyla oturum açmış olmanız gerekmektedir.
BIND Kurulumu
BIND, Ubuntu’nun varsayılan paket depolarında bulunur. Kurulum oldukça basittir. İlk olarak, paket listesini güncelleyelim ve ardından BIND’i kuralım:
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
* bind9: BIND DNS sunucusunun kendisi.
* bind9utils: DNS sorgularını test etmek için dig ve nslookup gibi yardımcı araçları içerir.
* bind9-doc: BIND ile ilgili belgeleri içerir (isteğe bağlı ama faydalı olabilir).
Kurulum tamamlandıktan sonra, BIND hizmeti otomatik olarak başlayacaktır. Hizmetin durumunu kontrol edebilirsiniz:
sudo systemctl status bind9
Çıktıda active (running) ibaresini görmelisiniz.
BIND Temel Yapılandırması
BIND’in yapılandırma dosyaları /etc/bind/ dizininde bulunur. Ana yapılandırma dosyaları şunlardır:
* named.conf: Ana yapılandırma dosyasıdır ve diğer yapılandırma dosyalarını içerir. Genellikle doğrudan düzenlenmez.
* named.conf.options: Genel sunucu seçeneklerini (örneğin, yönlendiriciler, sorgu izinleri) içerir.
* named.conf.local: Yerel olarak tanımlanan bölgeleri (alan adları ve ters çözümleme bölgeleri) içerir.
* named.conf.default-zones: Varsayılan yerel ve ters çözümleme bölgelerini içerir (genellikle düzenlenmez).
Bizim için en önemli dosyalar named.conf.options ve named.conf.local olacaktır.
named.conf.options Dosyasını Düzenleme
Bu dosya, BIND sunucunuzun nasıl davranacağına dair genel kuralları belirler. Düzenlemek için bir metin düzenleyici kullanın (örneğin, nano):
sudo nano /etc/bind/named.conf.options
Dosyanın içeriği aşağıdaki gibi olmalıdır. Mevcut içeriği silmeyin, sadece options { ... } bloğunun içine veya sonuna gerekli eklemeleri yapın:
options {
directory "/var/cache/bind";
// Eğer DNS sunucunuzun dışarıya doğru sorguları başka bir DNS sunucusuna
// yönlendirmesini istiyorsanız (örneğin, internetteki alan adları için),
// aşağıdaki 'forwarders' bloğunu kullanın.
// Bu örnekte Google DNS sunucuları kullanılmıştır.
forwarders {
8.8.8.8;
8.8.4.4;
};
// DNS sunucunuzun hangi IP adreslerinden gelen sorguları dinleyeceğini belirtir.
// Kendi sunucunuzun IP adresini ve localhost'u ekleyin.
listen-on { 127.0.0.1; 192.168.1.5; };
// DNS sunucunuzun hangi IP adreslerinden gelen sorgulara yanıt vereceğini belirtir.
// Özel ağınızın subnetini buraya ekleyin.
allow-query { 127.0.0.1; 192.168.1.0/24; };
// Özyinelemeli (recursive) sorgulara izin verilip verilmeyeceğini belirler.
// Özel ağda genellikle "yes" olarak bırakılır.
recursion yes;
// DNSSEC doğrulamayı kapatın (özel ağ için genellikle gereksizdir).
dnssec-validation no;
auth-nxdomain no; # RFC1035'e göre NXDOMAIN yanıtları.
listen-on-v6 { any; }; // IPv6 desteği için.
};
* forwarders: Eğer DNS sunucunuz, kendi tanımlı bölgelerinde bulunmayan bir alan adını sorguladığında başka bir DNS sunucusuna (örneğin, Google DNS veya İSS’nizin DNS’i) yönlendirmesini istiyorsanız burayı kullanın. Bu, özel ağınızdaki makinelerin hem özel alan adlarını hem de internetteki alan adlarını çözebilmesini sağlar.
* listen-on: BIND’in hangi IP adreslerinden gelen DNS sorgularını dinleyeceğini belirtir. Sunucunuzun özel IP adresini (192.168.1.5) ve localhost’u (127.0.0.1) ekleyin.
* allow-query: Hangi istemcilerin bu DNS sunucusuna sorgu yapmasına izin verildiğini belirtir. Özel ağınızın IP aralığını (192.168.1.0/24) ve localhost’u ekleyin. Bu, güvenlik için önemli bir adımdır.
* recursion yes: Özyinelemeli sorgulara izin verir. Yani, sunucu bilmediği bir alan adını bulmak için diğer DNS sunucularını sorgulayabilir. Özel ağ DNS sunucusu için genellikle yes olarak ayarlanır.
* dnssec-validation no: DNSSEC (DNS Security Extensions) doğrulamayı kapatır. Özel ağ ortamlarında genellikle bu seviyede bir güvenlik doğrulamasına ihtiyaç duyulmaz ve performansı etkileyebilir.
Değişiklikleri kaydedin (Ctrl+O, Enter, Ctrl+X).
named.conf.local Dosyasını Düzenleme
Bu dosya, BIND sunucunuzun yöneteceği özel alan adlarını (bölgeleri) tanımlar. Bu bölgeler, hem ileriye yönelik çözümleme (isimden IP’ye) hem de geriye yönelik çözümleme (IP’den isme) için olabilir.
sudo nano /etc/bind/named.conf.local
Dosyanın sonuna aşağıdaki blokları ekleyin. example.com ve 192.168.1 kısımlarını kendi özel alan adınıza ve IP subnetinize göre değiştirmeyi unutmayın.
// İleriye Yönelik Çözümleme Bölgesi (Forward Lookup Zone)
zone "example.com" IN {
type master;
file "/etc/bind/db.example.com";
allow-update { none; }; // Dinamik güncellemeleri kapatırız
};
// Geriye Yönelik Çözümleme Bölgesi (Reverse Lookup Zone)
zone "1.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/db.192";
allow-update { none; }; // Dinamik güncellemeleri kapatırız
};
* zone "example.com" IN { ... }: example.com alan adı için bir bölge tanımlar. Bu, ağınızdaki cihazların sunucu1.example.com gibi isimlerle çözümlenmesini sağlar.
* type master: Bu sunucunun bu bölge için yetkili (birincil) DNS sunucusu olduğunu belirtir.
* file "/etc/bind/db.example.com": Bu bölgeye ait kayıtların tutulduğu dosyanın yolunu belirtir. Bu dosyayı bir sonraki adımda oluşturacağız.
* allow-update { none; }: Dinamik DNS güncellemelerini kapatır. Özel ağlarda genellikle manuel yapılandırma tercih edildiği için bu ayar güvenliği artırır.
* zone "1.168.192.in-addr.arpa" IN { ... }: 192.168.1.0/24 ağı için bir geriye yönelik çözümleme bölgesi tanımlar. IP adreslerinin tersten yazıldığına dikkat edin (1.168.192). .in-addr.arpa uzantısı, geriye yönelik çözümleme bölgeleri için standarttır.
* file "/etc/bind/db.192": Bu geriye yönelik bölgeye ait kayıtların tutulduğu dosyanın yolunu belirtir. Bu dosyayı da bir sonraki adımda oluşturacağız.
Değişiklikleri kaydedin.
Bölge Dosyaları Oluşturma
Şimdi named.conf.local dosyasında belirttiğimiz bölge dosyalarını oluşturacağız. Bu dosyalar, alan adları ve IP adresleri arasındaki gerçek eşleşmeleri içerir.
İleriye Yönelik Çözümleme Bölgesi (db.example.com)
Bu dosya, alan adlarını IP adreslerine çeviren A kayıtlarını (ve diğer kayıtları) içerir.
Örnek bir db.example.com dosyası oluşturalım:
sudo nano /etc/bind/db.example.com
Dosyanın içine aşağıdaki içeriği yapıştırın. example.com yerine kendi alan adınızı, 192.168.1.5 yerine DNS sunucunuzun IP adresini ve diğer IP’leri kendi ağınızdaki cihazlara göre düzenleyin.
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN A 192.168.1.5
ns1 IN A 192.168.1.5
www IN A 192.168.1.10
server1 IN A 192.168.1.20
client1 IN A 192.168.1.30
* $TTL 604800: Varsayılan yaşam süresi (Time To Live). Bu, DNS sorgularının ne kadar süreyle önbelleğe alınacağını belirtir (604800 saniye = 1 hafta).
* @ IN SOA ns1.example.com. admin.example.com. ( ... ): SOA (Start of Authority) kaydı, bu bölge için yetkili DNS sunucusunu ve yönetim bilgilerini belirtir.
* ns1.example.com.: Birincil isim sunucusunun tam nitelikli alan adı (FQDN). Sondaki nokta önemlidir.
* admin.example.com.: Bölge yöneticisinin e-posta adresi (burada @ yerine . kullanılır).
* Serial: Bölge dosyasının sürüm numarasıdır. Her değişiklik yaptığınızda bu numarayı artırmalısınız (örneğin, 2’den 3’e).
* Refresh, Retry, Expire, Negative Cache TTL: Bu değerler, ikincil (slave) DNS sunucularının birincil sunucuyu ne sıklıkla kontrol edeceğini, hata durumunda ne kadar bekleyeceğini, verilerin ne zaman geçersiz sayılacağını ve negatif yanıtların ne kadar önbelleğe alınacağını belirler. Özel ağda tek bir sunucu kullanıyorsanız bu değerler daha az kritik olsa da standartlara uygun olarak doldurulmalıdır.
* @ IN NS ns1.example.com.: NS (Name Server) kaydı, bu bölge için yetkili isim sunucusunu belirtir. @ işareti, ana alan adını (example.com) temsil eder.
* @ IN A 192.168.1.5: Ana alan adı (example.com) için A (Address) kaydı. Bu, example.com adresinin 192.168.1.5 IP adresine işaret ettiğini belirtir.
* ns1 IN A 192.168.1.5: ns1.example.com için A kaydı. DNS sunucusunun kendi FQDN’sinin kendi IP adresine işaret etmesi önemlidir.
* www IN A 192.168.1.10: www.example.com için A kaydı. Bu, www.example.com adresinin 192.168.1.10 IP adresine işaret ettiğini belirtir.
* server1 IN A 192.168.1.20: server1.example.com için A kaydı.
* client1 IN A 192.168.1.30: client1.example.com için A kaydı.
Değişiklikleri kaydedin.
Gerçek Çözümleme Bölgesi (db.192)
Bu dosya, IP adreslerini alan adlarına çeviren PTR kayıtlarını (Pointer Record) içerir.
Örnek bir db.192 dosyası oluşturalım:
sudo nano /etc/bind/db.192
Dosyanın içine aşağıdaki içeriği yapıştırın. Yine example.com ve IP adreslerini kendi yapılandırmanıza göre düzenleyin.
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
10 IN PTR www.example.com.
20 IN PTR server1.example.com.
30 IN PTR client1.example.com.
5 IN PTR ns1.example.com.
* SOA ve NS kayıtları, ileriye yönelik bölge dosyasındaki ile benzerdir. Serial numarasını yine artırmayı unutmayın.
* 10 IN PTR www.example.com.: 192.168.1.10 IP adresinin www.example.com alan adına işaret ettiğini belirtir. Burada sadece IP adresinin son okteti (10) kullanılır çünkü bölge tanımımız 1.168.192.in-addr.arpa idi.
* 20 IN PTR server1.example.com.: 192.168.1.20 IP adresinin server1.example.com alan adına işaret ettiğini belirtir.
* 30 IN PTR client1.example.com.: 192.168.1.30 IP adresinin client1.example.com alan adına işaret ettiğini belirtir.
* 5 IN PTR ns1.example.com.: 192.168.1.5 IP adresinin ns1.example.com alan adına işaret ettiğini belirtir.
Değişiklikleri kaydedin.
Bölge dosyalarını oluşturduktan sonra, BIND’in bu dosyalara doğru izinlerle erişebildiğinden emin olmalıyız. BIND genellikle bind kullanıcısı altında çalışır.
sudo chown -R bind:bind /etc/bind/db.*
sudo chmod 644 /etc/bind/db.*
Yapılandırmayı Test Etme
Yapılandırma dosyalarında herhangi bir hata olup olmadığını kontrol etmek ve BIND hizmetini yeniden başlatmak çok önemlidir.
Sözdizimi Kontrolü
BIND, yapılandırma dosyalarınızı kontrol etmek için iki kullanışlı araç sunar:
* named-checkconf: BIND yapılandırma dosyalarının (örneğin, named.conf.local, named.conf.options) sözdizimini kontrol eder.
sudo named-checkconf
Eğer herhangi bir çıktı görmezseniz, bu, yapılandırma dosyalarında sözdizimi hatası olmadığı anlamına gelir. Hata varsa, hata mesajı ve dosya/satır numarası gösterilecektir.
* named-checkzone: Bölge dosyalarının (örneğin, db.example.com, db.192) sözdizimini ve geçerliliğini kontrol eder.
sudo named-checkzone example.com /etc/bind/db.example.com
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
Her iki komut da zone example.com/IN: loaded serial 2 ve OK gibi bir çıktı vermelidir. Eğer hata varsa, hata mesajı ve dosya/satır numarası belirtilecektir. Serial numarasının doğru olduğundan emin olun.
Hizmeti Yeniden Başlatma
Tüm kontroller başarılı olduktan sonra, BIND hizmetini yeniden başlatın:
sudo systemctl restart bind9
Hizmetin durumunu tekrar kontrol edin:
sudo systemctl status bind9
active (running) ve herhangi bir hata mesajı olmadan çalıştığından emin olun.
DNS Sorgularını Test Etme
Şimdi DNS sunucumuzun doğru çalıştığını test edelim. Sunucunun kendisinden sorgu yapmak için dig veya nslookup araçlarını kullanabilirsiniz.
* İleriye Yönelik Çözümleme Testi:
dig @127.0.0.1 www.example.com
dig @127.0.0.1 server1.example.com
Çıktıda ANSWER SECTION altında www.example.com. 604800 IN A 192.168.1.10 gibi doğru IP adresini görmelisiniz.
* Geriye Yönelik Çözümleme Testi:
dig @127.0.0.1 -x 192.168.1.10
dig @127.0.0.1 -x 192.168.1.20
Çıktıda ANSWER SECTION altında 10.1.168.192.in-addr.arpa. 604800 IN PTR www.example.com. gibi doğru alan adını görmelisiniz.
* Harici Alan Adı Çözümleme Testi (Forwarders çalışıyor mu?):
dig @127.0.0.1 google.com
Bu sorgu, forwarders ayarınız sayesinde Google’ın IP adresini döndürmelidir.
Eğer bu testler başarılı olursa, DNS sunucunuz doğru bir şekilde yapılandırılmış demektir.
İstemcileri Yapılandırma
DNS sunucunuz artık çalışır durumda olduğuna göre, özel ağınızdaki diğer cihazları bu DNS sunucusunu kullanacak şekilde yapılandırmanız gerekir.
Linux İstemciler
Linux istemcilerde DNS yapılandırması genellikle /etc/resolv.conf dosyası üzerinden yapılır. Ancak, modern Linux dağıtımlarında systemd-resolved veya NetworkManager gibi servisler bu dosyayı otomatik olarak yönetebilir.
* Geçici Yapılandırma (test için):
echo "nameserver 192.168.1.5" | sudo tee /etc/resolv.conf
Bu, /etc/resolv.conf dosyasını doğrudan düzenler. Ancak, ağ hizmeti yeniden başlatıldığında veya DHCP kiralama süresi dolduğunda bu değişiklikler kaybolabilir.
* Kalıcı Yapılandırma (Ubuntu 16.04 için ifupdown tabanlı sistemler):
/etc/network/interfaces dosyasını düzenleyin ve dns-nameservers satırına kendi DNS sunucunuzun IP adresini ekleyin.
sudo nano /etc/network/interfaces
Örnek:
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.5 8.8.8.8 # Kendi DNS sunucunuzu birinci sıraya yazın
Veya DHCP ile IP alıyorsanız ve DHCP sunucunuz DNS sunucusunu otomatik olarak dağıtmıyorsa, /etc/dhcp/dhclient.conf dosyasını düzenleyebilirsiniz.
sudo nano /etc/dhcp/dhclient.conf
prepend domain-name-servers satırını arayın veya ekleyin:
prepend domain-name-servers 192.168.1.5;
Değişiklikleri uygulamak için ağ hizmetini veya dhclient’ı yeniden başlatın.
* Test:
cat /etc/resolv.conf
ping www.example.com
nslookup server1.example.com
Doğru IP adreslerini çözdüğünden emin olun.
Windows İstemciler
Windows makinelerde DNS sunucusu ayarlarını değiştirmek için:
1. Denetim Masası -> Ağ ve Paylaşım Merkezi -> Bağdaştırıcı Ayarlarını Değiştir yolunu izleyin.
2. Kullandığınız ağ bağdaştırıcısına (örneğin, Ethernet veya Wi-Fi) sağ tıklayın ve Özellikler‘i seçin.
3. İnternet Protokolü Sürüm 4 (TCP/IPv4) öğesini seçin ve Özellikler düğmesine tıklayın.
4. Aşağıdaki DNS sunucu adreslerini kullan: seçeneğini işaretleyin.
5. Tercih Edilen DNS sunucusu: alanına 192.168.1.5 (kendi DNS sunucunuzun IP adresi) yazın.
6. İsteğe bağlı olarak, Diğer DNS sunucusu: alanına harici bir DNS sunucusu (örneğin, 8.8.8.8) veya yedek bir özel DNS sunucusu ekleyebilirsiniz.
7. Tamam diyerek değişiklikleri kaydedin.
8. Komut İstemi’ni (CMD) açın ve DNS önbelleğini temizleyin:
ipconfig /flushdns
9. Test etmek için:
ping www.example.com
nslookup server1.example.com
Güvenlik İpuçları
Özel ağ DNS sunucunuzun güvenliğini sağlamak, ağınızın genel güvenliği için kritik öneme sahiptir.
Erişim Kontrol Listeleri (ACL)
named.conf.options dosyasında allow-query ile sorgu izinlerini belirlemek önemlidir. Daha detaylı kontrol için ACL’ler tanımlayabilirsiniz:
acl "mynetwork" {
192.168.1.0/24;
127.0.0.1;
};
options {
// ...
allow-query { "mynetwork"; };
// ...
};
Bu, sadece “mynetwork” ACL’sinde tanımlanan IP’lerin sorgu yapmasına izin verir.
Güvenlik Duvarı (UFW)
Ubuntu’da varsayılan güvenlik duvarı olan UFW’yi (Uncomplicated Firewall) kullanarak sadece DNS sorguları için gerekli olan portlara izin verin. DNS, varsayılan olarak hem TCP hem de UDP üzerinde 53 numaralı portu kullanır.
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
sudo ufw enable
sudo ufw status
Bu komutlar, 53 numaralı porttan gelen hem UDP hem de TCP trafiğine izin verir. Eğer sunucunuz sadece özel ağınızdan erişilecekse, belirli bir IP aralığından gelen trafiğe izin vermek daha güvenlidir:
sudo ufw allow from 192.168.1.0/24 to any port 53 proto udp
sudo ufw allow from 192.168.1.0/24 to any port 53 proto tcp
Güncellemeler
BIND ve Ubuntu işletim sisteminizi düzenli olarak güncel tutun. Güvenlik açıkları genellikle yamalarla kapatılır.
sudo apt update
sudo apt upgrade
Chroot Ortamı (Opsiyonel ama Önerilir)
BIND’i bir chroot ortamında çalıştırmak, olası bir güvenlik açığı durumunda saldırganın sunucunun geri kalanına erişimini kısıtlar. Ubuntu 16.04’te BIND varsayılan olarak chroot’ta çalışmaz, ancak bind9-host paketi ile ilgili bazı chroot konfigürasyonları gelebilir. Manuel olarak yapılandırmak daha karmaşıktır ve bu makalenin kapsamının dışındadır, ancak daha yüksek güvenlik gerektiren ortamlar için araştırılabilir.
DNSSEC (Gelişmiş)
DNSSEC, DNS yanıtlarının doğruluğunu kriptografik olarak imzalar. Özel ağ ortamında genellikle bu karmaşıklığa gerek duyulmaz ancak internete açık DNS sunucuları için önemlidir. dnssec-validation no; ayarı ile bu özelliği kapatmıştık.
Sorun Giderme
BIND yapılandırmasında sorunlarla karşılaşmak yaygındır. İşte bazı sorun giderme ipuçları:
Günlükleri Kontrol Etme
BIND’in tüm hata ve bilgi mesajları sistem günlüklerine kaydedilir.
sudo tail -f /var/log/syslog
Veya
sudo journalctl -u bind9 -f
Bu komutlar, BIND hizmetinin ne olup bittiğini anlamanıza yardımcı olacak mesajları gösterir. Özellikle named ile başlayan satırları arayın.
named-checkzone ve named-checkconf Kullanımı
Bu araçlar, yapılandırma dosyalarınızdaki sözdizimi hatalarını bulmak için çok etkilidir. Yukarıdaki “Sözdizimi Kontrolü” bölümünü tekrar gözden geçirin.
Güvenlik Duvarı Kontrolü
Eğer istemcileriniz DNS sunucusuna ulaşamıyorsa, güvenlik duvarınızın (UFW veya başka bir güvenlik duvarı) 53 numaralı portta TCP ve UDP trafiğine izin verdiğinden emin olun.
sudo ufw status verbose
IP Adresi ve Subnet Kontrolü
named.conf.options dosyasındaki listen-on ve allow-query ayarlarının sunucunuzun IP adresi ve ağınızın subneti ile eşleştiğinden emin olun.
Serial Numarası
Bölge dosyalarında herhangi bir değişiklik yaptığınızda SOA kaydındaki Serial numarasını artırdığınızdan emin olun. Aksi takdirde, BIND değişiklikleri fark etmeyebilir.
Noktalar ve FQDN’ler
Bölge dosyalarındaki FQDN’lerin (Tam Nitelikli Alan Adı) sonlarında nokta (.) olup olmadığını dikkatlice kontrol edin. Örneğin, ns1.example.com. doğru, ns1.example.com ise yanlış olabilir (BIND tarafından otomatik olarak ana alan adına eklenir, bu da bazen istenmeyen sonuçlara yol açabilir).
Hizmet Durumu
BIND hizmetinin gerçekten çalışıp çalışmadığını kontrol edin:
sudo systemctl status bind9
Eğer failed durumundaysa, günlükleri kontrol ederek hatanın nedenini bulmaya çalışın.
Sonuç
Bu kapsamlı rehberde, Ubuntu 16.04 üzerinde BIND’i özel bir ağ DNS sunucusu olarak nasıl kuracağınızı ve yapılandıracağınızı adım adım öğrendiniz. named.conf.options ve named.conf.local dosyalarını düzenleyerek genel sunucu davranışını tanımladık. Ardından, ileriye ve geriye yönelik çözümleme için bölge dosyalarını oluşturduk ve bunları doğru DNS kayıtlarıyla doldurduk. Yapılandırma kontrolleri ve test sorgularıyla sunucumuzun doğru çalıştığını doğruladık ve son olarak istemcileri bu yeni DNS sunucusunu kullanacak şekilde yapılandırma adımlarını ele aldık.
Özel bir DNS sunucusu kurmak, ağ yönetiminizi önemli ölçüde kolaylaştırır, performansı artırır ve ağ içi kaynaklarınız üzerinde daha fazla kontrol sağlar. Ayrıca, ağınızın genel güvenliğine de katkıda bulunur. BIND gibi güçlü bir aracı doğru yapılandırmak biraz pratik gerektirse de, sağladığı faydalar bu çabaya değerdir. Unutmayın, ağınız büyüdükçe veya gereksinimleriniz değiştikçe DNS yapılandırmanızı düzenli olarak gözden geçirmek ve güncellemek önemlidir. Güvenlik ipuçlarını takip ederek ve düzenli bakım yaparak DNS sunucunuzun kararlı ve güvenli bir şekilde çalışmasını sağlayabilirsiniz.
