Takip et

Bind’i Ubuntu 16.04 Üzerinde Önbellekleyici veya Yönlendirici DNS Sunucusu Olarak Yapılandırma

Bind’i Ubuntu 16.04 Üzerinde Önbellekleyici veya Yönlendirici DNS Sunucusu Olarak Yapılandırma Giriş İnternet dünyasının temel taşlarında

Bind’i Ubuntu 16.04 Üzerinde Önbellekleyici veya Yönlendirici DNS Sunucusu Olarak Yapılandırma

Giriş

İnternet dünyasının temel taşlarından biri olan Alan Adı Sistemi (DNS), insanların web sitelerine erişmek için kullandığı okunabilir alan adlarını (örneğin, google.com) makinelerin anlayabileceği IP adreslerine (örneğin, 172.217.160.142) çeviren dağıtık bir sistemdir. Bu çeviri süreci olmadan, interneti bugünkü haliyle kullanmamız neredeyse imkansız olurdu. Herhangi bir web sitesini ziyaret ettiğimizde, e-posta gönderdiğimizde veya çevrimiçi bir hizmet kullandığımızda, arka planda bir DNS sorgusu gerçekleşir.

BIND (Berkeley Internet Name Domain), açık kaynaklı ve internetin en yaygın kullanılan DNS yazılımıdır. İnternet üzerindeki çoğu DNS sunucusu BIND yazılımını kullanır. BIND, hem yetkili (authoritative) DNS sunucusu olarak belirli alan adları için resmi kayıtları tutabilir hem de önbellekleyici (caching) veya yönlendirici (forwarding) DNS sunucusu olarak istemcilerin DNS sorgularını çözebilir. Bu makalede, BIND’i Ubuntu 16.04 işletim sistemi üzerinde önbellekleyici veya yönlendirici DNS sunucusu olarak nasıl yapılandıracağımızı adım adım inceleyeceğiz. Ubuntu 16.04, uzun süreli destek (LTS) sağlayan ve bu tür kritik altyapı hizmetleri için sıklıkla tercih edilen stabil bir platformdur.

Önbellekleyici (Caching) DNS Sunucusu: Bu modda çalışan bir DNS sunucusu, aldığı sorguların yanıtlarını belirli bir süre (TTL – Time To Live) boyunca kendi belleğinde saklar. Aynı sorgu tekrar geldiğinde, kök sunuculara veya diğer yetkili sunuculara gitmek yerine, önbellekteki bilgiyi kullanarak çok daha hızlı yanıt verir. Bu, ağ trafiğini azaltır, DNS sorgu sürelerini kısaltır ve kullanıcı deneyimini iyileştirir. Özellikle küçük ve orta ölçekli ağlarda veya ofis ortamlarında performansı artırmak için idealdir.

Yönlendirici (Forwarding) DNS Sunucusu: Bu modda çalışan bir DNS sunucusu, tüm DNS sorgularını önceden belirlenmiş harici DNS sunucularına (örneğin, ISP’nizin DNS sunucuları, Google DNS – 8.8.8.8, Cloudflare DNS – 1.1.1.1) iletir. Kendi başına isim çözümlemesi yapmaz, sadece bir aracı görevi görür. Bu, genellikle şirket içi ağlarda dış DNS sunucularının politikalarına veya filtreleme yeteneklerine güvenmek istendiğinde tercih edilir. Ayrıca, ağ dışına çıkan DNS trafiğini tek bir noktadan kontrol etmek veya belirli bir ISP’nin DNS hizmetlerini kullanmak için de faydalıdır.

Bu makalede, her iki yapılandırma türünü de ayrıntılı olarak ele alacak, kurulumdan test aşamasına kadar tüm adımları açıklayacak ve güvenlik en iyi uygulamalarına değineceğiz.

Ön Gereksinimler

BIND DNS sunucusunu Ubuntu 16.04 üzerinde başarıyla yapılandırmak için aşağıdaki ön gereksinimlere sahip olmanız önemlidir:

* Ubuntu 16.04 İşletim Sistemine Sahip Bir Sunucu: Makale boyunca Ubuntu 16.04 LTS sürümü temel alınacaktır. Temiz bir kurulum en iyi başlangıcı sağlar.
* sudo Ayrıcalıklarına Sahip Bir Kullanıcı veya root Erişimi: Kurulum ve yapılandırma adımları sistem genelinde değişiklikler gerektireceğinden, bu ayrıcalıklar zorunludur. Güvenlik nedeniyle doğrudan root kullanıcısı yerine sudo kullanılması önerilir.
* Temel Linux Komut Satırı Bilgisi: apt paket yöneticisi, dosya düzenleyiciler (nano veya vim), servis yönetimi (systemctl) gibi temel komutlara aşina olmak gereklidir.
* Ağ Yapılandırması Bilgisi: Sunucunuzun IP adresi, alt ağ maskesi, ağ geçidi gibi temel ağ parametrelerini anlamak ve gerekirse yapılandırabilmek önemlidir.
* Statik IP Adresi Atanmış Sunucu: DNS sunucusunun kararlı çalışması için statik bir IP adresine sahip olması kritik öneme sahiptir. Dinamik IP adresi, istemcilerin DNS sunucusunu bulmasını zorlaştırabilir. Sunucunuzun IP adresini öğrenmek için ip a veya ifconfig komutunu kullanabilirsiniz.

BIND9 Kurulumu

BIND9 paketini Ubuntu 16.04 sunucunuza kurmak oldukça basittir. İlk olarak, sisteminizin paket listesini güncellemeli ve mevcut paketleri yükseltmelisiniz. Bu, herhangi bir güvenlik açığını kapatmak ve en güncel yazılım sürümlerine sahip olmak için iyi bir uygulamadır.

1. Sistem Paketlerini Güncelleme:
Terminalinizi açın ve aşağıdaki komutları çalıştırın:

sudo apt update
    sudo apt upgrade -y

apt update paket listelerini güncellerken, apt upgrade -y mevcut tüm paketleri yükseltir ve -y bayrağı tüm sorulara otomatik olarak “evet” yanıtı verir.

2. BIND9 Paketini Kurma:
Şimdi BIND9 ve ilgili yardımcı programları kurabiliriz:

sudo apt install bind9 bind9utils dnsutils -y

* bind9: BIND DNS sunucusunun kendisi.
* bind9utils: BIND yapılandırma dosyalarını kontrol etmek (named-checkconf, named-checkzone) ve diğer yönetim görevleri için yardımcı programlar.
* dnsutils: DNS sorguları yapmak için gerekli araçlar (dig, nslookup). Bu araçlar, DNS sunucunuzu test etmek için vazgeçilmezdir.

3. Kurulum Sonrası Durum Kontrolü:
Kurulum tamamlandıktan sonra, BIND9 servisinin otomatik olarak başlayıp başlamadığını ve düzgün çalışıp çalışmadığını kontrol etmek iyi bir fikirdir:

sudo systemctl status bind9

Çıktıda Active: active (running) ifadesini görmelisiniz. Eğer servis çalışmıyorsa veya bir hata varsa, bu adımda teşhis etmeniz önemlidir.

BIND9 Yapılandırma Dosyalarına Genel Bakış

BIND9’un yapılandırma dosyaları, genellikle /etc/bind/ dizininde bulunur. Bu dosyalar, BIND’in nasıl çalışacağını, hangi sorguları yanıtlayacağını, hangi bölgeleri yöneteceğini ve diğer birçok parametreyi belirler. Ana yapılandırma dosyalarını ve rollerini anlamak, yapılandırma sürecini kolaylaştıracaktır.

* /etc/bind/named.conf: Bu, BIND’in ana yapılandırma dosyasıdır. Genellikle doğrudan bu dosyada çok fazla ayar yapılmaz; bunun yerine, diğer yapılandırma dosyalarını içerir (include direktifi ile). Bu modüler yapı, yapılandırmayı daha düzenli ve yönetilebilir hale getirir.

include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    include "/etc/bind/named.conf.default-zones";

* /etc/bind/named.conf.options: Bu dosya, BIND sunucusunun genel seçeneklerini içerir. Önbellekleme, yönlendirme, güvenlik (erişim kontrolü), DNSSEC ayarları gibi global parametreler burada tanımlanır. Bu makaledeki ana odak noktamız bu dosya olacaktır, çünkü önbellekleyici ve yönlendirici işlevsellikleri burada yapılandırılır.

* /etc/bind/named.conf.local: Bu dosya, genellikle yerel olarak tanımlanan bölgeler (zone’lar) için kullanılır. Örneğin, kendi alan adlarınız (example.com) veya ters DNS bölgeleriniz (reverse lookup zones) için yapılandırmaları buraya eklersiniz. Bu makalede yetkili bir DNS sunucusu kurmadığımız için bu dosyayı değiştirmeyeceğiz, ancak varlığını bilmek önemlidir.

* /etc/bind/named.conf.default-zones: Bu dosya, kök sunucu ipuçları (root hints) ve localhost için varsayılan bölge tanımlarını içerir. Bu dosya genellikle dokunulmaz. Kök sunucu ipuçları, BIND’in internetteki kök DNS sunucularını bulmasını sağlar, bu da recursive (özyinelemeli) sorgular için hayati öneme sahiptir.

* /var/cache/bind/: BIND’in önbellek dosyalarını sakladığı dizindir. Normalde bu dizini elle düzenlemenize gerek yoktur, BIND otomatik olarak yönetir.

Önbellekleyici (Caching) DNS Sunucusu Yapılandırması

Bir önbellekleyici DNS sunucusu kurmak, ağınızdaki DNS sorgularının hızını ve verimliliğini önemli ölçüde artırır. Bu yapılandırma için named.conf.options dosyasını düzenlememiz gerekecek.

1. named.conf.options Dosyasını Düzenleme:
Bir metin düzenleyici kullanarak /etc/bind/named.conf.options dosyasını açın:

sudo nano /etc/bind/named.conf.options

Dosyanın içeriği aşağıdaki gibi görünmelidir. Mevcut options bloğunu düzenleyeceğiz veya gerekirse yeni bir blok oluşturacağız.

options {
        directory "/var/cache/bind";

        // Sorguların hangi IP adreslerinden kabul edileceğini belirler.
        // localhost ve yerel ağ IP'lerini ekleyin.
        // Örneğin: listen-on { 127.0.0.1; 192.168.1.10; };
        listen-on { any; }; // Herhangi bir arayüzden gelen sorguları dinle

        // Sorguların hangi IP adreslerine izin verileceğini belirler.
        // Sadece güvendiğiniz istemcilere izin verin.
        // Örneğin: allow-query { localhost; 192.168.1.0/24; };
        allow-query { any; }; // Herkesten gelen sorgulara izin ver (güvenli değil, test için)

        // Özyinelemeli (recursive) sorgulara izin ver. Önbellekleyici için zorunlu.
        recursion yes;

        // DNSSEC'i etkinleştir. DNS sorgularının doğruluğunu ve bütünlüğünü sağlar.
        dnssec-enable yes;
        dnssec-validation yes;

        // Kök sunucu ipuçları dosyasının yolu.
        // named.conf.default-zones tarafından dahil edilir.
        // root-hints "/etc/bind/db.root"; // Genellikle varsayılan olarak gelir

        // Yönlendirici sunucu tanımlamaları. Önbellekleyici modunda boş bırakılır.
        // forwarders {}; // Boş bırakın veya yorum satırı yapın

        // DNS sorgularını yönlendirme politikası. Önbellekleyici modunda olmamalı.
        // forward only; // veya forward first;

        // Diğer ayarlar...
        auth-nxdomain no;    # RFC1035'e uygun olarak NXDOMAIN yanıtlarını yetkili yapma
        // listen-on-v6 { any; }; // IPv6 desteği için
    };

Açıklamalar:
* directory "/var/cache/bind";: BIND’in önbellek ve çalışma dosyalarını tutacağı dizini belirtir.
* listen-on { any; };: BIND’in hangi ağ arayüzlerinden gelen bağlantıları dinleyeceğini belirtir. any tüm arayüzlerden dinleyeceği anlamına gelir. Güvenlik için, sunucunun statik IP adresini (örneğin, 192.168.1.10) buraya yazmanız daha iyidir.
* allow-query { any; };: Hangi IP adreslerinden gelen DNS sorgularına izin verileceğini belirler. any herkesin sorgu yapmasına izin verir ki bu güvenlik açısından önerilmez. Genellikle localhost; 192.168.1.0/24; gibi yerel ağınızı veya belirli istemci IP’lerini belirtmelisiniz.
* recursion yes;: Bu ayar, BIND’in recursive sorguları (yani, kendisinin çözemediği bir sorguyu kök sunuculardan başlayarak adım adım çözme) yapmasına izin verir. Önbellekleyici bir DNS sunucusu için bu ayar mutlaka yes olmalıdır.
* dnssec-enable yes; ve dnssec-validation yes;: DNSSEC (Domain Name System Security Extensions), DNS verilerinin doğruluğunu ve bütünlüğünü kriptografik olarak sağlar. Bu ayarlar, DNS sahtekarlığı (spoofing) ve zehirlenme (poisoning) saldırılarına karşı koruma sağlar. Güvenlik için etkinleştirilmesi şiddetle tavsiye edilir.
* forwarders {};: Bu bölüm, yönlendirici DNS sunucuları için kullanılır. Önbellekleyici bir sunucu kurduğumuz için bu kısmı boş bırakmalı veya yorum satırı yapmalısınız. BIND, sorguları kendi başına çözecektir.
* forward only; veya forward first;: Bu seçenekler de yönlendirici mod içindir. Önbellekleyici sunucuda bu satırlar bulunmamalıdır.

2. Yapılandırmayı Kaydetme ve Kontrol Etme:
Yaptığınız değişiklikleri kaydedin (Nano’da Ctrl+O, Enter, Ctrl+X). Ardından, yapılandırma dosyanızda herhangi bir sözdizimi hatası olup olmadığını kontrol etmek için named-checkconf komutunu kullanın:

sudo named-checkconf

Eğer komut herhangi bir çıktı vermezse, yapılandırma dosyanızda sözdizimi hatası yok demektir. Hata varsa, hatanın nerede olduğunu belirten bir mesaj alırsınız.

3. BIND9 Servisini Yeniden Başlatma:
Yapılandırma değişikliklerinin etkili olması için BIND9 servisini yeniden başlatmanız gerekir:

sudo systemctl restart bind9

Servisin durumunu tekrar kontrol ederek çalıştığından emin olun:

sudo systemctl status bind9

4. Güvenlik Duvarı (UFW) Ayarları:
Ubuntu’da varsayılan güvenlik duvarı UFW (Uncomplicated Firewall) etkinse, DNS sorgularının sunucuya ulaşabilmesi için 53 numaralı UDP ve TCP portlarını açmanız gerekir:

sudo ufw allow 53/udp
    sudo ufw allow 53/tcp
    sudo ufw reload # Güvenlik duvarı kurallarını yeniden yükle

5. Test Etme:
DNS sunucunuzun önbellekleyici olarak düzgün çalıştığını test etmek için dig komutunu kullanabilirsiniz.

* İlk Sorgu (Önbellekte yok):

dig google.com @127.0.0.1

Bu sorgu, DNS sunucunuzun google.com adresini çözmek için kök sunuculardan başlayarak tam bir çözümleme yapmasını gerektirir. Çıktıda QUERY TIME değeri nispeten yüksek olacaktır.

* İkinci Sorgu (Önbellekte var):

dig google.com @127.0.0.1

Aynı sorguyu tekrar yaptığınızda, QUERY TIME değerinin çok daha düşük olduğunu fark edeceksiniz (genellikle 0 ms). Bu, BIND’in yanıtı önbelleğinden verdiğini gösterir.
dig +short @127.0.0.1 google.com komutu sadece IP adresini gösterir.
dig +trace google.com komutu, sorgunun nasıl çözüldüğünü adım adım gösterir. Önbellekleyici bir sunucuda, ilk sorguda bu trace uzun olurken, sonraki sorgularda daha kısa veya doğrudan yanıtı gösterir.

* /etc/resolv.conf‘u Güncelleme (Geçici Test İçin):
Sunucunuzun kendisinin de yeni DNS sunucusunu kullanmasını sağlamak için /etc/resolv.conf dosyasını geçici olarak düzenleyebilirsiniz. UYARI: Bu dosya genellikle resolvconf veya NetworkManager tarafından yönetildiği için değişiklikler kalıcı olmayabilir.

sudo nano /etc/resolv.conf

Mevcut nameserver satırını yorum satırı yapın veya silin ve kendi DNS sunucunuzun IP adresini ekleyin:

# nameserver 127.0.1.1
        nameserver 127.0.0.1

Kaydedin ve ardından dig google.com komutunu @127.0.0.1 olmadan çalıştırın.

Yönlendirici (Forwarding) DNS Sunucusu Yapılandırması

Bir yönlendirici DNS sunucusu, tüm DNS sorgularını belirli harici DNS sunucularına ileterek çalışır. Bu yapılandırma da named.conf.options dosyasında yapılır.

1. named.conf.options Dosyasını Düzenleme:
Önbellekleyici yapılandırmasını yaptıysanız, şimdi bunu yönlendiriciye dönüştüreceğiz. Yine /etc/bind/named.conf.options dosyasını açın:

sudo nano /etc/bind/named.conf.options

Aşağıdaki gibi bir yapılandırma yapın:

options {
        directory "/var/cache/bind";

        listen-on { any; }; // Veya sunucunun statik IP adresi
        allow-query { any; }; // Veya güvendiğiniz IP blokları

        recursion yes; // Yönlendirici için de recursive sorgulara izin verilmeli

        dnssec-enable yes;
        dnssec-validation yes;

        // Yönlendirici DNS sunucularının IP adreslerini buraya ekleyin.
        // Google DNS (8.8.8.8, 8.8.4.4) veya ISP'nizin DNS sunucuları gibi.
        forwarders {
            8.8.8.8;
            8.8.4.4;
        };

        // Sorguların nasıl yönlendirileceğini belirler.
        // "only": Sadece forwarders listesindeki sunuculara sor.
        // "first": Önce forwarders listesine sor, yanıt alamazsa kendisi çözmeye çalış.
        forward only; // Tüm sorguları sadece yukarıdaki sunuculara yönlendir

        auth-nxdomain no;
        // listen-on-v6 { any; };
    };

Açıklamalar:
* forwarders { 8.8.8.8; 8.8.4.4; };: Bu, DNS sorgularının iletileceği harici DNS sunucularının IP adreslerini listeler. Burada Google Public DNS sunucuları kullanılmıştır. Kendi ISP’nizin DNS sunucularını veya başka güvenilir sunucuları kullanabilirsiniz.
* forward only;: Bu ayar, BIND’in tüm DNS sorgularını yalnızca forwarders listesinde belirtilen sunuculara göndermesini sağlar. BIND, bu sunuculardan yanıt alamazsa kendisi çözümleme yapmaya çalışmaz. Bu, genellikle dış DNS sunucularının politikalarına veya filtreleme yeteneklerine güvenmek istediğinizde tercih edilir.
* forward first;: Bu ayarı kullanırsanız, BIND önce forwarders listesindeki sunuculara sorgu gönderir. Eğer bu sunuculardan bir yanıt alamazsa (veya yanıt bir hata içeriyorsa), BIND kendisi kök sunuculardan başlayarak isim çözümlemesi yapmaya çalışır. Bu, daha esnek bir yaklaşımdır ve genellikle daha güvenlidir, çünkü harici yönlendiricilerin erişilemez olması durumunda BIND kendi başına çalışmaya devam edebilir.
* Diğer listen-on, allow-query, recursion, dnssec-enable, dnssec-validation ayarları önbellekleyici moddaki ile aynı prensiplere sahiptir.

2. Yapılandırmayı Kaydetme ve Kontrol Etme:
Değişiklikleri kaydedin ve named-checkconf ile sözdizimi hatası olup olmadığını kontrol edin:

sudo named-checkconf

3. BIND9 Servisini Yeniden Başlatma:
Servisi yeniden başlatın ve durumunu kontrol edin:

sudo systemctl restart bind9
    sudo systemctl status bind9

4. Güvenlik Duvarı (UFW) Ayarları:
Güvenlik duvarı ayarları önbellekleyici sunucu için yaptığınızla aynıdır:

sudo ufw allow 53/udp
    sudo ufw allow 53/tcp
    sudo ufw reload

5. Test Etme:
Yönlendirici DNS sunucunuzun düzgün çalıştığını test etmek için dig komutunu kullanın:

dig google.com @127.0.0.1

Bu komut, BIND sunucunuzun google.com için sorguyu forwarders listesindeki sunuculara ilettiğini ve onlardan yanıt aldığını göstermelidir. QUERY TIME değeri, harici DNS sunucularının yanıt süresine bağlı olacaktır.

Yönlendirme işlemini daha net görmek için journalctl -u bind9 komutuyla BIND’in loglarını kontrol edebilirsiniz. Genellikle, forwarding ile ilgili log girişlerini göreceksiniz. dig +trace komutu, yönlendirici modunda, sorgunun doğrudan belirtilen yönlendiricilere gittiğini ve oradan yanıt döndüğünü gösterecektir, kök sunuculara yapılan adım adım sorgulama zincirini göstermeyecektir (eğer forward only kullanıldıysa).

Güvenlik En İyi Uygulamaları

Bir DNS sunucusu, ağınız için kritik bir hizmet olduğundan, güvenliğini sağlamak büyük önem taşır. İşte BIND sunucunuzu güvence altına almak için bazı en iyi uygulamalar:

* listen-on ve allow-query Kısıtlamaları:
* listen-on: BIND’in sadece belirli ağ arayüzlerinden gelen bağlantıları dinlemesini sağlayın. Örneğin, listen-on { 127.0.0.1; 192.168.1.10; }; sadece localhost ve sunucunuzun 192.168.1.10 IP adresinden gelen bağlantıları kabul eder. any kullanmaktan kaçının.
* allow-query: DNS sorgularına sadece güvendiğiniz istemci IP adreslerinin veya IP bloklarının erişmesine izin verin. Örneğin, allow-query { localhost; 192.168.1.0/24; }; sadece yerel sunucudan ve 192.168.1.x ağındaki cihazlardan gelen sorgulara izin verir. Bu, sunucunuzu DDoS saldırılarından ve istenmeyen kullanımdan korur.

* DNSSEC (Domain Name System Security Extensions):
dnssec-enable yes; ve dnssec-validation yes; ayarlarıyla DNSSEC’i etkinleştirmek, DNS sorgularının kriptografik olarak imzalanmasını ve doğrulanmasını sağlar. Bu, DNS sahtekarlığı (spoofing) ve zehirlenme (poisoning) gibi saldırılara karşı önemli bir koruma katmanı ekler.

* Rate Limiting (Oran Sınırlama – RRL):
BIND, DNS sorgularının oranını sınırlama (Rate Response Limiting – RRL) yeteneğine sahiptir. Bu, DDoS saldırılarına karşı koruma sağlamaya yardımcı olur. Aşırı sorgu yapan istemcilerden gelen yanıtları geciktirerek veya düşürerek sunucunun aşırı yüklenmesini önler. Bu, daha karmaşık bir yapılandırma gerektirir ve named.conf.options içinde rate-limit bloğu ile yapılır. Genel olarak, responses-per-second, errors-per-second gibi parametrelerle yapılandırılır. Yeni başlayanlar için isteğe bağlıdır, ancak büyük ölçekli veya halka açık DNS sunucuları için önemlidir.

* Chroot Ortamı:
BIND’i bir chroot ortamında çalıştırmak, güvenlik açısından önemli bir adımdır. Chroot, BIND işlemini sistemin geri kalanından izole edilmiş sanal bir kök dizin içinde hapseder. Eğer BIND üzerinde bir güvenlik açığı bulunursa, saldırganın chroot dizininin dışına çıkması çok daha zor olur. Ubuntu 16.04’te bind9-host paketi, BIND’in chroot’lu bir ortamda çalışması için gerekli dizinleri sağlar. Bu genellikle /var/lib/named/chroot altında bulunur. Kurulum sırasında bu seçenek otomatik olarak etkinleştirilebilir veya manuel olarak yapılandırılabilir.

* Düzenli Güncellemeler:
BIND yazılımı da dahil olmak üzere işletim sisteminizi ve tüm yazılımlarınızı düzenli olarak güncellemek, bilinen güvenlik açıklarını kapatmanın en iyi yoludur.

sudo apt update && sudo apt upgrade -y

Bu komutları periyodik olarak çalıştırmak, sunucunuzun güvenliğini sağlamak için kritik öneme sahiptir.

* Loglama:
BIND’in davranışını izlemek ve olası sorunları teşhis etmek için kapsamlı loglama yapılandırması yapmak faydalıdır. named.conf.options veya ayrı bir named.conf.logging dosyası içinde logging bloğunu kullanarak log seviyelerini ve hedeflerini ayarlayabilirsiniz. Örneğin, hataları ve güvenlik olaylarını ayrı bir dosyaya yönlendirebilirsiniz.

Sorun Giderme

BIND yapılandırmasında veya çalışmasında sorunlarla karşılaşmak olasıdır. İşte yaygın sorunları teşhis etmek ve gidermek için kullanabileceğiniz bazı araçlar ve yöntemler:

* Servis Durumu Kontrolü:
BIND servisinin çalışıp çalışmadığını kontrol etmek ilk adımdır:

sudo systemctl status bind9

Eğer Active: failed veya başka bir hata görürseniz, bir sonraki adıma geçin.

* Logları Kontrol Etme:
BIND’in neden çalışmadığını veya hata verdiğini anlamak için logları inceleyin:

sudo journalctl -u bind9 --since "5 minutes ago" # Son 5 dakikadaki loglar
    sudo journalctl -u bind9 -e # En son loglara git

Alternatif olarak, sistem genelindeki loglar için /var/log/syslog dosyasını kontrol edebilirsiniz:

sudo tail -f /var/log/syslog | grep named

Bu loglar, yapılandırma hataları, izin sorunları veya ağ bağlantısı sorunları hakkında değerli bilgiler içerebilir.

* Yapılandırma Dosyası Kontrolü:
Yapılandırma dosyasında sözdizimi hatası olup olmadığını kontrol edin:

sudo named-checkconf

Eğer bir hata varsa, komut size hatanın hangi dosyada ve hangi satırda olduğunu söyleyecektir.

* Bölge Dosyası Kontrolü (Gerekirse):
Eğer yetkili bir DNS sunucusu olarak da yapılandırma yapsaydınız, bölge dosyalarınızı kontrol etmek için named-checkzone kullanırdınız. Önbellekleyici/yönlendirici modunda genellikle bölge dosyası sorunları yaşanmaz.

* Ağ Bağlantısı Kontrolü:
Sunucunuzun internete erişimi olduğundan emin olun. Özellikle yönlendirici modda, forwarders olarak belirtilen DNS sunucularına erişebilmesi gerekir.

ping 8.8.8.8

* Güvenlik Duvarı Kontrolü:
UFW veya başka bir güvenlik duvarının 53 numaralı UDP ve TCP portlarını engellemediğinden emin olun.

sudo ufw status verbose

Gerekirse izinleri ekleyin:

sudo ufw allow 53/udp
    sudo ufw allow 53/tcp
    sudo ufw reload

* dig ve nslookup Kullanımı:
Bu araçlar, DNS sunucunuzu test etmek için vazgeçilmezdir.

dig example.com @[BIND_SUNUCUSU_IP] # Belirli bir sunucuya sorgu gönder
    nslookup example.com [BIND_SUNUCUSU_IP]

Eğer dig komutu SERVFAIL veya NXDOMAIN gibi hatalar döndürüyorsa, logları kontrol etmeye devam edin.

İstemci Yapılandırması

BIND sunucunuzu kurup test ettikten sonra, ağınızdaki istemci bilgisayarların bu yeni DNS sunucusunu kullanması için yapılandırmanız gerekir.

* Linux İstemcilerde:
Geçici olarak /etc/resolv.conf dosyasını düzenleyebilirsiniz. Ancak bu dosya genellikle resolvconf veya NetworkManager gibi servisler tarafından otomatik olarak yönetildiği için değişiklikler yeniden başlatmada veya ağ adaptörü yeniden başlatıldığında kaybolabilir.

sudo nano /etc/resolv.conf

Mevcut nameserver satırlarını yorum satırı yapın veya silin ve BIND sunucunuzun IP adresini ekleyin:

nameserver [BIND_SUNUCUSU_IP_ADRESİ]

Kalıcı değişiklikler için, kullandığınız dağıtıma ve ağ yapılandırma aracına bağlı olarak farklı yöntemler izlemeniz gerekir:
* Ubuntu 16.04 (veya NetworkManager kullananlar): NetworkManager GUI’sini kullanarak veya /etc/network/interfaces dosyasını düzenleyerek kalıcı DNS sunucusu ayarlayabilirsiniz.

# /etc/network/interfaces örneği (statik IP için)
        auto eth0
        iface eth0 inet static
            address 192.168.1.100
            netmask 255.255.255.0
            gateway 192.168.1.1
            dns-nameservers [BIND_SUNUCUSU_IP_ADRESİ] 8.8.8.8 # İkincil DNS

Ardından ağı yeniden başlatın: sudo systemctl restart networking veya sudo service networking restart.
Ubuntu 18.04 ve üzeri (Netplan kullananlar): /etc/netplan/.yaml dosyasını düzenlemeniz gerekir.

* Windows İstemcilerde:
1. Denetim Masası -> Ağ ve Paylaşım Merkezi -> Bağdaştırıcı Ayarlarını Değiştir’e gidin.
2. Kullandığınız ağ bağdaştırıcısına (Ethernet veya Wi-Fi) sağ tıklayın ve Özellikler’i seçin.
3. “İnternet Protokolü Sürüm 4 (TCP/IPv4)” seçeneğini 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 BIND sunucunuzun IP adresini girin. İsteğe bağlı olarak, “Diğer DNS sunucusu” alanına ikincil bir DNS sunucusu (örneğin, 8.8.8.8) ekleyebilirsiniz.
6. Tamam’a tıklayarak kaydedin.

* Otomatik Dağıtım (DHCP Sunucusu Üzerinden):
Ağınızda bir DHCP sunucusu varsa (örneğin, bir yönlendirici veya ayrı bir Linux sunucusu), DHCP yapılandırmasını güncelleyerek istemcilere otomatik olarak yeni DNS sunucusunun IP adresini dağıtabilirsiniz. Bu, büyük ağlarda istemci yapılandırmasını yönetmenin en verimli yoludur.

Sonuç

Bu makalede, BIND DNS sunucusunu Ubuntu 16.04 üzerinde hem önbellekleyici (caching) hem de yönlendirici (forwarding) modunda nasıl yapılandıracağımızı ayrıntılı olarak ele aldık. BIND’in kurulumundan temel yapılandırma dosyalarına, her iki modun özelleştirilmiş ayarlarına ve güvenlik en iyi uygulamalarına kadar geniş bir yelpazeyi kapsadık.

Önbellekleyici bir DNS sunucusu, yerel ağınızdaki DNS sorgularının hızını artırarak kullanıcı deneyimini iyileştirir ve internet trafiğini azaltır. Yönlendirici bir DNS sunucusu ise, tüm sorguları belirli harici DNS sunucularına ileterek ağınızın DNS trafiğini merkezi bir noktadan yönetmenizi ve dış DNS politikalarından faydalanmanızı sağlar. Her iki yapılandırma da, ağınızın ihtiyaçlarına ve güvenlik gereksinimlerine göre seçilebilir ve ağ performansını, güvenliğini ve verimliliğini önemli ölçüde artırabilir.

Unutulmamalıdır ki, bir DNS sunucusu kurmak ve yönetmek sürekli dikkat gerektiren bir iştir. Düzenli güncellemeler, güvenlik duvarı yapılandırmaları, erişim kontrolleri ve log izleme, sunucunuzun kararlı ve güvenli bir şekilde çalışmasını sağlamak için hayati öneme sahiptir. BIND, esnekliği ve güçlü özellikleriyle ağ altyapınız için sağlam bir temel oluşturur. İleri düzey yapılandırmalar arasında yetkili DNS bölgeleri, DNSSEC’in daha derinlemesine uygulanması ve gelişmiş oran sınırlama (RRL) gibi konular da bulunmaktadır, ancak bu makale temel önbellekleyici ve yönlendirici işlevselliğine odaklanmıştır. Bu bilgilerle, kendi DNS sunucunuzu güvenle kurabilir ve yönetebilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version