Ubuntu 22.04 Üzerinde Özel Ağ İçin BIND DNS Sunucusu Kurulumu ve Yapılandırması
Giriş
Günümüzün karmaşık ağ altyapılarında, her cihazın bir IP adresine sahip olması, bu adresleri akılda tutmayı neredeyse imkansız hale getirmektedir. İşte bu noktada Domain Name System (DNS) devreye girerek, kolayca hatırlanabilen alan adlarını (örneğin, sunucu1.yerel) IP adreslerine (örneğin, 192.168.1.10) dönüştürme işlevini üstlenir. İnternet genelinde bu görev küresel DNS sunucuları tarafından yerine getirilirken, özel ağlar (yerel ağlar, intranetler) için kendi özel DNS sunucusuna sahip olmak, ağ yönetimini, kaynak keşfini ve güvenliği önemli ölçüde artırır.
Bu makalede, Ubuntu 22.04 işletim sistemi üzerinde açık kaynak dünyasının en yaygın ve güçlü DNS sunucusu yazılımı olan BIND (Berkeley Internet Name Domain) kullanarak özel bir ağ DNS sunucusunun nasıl kurulacağını ve yapılandırılacağını adım adım ele alacağız. Kendi DNS sunucunuzu kurarak, ağınızdaki cihazlara özel alan adları atayabilir, dahili hizmetlerinizi kolayca yönetebilir ve dış DNS sunucularına bağımlılığı azaltabilirsiniz. Bu rehber, hem yeni başlayanlar hem de deneyimli sistem yöneticileri için kapsamlı bir kaynak olmayı hedeflemektedir.
DNS Nedir ve Neden Özel Ağda Kullanılır?
DNS, internetin telefon rehberi gibidir. İnsanların web sitelerine veya diğer ağ kaynaklarına erişmek için IP adreslerini ezberlemek yerine, anlamlı ve hatırlanabilir alan adlarını kullanmalarını sağlar. Bir web sitesine erişmek istediğinizde, tarayıcınız önce DNS sunucusuna gider, alan adının IP adresini sorar ve bu IP adresini aldıktan sonra ilgili sunucuyla bağlantı kurar.
Peki, neden özel bir ağda DNS sunucusuna ihtiyaç duyalım? Bunun birkaç önemli nedeni vardır:
1. Dahili Ana Bilgisayar Adı Çözümlemesi: Bir özel ağda genellikle birçok sunucu, sanal makine, ağ depolama birimi ve diğer cihazlar bulunur. Bu cihazlara sunucu1, veritabani, web-uygulama gibi anlamlı isimler vermek, IP adreslerini kullanmaktan çok daha kolaydır. Özel bir DNS sunucusu, bu isimleri ağınızdaki IP adreslerine çevirerek cihazlar arası iletişimi ve yönetimi basitleştirir.
2. Hizmet Keşfi ve Yönetimi: Dahili web sunucuları, veritabanları, e-posta sunucuları veya diğer uygulamalar için özel alan adları tanımlayabilirsiniz (örneğin, veritabani.yerel.com). Bu, uygulamaların ve kullanıcıların doğru hizmetlere kolayca bağlanmasını sağlar ve bir sunucunun IP adresi değişse bile, DNS kaydını güncelleyerek kesintiyi minimuma indirirsiniz.
3. Dış DNS Bağımlılığını Azaltma: Özel ağınızdaki kaynaklar için dış DNS sunucularına güvenmek yerine, kendi sunucunuzu kullanarak daha hızlı çözümleme süreleri elde edersiniz ve internet bağlantınızda bir sorun olduğunda bile dahili ağınızın çalışmaya devam etmesini sağlarsınız.
4. Güvenlik ve Gizlilik: Dahili ağınızın yapısını ve kaynaklarını dış dünyaya ifşa etmeden yönetebilirsiniz. Özel alan adları ve IP adresleri sadece kendi ağınız içinde çözümlenir, bu da harici saldırı yüzeyini azaltır.
5. Özelleştirme ve Kontrol: Kendi DNS sunucunuzla, alan adı yapılandırması üzerinde tam kontrole sahip olursunuz. Özel kayıtlar ekleyebilir, belirli alan adlarını engelleyebilir veya yönlendirebilirsiniz.
Kısacası, özel bir DNS sunucusu, ağınızın daha organize, yönetilebilir, güvenli ve verimli olmasını sağlar.
Önkoşullar ve Sistem Güncelleme
BIND DNS sunucusunu kurmaya başlamadan önce, sisteminizin belirli gereksinimleri karşıladığından emin olmalıyız.
* Ubuntu 22.04 Sunucusu: Temiz bir Ubuntu 22.04 LTS (Jammy Jellyfish) kurulumu önerilir.
* Root veya Sudo Ayrıcalıkları: Kurulum ve yapılandırma için sudo yetkisine sahip bir kullanıcıya veya root kullanıcısına ihtiyacınız olacak.
* Statik IP Adresi: DNS sunucunuzun her zaman aynı IP adresine sahip olması kritik öneme sahiptir. Bu, istemcilerin DNS sunucusunu güvenilir bir şekilde bulmasını sağlar. DHCP ile atanmış dinamik bir IP adresi kullanmak, sunucunun IP’si değiştiğinde ağınızda kesintilere yol açacaktır. Bu rehberde DNS sunucumuz için 192.168.1.10 IP adresini ve example.com alan adını kullanacağız. Ağınıza uygun IP adresini ve alan adını kendi değerlerinizle değiştirmeniz gerekecektir.
İlk adım olarak, sistem paket listelerinizi güncelleyelim ve mevcut paketleri yükseltelim. Bu, en son güvenlik yamalarına ve yazılım sürümlerine sahip olmanızı sağlar.
sudo apt update
sudo apt upgrade -y
Sisteminizde Netplan kullanılıyorsa, statik IP adresi yapılandırmasını sudo nano /etc/netplan/00-installer-config.yaml (veya benzer bir dosya) dosyasını düzenleyerek yapabilirsiniz. Örnek bir yapılandırma aşağıdaki gibi olabilir:
network:
ethernets:
enp0s3: # Ağ arayüzünüzün adı, 'ip a' komutuyla kontrol edebilirsiniz.
dhcp4: no
addresses: [192.168.1.10/24]
routes:
- to: default
via: 192.168.1.1 # Varsayılan ağ geçidiniz
nameservers:
addresses: [192.168.1.10, 8.8.8.8] # Kendi DNS'inizi ve yedek olarak Google DNS'i
version: 2
Değişiklikleri uyguladıktan sonra Netplan yapılandırmasını etkinleştirin:
sudo netplan apply
IP adresinizin doğru yapılandırıldığını ip a komutuyla kontrol edebilirsiniz.
BIND Kurulumu
BIND, Ubuntu depolarında bind9 paketi olarak bulunur. Kurulum oldukça basittir:
sudo apt install bind9 bind9utils bind9-doc -y
* bind9: BIND DNS sunucusu çekirdek paketi.
* bind9utils: DNS sorgulama ve yapılandırma kontrolü için yardımcı programlar (örn. named-checkconf, named-checkzone, dig).
* bind9-doc: BIND ile ilgili belgeler.
Kurulum tamamlandıktan sonra, BIND hizmetinin otomatik olarak başlatıldığını ve çalıştığını kontrol edebilirsiniz:
sudo systemctl status bind9
Çıktıda active (running) ifadesini görmelisiniz.
BIND Temel Yapılandırması
BIND’in yapılandırma dosyaları genellikle /etc/bind/ dizininde bulunur. Ana yapılandırma dosyası named.conf‘tur. Bu dosya genellikle diğer yapılandırma dosyalarını içerir (include direktifleri ile), bu da yapılandırmayı daha modüler ve okunabilir hale getirir.
Ana yapılandırma dosyaları şunlardır:
* named.conf.options: Genel sunucu seçenekleri, yönlendiriciler (forwarders), güvenlik ayarları vb.
* named.conf.local: Yerel olarak tanımlanan bölgeler (zone’lar) için ileri ve ters yönlü kayıtlar.
* named.conf.default-zones: Varsayılan kök ipuçları ve localhost bölgeleri. Bu dosyayı genellikle değiştirmeyiz.
Şimdi bu dosyaları özel ağımız için yapılandıralım.
named.conf.options Dosyasını Yapılandırma
Bu dosya, BIND sunucunuzun genel davranışını ve dış dünyayla nasıl etkileşime gireceğini belirler. Düzenlemek için:
sudo nano /etc/bind/named.conf.options
Dosyanın içeriğini aşağıdaki gibi düzenleyin. Mevcut içeriği yedekleyip tamamen değiştirebilir veya gerekli kısımları güncelleyebilirsiniz.
options {
directory "/var/cache/bind";
// DNS sunucusunun hangi IP adreslerinden gelen sorguları dinleyeceğini belirtir.
// Kendi sunucunuzun statik IP adresini veya 'any' kullanarak tüm arayüzleri dinleyebilirsiniz.
listen-on port 53 { 192.168.1.10; }; # Kendi DNS sunucunuzun IP adresi
listen-on-v6 port 53 { none; }; # IPv6 kullanmıyorsanız 'none' yapın
// Hangi IP adreslerinin DNS sunucunuza sorgu yapmasına izin verildiğini belirtir.
// İç ağınızın IP aralığını veya 'any' kullanarak tüm istemcilere izin verebilirsiniz.
allow-query { 192.168.1.0/24; 127.0.0.1; }; # İç ağınızın IP aralığı
// Sunucunun kendisi çözümleyemediği sorguları göndereceği harici DNS sunucuları.
// Genellikle Google DNS, Cloudflare DNS veya ISP'nizin DNS sunucuları kullanılır.
forwarders {
8.8.8.8; // Google Public DNS
8.8.4.4; // Google Public DNS
};
// DNSSEC doğrulamasını etkinleştirir. Güvenlik için önerilir.
dnssec-validation auto;
// Özyinelemeli sorgulara izin verilip verilmediğini belirler.
// İç ağınız için genellikle 'yes' olmalıdır.
recursion yes;
// DNS sunucusunun ne kadar önbellek kullanacağını belirtir (isteğe bağlı).
// max-cache-size 90%;
// DNS sunucusunun kimler tarafından aktarım (zone transfer) yapılmasına izin verdiğini belirtir.
// İkincil DNS sunucularınız varsa onların IP'lerini buraya ekleyin.
// allow-transfer { none; }; // Varsayılan olarak hiç kimseye izin vermeyin veya sadece ikincil sunuculara.
// BIND'in çalışma zamanı istatistiklerini kimin sorgulayabileceğini belirtir.
allow-recursion { 192.168.1.0/24; 127.0.0.1; }; # İç ağınızın IP aralığı
// BIND'in kimler tarafından kontrol edilebileceğini (rndc komutuyla) belirtir.
allow-control { 127.0.0.1; };
// BIND'in kök ipuçlarını hangi dosyadan alacağını belirtir.
// Bu genellikle named.conf.default-zones dosyasında tanımlanır.
// root-hints "/etc/bind/db.root";
// Sunucunun dinleyeceği port (varsayılan 53'tür).
// listen-on port 53 { any; };
};
Bu yapılandırmada, DNS sunucunuzun 192.168.1.10 IP adresinden gelen sorguları dinlemesini, 192.168.1.0/24 ağındaki istemcilerin sorgu yapmasına izin vermesini ve kendisinin çözümleyemediği sorguları Google DNS sunucularına iletmesini sağlıyoruz.
named.conf.local Dosyasını Yapılandırma
Bu dosya, özel ağınız için tanımlayacağınız ileri yönlü (forward lookup) ve ters yönlü (reverse lookup) bölgeleri içerir. İleri yönlü bölge, alan adlarını IP adreslerine dönüştürürken, ters yönlü bölge IP adreslerini alan adlarına dönüştürür.
sudo nano /etc/bind/named.conf.local
Dosyanın sonuna aşağıdaki blokları ekleyin. example.com yerine kendi özel alan adınızı, 192.168.1 yerine ise ağınızın ilk üç oktetini kullanmayı unutmayın.
// İleri Yönlü Bölge Tanımı (Forward Lookup Zone)
zone "example.com" {
type master; // Bu sunucu, bu bölge için birincil (master) sunucudur.
file "/etc/bind/db.example.com"; // Bölge verilerini içeren dosya yolu
allow-transfer { none; }; // Bu bölge verilerinin kimseye aktarılmasına izin verme
allow-update { none; }; // Dinamik güncellemeleri kapat
};
// Ters Yönlü Bölge Tanımı (Reverse Lookup Zone)
// IP adresinin ters yazılmış hali: 192.168.1 -> 1.168.192.in-addr.arpa
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168"; // Ters bölge verilerini içeren dosya yolu
allow-transfer { none; };
allow-update { none; };
};
Bu tanımlamalar, BIND’e example.com alan adı için /etc/bind/db.example.com dosyasını kullanmasını ve 192.168.1.x IP adresleri için /etc/bind/db.192.168 dosyasını kullanmasını söyler.
İleri Yönlü (Forward Lookup) Bölge Dosyası Oluşturma
Şimdi named.conf.local dosyasında tanımladığımız ileri yönlü bölge dosyasını oluşturmalıyız. BIND, örnek bölge dosyalarını /etc/bind dizininde sağlar. db.local dosyasını kopyalayarak başlayabiliriz.
sudo cp /etc/bind/db.local /etc/bind/db.example.com
sudo nano /etc/bind/db.example.com
Dosyanın içeriğini kendi alan adınız ve sunucularınız için güncelleyin. Aşağıdaki örnek, example.com alan adı ve ns1.example.com (DNS sunucusu), webserver.example.com ve mailserver.example.com gibi örnek ana bilgisayarlar için kayıtları göstermektedir.
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN A 192.168.1.10 ; example.com için IP adresi (genellikle DNS sunucusunun kendisi)
ns1 IN A 192.168.1.10 ; DNS sunucusunun IP adresi
webserver IN A 192.168.1.20 ; Web sunucusunun IP adresi
mailserver IN A 192.168.1.30 ; E-posta sunucusunun IP adresi
Açıklamalar:
* $TTL: Kayıtların istemciler tarafından ne kadar süreyle önbelleğe alınacağını belirtir (saniye cinsinden).
* @: Mevcut alan adını (yani example.com) temsil eder.
* IN: İnternet sınıfı anlamına gelir.
* SOA (Start of Authority): Bölge için yetkili başlangıç kaydıdır.
* 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ölgenin seri numarası. Her değişiklik yaptığınızda bu numarayı artırmalısınız (genellikle tarih formatında YYYYMMDDNN kullanılır, örn. 2023102701). BIND, ikincil sunucuların güncellemeleri ne zaman alması gerektiğini anlamak için bu numarayı kullanır.
* Refresh: İkincil sunucuların birincil sunucuyu ne sıklıkla kontrol edeceğini belirtir.
* Retry: Birincil sunucuya ulaşılamazsa ikincil sunucuların ne kadar bekleyip tekrar deneyeceğini belirtir.
* Expire: İkincil sunucuların birincil sunucuya ulaşılamazsa bölge verilerini ne zaman geçersiz sayacağını belirtir.
* Negative Cache TTL: Olumsuz yanıtların (kayıt bulunamadı) ne kadar süreyle önbelleğe alınacağını belirtir.
* NS (Name Server): Bu alan adı için yetkili isim sunucusunu belirtir.
* A (Address): Bir ana bilgisayar adını IPv4 adresine eşler.
* CNAME (Canonical Name): Bir ana bilgisayar adını başka bir ana bilgisayar adına takma ad olarak eşler. (Örn: www IN CNAME webserver.example.com.)
Önemli: FQDN’lerin sonundaki noktayı unutmayın (örn. ns1.example.com.). Bu, alan adının kök dizine göre tam nitelikli olduğunu belirtir.
Ters Yönlü (Reverse Lookup) Bölge Dosyası Oluşturma
Ters yönlü bölge dosyası, IP adreslerini alan adlarına dönüştürmek için kullanılır. Bu, hata ayıklama, günlük kaydı ve bazı güvenlik protokolleri için önemlidir. db.127 dosyasını kopyalayarak başlayabiliriz.
sudo cp /etc/bind/db.127 /etc/bind/db.192.168
sudo nano /etc/bind/db.192.168
Dosyanın içeriğini aşağıdaki gibi düzenleyin. IP adreslerinin sadece son oktetini (ana bilgisayar kısmını) kullanacağınızı unutmayın.
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
10 IN PTR ns1.example.com. ; 192.168.1.10 için PTR kaydı
20 IN PTR webserver.example.com. ; 192.168.1.20 için PTR kaydı
30 IN PTR mailserver.example.com. ; 192.168.1.30 için PTR kaydı
Açıklamalar:
* PTR (Pointer): Bir IP adresini bir alan adına eşler. Burada sadece IP adresinin son okteti kullanılır, çünkü bölge tanımı (1.168.192.in-addr.arpa) zaten ilk üç okteti belirtir.
Her iki bölge dosyasını da kaydettikten sonra, dosya izinlerinin doğru olduğundan emin olmak iyi bir uygulamadır:
sudo chown root:bind /etc/bind/db.example.com
sudo chmod 644 /etc/bind/db.example.com
sudo chown root:bind /etc/bind/db.192.168
sudo chmod 644 /etc/bind/db.192.168
BIND Yapılandırmasını Test Etme
Yapılandırma dosyalarında herhangi bir hata olup olmadığını kontrol etmek için BIND ile birlikte gelen yardımcı programları kullanmak çok önemlidir. Bu adımı atlamak, BIND hizmetinin başlamamasına veya hatalı çalışmasına neden olabilir.
1. Ana Yapılandırma Dosyalarını Kontrol Etme:
named-checkconf komutu, named.conf ve içerdiği tüm dosyaların (örn. named.conf.options, named.conf.local) sözdizimini kontrol eder. Herhangi bir çıktı yoksa, sözdizimi doğrudur.
sudo named-checkconf
2. Bölge Dosyalarını Kontrol Etme:
named-checkzone komutu, belirli bir bölge dosyasının geçerliliğini ve içeriğini kontrol eder.
* İleri Yönlü Bölge İçin:
sudo named-checkzone example.com /etc/bind/db.example.com
zone example.com/IN: loaded serial 3 ve OK gibi bir çıktı görmelisiniz.
* Ters Yönlü Bölge İçin:
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192.168
Yine zone 1.168.192.in-addr.arpa/IN: loaded serial 3 ve OK gibi bir çıktı görmelisiniz.
Herhangi bir hata mesajı alırsanız, ilgili dosyayı tekrar kontrol edin ve hataları düzeltin. Genellikle noktalı virgül eksikliği, yanlış FQDN formatı (sondaki nokta eksikliği) veya seri numarasının güncellenmemesi gibi basit hatalar sorunlara yol açar.
Tüm kontrollerden başarıyla geçtikten sonra, BIND hizmetini yeniden başlatın:
sudo systemctl restart bind9
Hizmetin durumunu kontrol edin:
sudo systemctl status bind9
active (running) ve herhangi bir hata mesajı olmadığını doğrulayın.
Şimdi DNS sunucunuzun doğru çalışıp çalışmadığını test etmek için dig komutunu kullanın. dig, DNS sunucularını sorgulamak için güçlü bir araçtır.
* Kendi alan adınızı sorgulama:
dig @192.168.1.10 example.com
ANSWER SECTION altında example.com için IP adresini görmelisiniz.
* İleri yönlü kayıtları sorgulama:
dig @192.168.1.10 webserver.example.com
ANSWER SECTION altında webserver.example.com için 192.168.1.20 IP adresini görmelisiniz.
* Ters yönlü kayıtları sorgulama:
dig -x @192.168.1.10 192.168.1.20
ANSWER SECTION altında 192.168.1.20 için webserver.example.com ana bilgisayar adını görmelisiniz.
* Harici bir alan adını sorgulama (forwarders’ın çalışıp çalışmadığını kontrol etmek için):
dig @192.168.1.10 google.com
Google’ın IP adreslerini görmelisiniz. Bu, BIND sunucunuzun kendi çözümleyemediği sorguları named.conf.options dosyasında belirttiğiniz forwarder’lara başarıyla ilettiği anlamına gelir.
Güvenlik Duvarı Yapılandırması
Ubuntu’da varsayılan güvenlik duvarı UFW’dir (Uncomplicated Firewall). DNS sunucunuzun ağınızdaki istemciler tarafından erişilebilir olması için 53 numaralı UDP ve TCP portlarına izin vermeniz gerekir.
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
sudo ufw reload
UFW durumunu kontrol ederek kuralların etkinleştirildiğinden emin olabilirsiniz:
sudo ufw status
Çıktıda 53 numaralı port için ALLOW kurallarını görmelisiniz.
İstemcileri Yapılandırma
DNS sunucunuzu kurduktan sonra, ağınızdaki istemci cihazların bu sunucuyu kullanacak şekilde yapılandırılması gerekir. Bu, istemcinin işletim sistemine ve ağ yapılandırma yöntemine göre değişir.
1. Ubuntu/Linux İstemcileri İçin (Geçici veya Manuel):
Geçici olarak DNS sunucusunu değiştirmek için /etc/resolv.conf dosyasını düzenleyebilirsiniz. Ancak bu dosya genellikle NetworkManager veya Netplan tarafından yönetilir ve yeniden başlatmalarda veya ağ değişikliklerinde üzerine yazılabilir.
sudo nano /etc/resolv.conf
Mevcut nameserver satırlarını yorum satırı haline getirin veya silin ve kendi DNS sunucunuzun IP adresini ekleyin:
# Generated by resolvconf
nameserver 192.168.1.10 # Kendi DNS sunucunuzun IP adresi
nameserver 127.0.0.53
options edns0 trust-ad
search example.com # İsteğe bağlı: Alan adınız
Bu değişiklik geçicidir. Kalıcı değişiklikler için NetworkManager veya Netplan’ı kullanmanız önerilir.
2. Ubuntu/Linux İstemcileri İçin (Kalıcı – Netplan):
Eğer istemciniz de Netplan kullanıyorsa (genellikle sunucularda), aynı şekilde IP adresi yapılandırması yaparken nameservers kısmına DNS sunucunuzun IP adresini ekleyebilirsiniz:
network:
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.20/24] # İstemcinin kendi IP adresi
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.1.10, 8.8.8.8] # Kendi DNS sunucunuz ve yedek
search: [example.com] # İsteğe bağlı: Alan adınız
version: 2
Uygulamak için: sudo netplan apply
3. Ubuntu/Linux İstemcileri İçin (Kalıcı – NetworkManager GUI):
Masaüstü ortamı kullanan Ubuntu istemcilerinde, Ayarlar -> Ağ -> Bağlantı Ayarları (Dişli simgesi) -> IPv4 sekmesine gidin. “DNS” kısmını “Otomatik (DHCP)” yerine “Manuel” olarak ayarlayın ve DNS sunucunuzun IP adresini ekleyin. İsteğe bağlı olarak arama alan adınızı da ekleyebilirsiniz (example.com).
4. Windows İstemcileri İçin:
* Denetim Masası -> Ağ ve Paylaşım Merkezi -> Bağdaştırıcı Ayarlarını Değiştirin.
* Kullandığınız ağ bağdaştırıcısına (örn. Ethernet veya Wi-Fi) sağ tıklayın ve “Özellikler”i seçin.
* “İnternet Protokolü Sürüm 4 (TCP/IPv4)” seçeneğini seçin ve “Özellikler”e tıklayın.
* “Aşağıdaki DNS sunucu adreslerini kullan” seçeneğini işaretleyin ve “Tercih Edilen DNS sunucusu” alanına kendi DNS sunucunuzun IP adresini (192.168.1.10) girin. İsteğe bağlı olarak “Diğer DNS sunucusu” alanına harici bir DNS (örn. 8.8.8.8) girebilirsiniz.
* “Tamam” diyerek pencereleri kapatın.
5. DHCP Sunucusu Üzerinden Otomatik Yapılandırma:
En ideal yöntem, ağınızda bir DHCP sunucusu (örn. isc-dhcp-server veya yönlendiricinizin DHCP özelliği) varsa, DHCP sunucusunu, istemcilere IP adresi atarken DNS sunucusu olarak kendi BIND sunucunuzun IP adresini dağıtacak şekilde yapılandırmaktır. Bu, tüm yeni cihazların otomatik olarak özel DNS sunucunuzu kullanmasını sağlar.
İstemciden Test Etme:
İstemcinizi yapılandırdıktan sonra, yeni DNS sunucusunun kullanıldığını doğrulamak için aşağıdaki komutları çalıştırın:
* Linux’ta:
cat /etc/resolv.conf # DNS sunucusunun doğru ayarlandığını kontrol edin
dig webserver.example.com
ping webserver.example.com
* Windows’ta (Komut İstemi veya PowerShell):
ipconfig /all # DNS sunucusunun doğru ayarlandığını kontrol edin
nslookup webserver.example.com
ping webserver.example.com
Ana bilgisayar adlarının IP adreslerine doğru şekilde çözümlendiğini ve ping’in başarılı olduğunu görmelisiniz.
BIND Hizmetini Yönetme
BIND hizmetini yönetmek için systemctl komutunu kullanabilirsiniz:
* Hizmeti Başlatma:
sudo systemctl start bind9
* Hizmeti Durdurma:
sudo systemctl stop bind9
* Hizmeti Yeniden Başlatma (Yapılandırma değişikliklerinden sonra):
sudo systemctl restart bind9
* Hizmeti Yeniden Yükleme (Bölge dosyası değişikliklerinden sonra, hizmeti kesintiye uğratmadan):
sudo systemctl reload bind9
* Hizmetin Durumunu Kontrol Etme:
sudo systemctl status bind9
* Sistem Başlangıcında Otomatik Başlatmayı Etkinleştirme (Varsayılan olarak etkindir):
sudo systemctl enable bind9
* Sistem Başlangıcında Otomatik Başlatmayı Devre Dışı Bırakma:
sudo systemctl disable bind9
Sık Karşılaşılan Sorunlar ve Çözümleri
BIND yapılandırması karmaşık olabilir ve yeni başlayanlar için bazı yaygın sorunlar ortaya çıkabilir. İşte bazıları ve olası çözümleri:
1. BIND Hizmeti Başlamıyor veya Hata Veriyor:
* Çözüm: sudo systemctl status bind9 komutunu kullanarak hizmetin durumunu kontrol edin. Hata mesajları için journalctl -u bind9 veya /var/log/syslog dosyalarını inceleyin. Genellikle yapılandırma dosyalarındaki sözdizimi hataları (noktalı virgül eksikliği, yanlış parantez kullanımı) veya dosya izinleri sorunları neden olur. named-checkconf ve named-checkzone komutlarını kullanarak yapılandırmayı kontrol edin.
2. Alan Adları Çözümlenmiyor (Özellikle dahili olanlar):
* Çözüm:
* İstemcinin DNS sunucusu olarak BIND sunucunuzun IP adresini kullandığından emin olun (/etc/resolv.conf veya ağ ayarları).
* BIND sunucusunun güvenlik duvarı kurallarını kontrol edin (53/UDP ve 53/TCP portlarına izin verildiğinden emin olun).
* Bölge dosyalarındaki kayıtların doğru olduğundan emin olun (A kayıtları, PTR kayıtları). named-checkzone komutunu tekrar çalıştırın.
* SOA kaydındaki seri numarasını artırdığınızdan ve BIND hizmetini yeniden başlattığınızdan/yeniden yüklediğinizden emin olun.
* named.conf.options dosyasındaki allow-query ve listen-on direktiflerinin istemcinizin IP adresini veya ağını kapsadığından emin olun.
3. Harici Alan Adları Çözümlenmiyor (Örn. google.com):
* Çözüm:
* named.conf.options dosyasındaki forwarders kısmının doğru harici DNS sunucularını (örn. 8.8.8.8) içerdiğinden emin olun.
* BIND sunucunuzun kendisinin internete erişimi olduğundan emin olun (örn. ping google.com komutunu BIND sunucusu üzerinden çalıştırın).
* DNSSEC doğrulamasıyla ilgili bir sorun olabilir. Geçici olarak dnssec-validation no; olarak ayarlayıp test edebilirsiniz, ancak bu güvenlik açısından önerilmez.
4. Ters Yönlü Çözümleme Çalışmıyor:
* Çözüm:
* named.conf.local dosyasındaki ters yönlü bölge tanımının (zone "1.168.192.in-addr.arpa") doğru olduğundan emin olun. IP adresinin ters yazımına dikkat edin.
* Ters yönlü bölge dosyasındaki (db.192.168) PTR kayıtlarının doğru olduğundan emin olun. IP adresinin sadece son oktetini kullandığınızdan ve FQDN’nin sonundaki noktayı unutmadığınızdan emin olun.
* named-checkzone ile ters bölge dosyasını kontrol edin.
5. İstemcilerde DNS Önbellek Sorunları:
* Çözüm: İstemciler DNS yanıtlarını önbelleğe alabilir. Değişiklikler hemen yansımazsa, istemcinin DNS önbelleğini temizlemeniz gerekebilir.
* Linux: sudo systemctl restart systemd-resolved veya sudo /etc/init.d/nscd restart (eğer nscd kullanılıyorsa).
* Windows: Komut isteminde ipconfig /flushdns komutunu çalıştırın.
6. Dosya İzinleri:
* Çözüm: BIND’in bölge dosyalarını okuyabilmesi için doğru dosya izinlerine sahip olması gerekir. Genellikle root:bind sahipliği ve 644 izinleri yeterlidir.
sudo chown root:bind /etc/bind/db.example.com
sudo chmod 644 /etc/bind/db.example.com
Hata ayıklama yaparken, dig komutunu kullanmak çok faydalıdır. Özellikle farklı DNS sunucularını sorgulayarak (dig @ hostname) sorunun BIND sunucusunda mı yoksa istemci yapılandırmasında mı olduğunu anlayabilirsiniz.
Sonuç
Bu kapsamlı rehberde, Ubuntu 22.04 üzerinde BIND DNS sunucusunu özel ağınız için başarıyla kurmayı ve yapılandırmayı öğrendiniz. BIND’in kurulumundan temel yapılandırma dosyalarının düzenlenmesine, ileri ve ters yönlü bölge dosyalarının oluşturulmasına, yapılandırmanın test edilmesine ve istemcilerin ayarlanmasına kadar her adımı detaylı bir şekilde ele aldık.
Kendi özel DNS sunucunuza sahip olmak, ağ yönetiminizde önemli bir esneklik ve kontrol sağlar. Artık ağınızdaki cihazlara anlamlı isimler atayabilir, dahili hizmetlerinizi kolayca keşfedebilir ve yönetebilir, ayrıca harici DNS sunucularına olan bağımlılığınızı azaltarak ağınızın performansını ve güvenliğini artırabilirsiniz.
BIND, oldukça güçlü ve esnek bir yazılımdır. Bu rehber, temel bir kurulum için başlangıç noktasıdır. İleri düzeyde, DNSSEC ile güvenliği artırma, ikincil (slave) DNS sunucuları ile yedeklilik sağlama, dinamik DNS (DDNS) yapılandırma veya BIND’i bir DHCP sunucusuyla entegre etme gibi konuları da araştırarak ağ altyapınızı daha da geliştirebilirsiniz. Bu adımlar, özel ağınızın gelecekteki büyüme ve ihtiyaçlarına uyum sağlamasına yardımcı olacaktır.
