Bilgi tabanı Blogging

Linux DNS Sunucusu Yapılandırma Kılavuzu 2026 – Adım Adım Kurulum

Linux DNS sunucu yapılandırması, Linux üzerinde DNS yazılımının (BIND9, Unbound veya PowerDNS gibi) kurulması, güvenliğinin sağlanması ve alan adı kayıtlarının çözümlenmesi (özyinelemeli) ve/veya barındırılması (yetkili) işlemidir.

Bu kılavuz, 2026 ortamları ve modern Linux dağıtımları için optimize edilmiş adım adım kurulum, en iyi uygulamalar, güvenlik (DNSSEC, TSIG) ve sorun giderme konularını açıklamaktadır.

Linux'ta güvenilir bir DNS kurulumu, öğrenebileceğiniz en değerli sistem yöneticiliği becerilerinden biridir. Bu başlangıç ​​seviyesine uygun Linux DNS sunucu yapılandırma kılavuzunda, önbellekleme ve yetkili DNS'i kuracak, güvenliğini sağlayacak ve büyük ölçekli barındırma için kullandığımız üretime hazır kalıpları öğreneceksiniz.

İster dahili bir çözümleyici, ister halka açık bir ad sunucusu veya bölünmüş ufuklu DNS oluşturuyor olun, bu 2026 için eksiksiz bir kılavuzdur.


DNS nasıl çalışır?

DNS, insan tarafından okunabilir alan adlarını kayıtlar (A/AAAA, CNAME, MX, TXT, NS, PTR) kullanarak IP adreslerine çevirir. İki ana rolü vardır:

DNS Nasıl Çalışır?
  • Özyinelemeli (önbelleğe alma) çözümleyici: Hiyerarşiyi dolaşarak istemci sorgularını yanıtlar, ardından yanıtları önbelleğe alır.
  • Yetkili sunucu: Alan adı dosyalarınızı yayınlar ve alan adınız için doğruluk kaynağıdır.

Linux üzerinde bu rollerden birini veya her ikisini de çalıştırabilirsiniz. Güvenlik açısından, üretim ortamında bunları ayrı tutun.


2026'da DNS Yazılımı Seçimi

Kullanım senaryonuza ve operasyonel rahatlığınıza göre yazılım seçin. Bunlar 2026'da en yaygın ve en iyi desteklenen yazılımlardır:

  • BIND9 (ISC)
    Yetkili DNS için fiili standart olup, özyinelemeli çözümleyici olarak da kullanılabilir. Geniş bir topluluğa ve zengin özelliklere (görünümler, DNSSEC, TSIG, ACL'ler) sahiptir. Yapılandırma odaklıdır. named.conf ve bölge dosyaları. Karmaşık, geleneksel kurulumlar için ideal.
  • bağsız
    Hafif, güvenli ve hızlı özyinelemeli çözümleyici. Mükemmel varsayılan ayarlar, DNSSEC doğrulaması ve modern güvenlik önlemleri. Uygulama sunucularında ve iç ağlarda yalnızca önbelleğe alma amaçlı çözümleyiciler için idealdir.
  • Güç DNS'si
    Modüler ve API dostu yetkili sunucu (ayrı bir yinelemeli veritabanı ile). Arka uçlar arasında dosyalar, MySQL, PostgreSQL vb. bulunur. Büyük ölçekli, dinamik kurulumlar ve orkestrasyon araçlarıyla entegrasyon için popülerdir.

Önkoşullar ve Planlama

Kurulumdan önce rolü belirleyin (özyinelemeli mi yoksa yetkili mi) ve hazırlıkları yapın:

  • Ana bilgisayar adı ve tam nitelikli alan adı (FQDN): Örnek: ns1.example.com
  • Yetkili sunucular için genel IP adresi; dahili çözümleyiciler için özel IP adresi.
  • Güvenlik Duvarı: UDP/TCP 53'ü Açık
  • Ters bölgeler: PTR kayıtları barındırıyorsanız, IP bloklarınızı not edin.
  • DNSSEC için NTP/Chrony aracılığıyla zaman senkronizasyonu
  • Linux dağıtımları için Ubuntu 22.04/24.04, Debian 12, RHEL 9/AlmaLinux/Rocky 9 idealdir.

Önbelleğe alma özelliğine sahip bir DNS çözümleyici yükleyin (öncelikle önerilir)

Seçenek A: BIND9'u Yalnızca Önbellekleme Amaçlı Çözümleyici Olarak Kullanma (Ubuntu/Debian)

Ubuntu/Debian'da BIND9'u kurun ve yönlendirme (isteğe bağlı) ve DNSSEC doğrulamasıyla güvenli özyinelemeli çalıştırma yapacak şekilde yapılandırın.

sudo apt update && sudo apt install bind9 bind9-utils bind9-dnsutils -y

# /etc/bind/named.conf.options
options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; };
    listen-on { 127.0.0.1; 10.0.0.10; }; // replace with your IP
    listen-on-v6 { none; };

    dnssec-validation auto;

    // Optional: use upstream forwarders (ISP, Google, Cloudflare)
    forwarders {
        1.1.1.1;
        8.8.8.8;
    };

    // Hardening
    minimal-responses yes;
    rate-limit {
        responses-per-second 10;
    };
};

sudo named-checkconf
sudo systemctl enable --now named
sudo systemctl restart named

Sunucunuzun çözümleyicisini kendisine yönlendirin:

# If systemd-resolved is managing resolv.conf, disable it:
sudo systemctl disable --now systemd-resolved
sudo rm -f /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf

Seçenek B: Önbellek Çözümleyici Olarak Unbound (RHEL/Alma/Rocky/Ubuntu)

Unbound, varsayılan olarak minimal ve güvenlidir. Erişim kontrolü ve DNSSEC doğrulaması ile kurun ve yapılandırın.

# RHEL family
sudo dnf install -y unbound

# Ubuntu/Debian
sudo apt update && sudo apt install -y unbound

# /etc/unbound/unbound.conf.d/local.conf
server:
  interface: 0.0.0.0
  access-control: 127.0.0.0/8 allow
  access-control: 10.0.0.0/8 allow
  access-control: 192.168.0.0/16 allow
  hide-identity: yes
  hide-version: yes
  qname-minimisation: yes
  harden-referral-path: yes
  val-log-level: 1
  auto-trust-anchor-file: "/var/lib/unbound/root.key"

forward-zone:
  name: "."
  forward-addr: 1.1.1.1
  forward-addr: 8.8.8.8

sudo unbound-anchor -a /var/lib/unbound/root.key
sudo unbound-checkconf
sudo systemctl enable --now unbound

Müşterilerinizi Sorun Çözücünüze Yönlendirin

  • Yerel sunucu: Ayarla /etc/resolv.conf için nameserver 127.0.0.1 (veya yerel ağınızın IP adresi).
  • Ağ istemcileri: Çözümleyicinizin IP adresini duyurmak için DHCP kullanın.
  • Testi: dig qloudhost.com @YOUR_RESOLVER_IP ve yanıt sürelerini kontrol edin. SERVER: alan.

BIND9 ile Yetkili Bir DNS Sunucusu Yapılandırın

Herkese açık DNS için, yetkili ve özyinelemeli rolleri farklı sunucularda çalıştırın. Burada yalnızca yetkili hizmeti etkinleştirin (özyinelemeyi devre dışı bırakın).

Temel Güvenlik: Özyinelemeyi Devre Dışı Bırak, Erişim Kontrol Listelerini Ayarla

# /etc/bind/named.conf.options
options {
    directory "/var/cache/bind";
    recursion no;
    allow-query { any; };
    allow-transfer { key "xfr-key"; 203.0.113.10; }; // secondary NS

    dnssec-enable yes;
    dnssec-validation auto;

    listen-on { 203.0.113.5; }; // public IP
    listen-on-v6 { none; };

    minimal-responses yes;
};

key "xfr-key" {
    algorithm hmac-sha256;
    secret "BASE64_TSIG_SECRET";
};

İleri Bölge Oluşturun

# /etc/bind/named.conf.local
zone "example.com" IN {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { key "xfr-key"; 203.0.113.10; };
    also-notify { 203.0.113.10; };
};
# /etc/bind/zones/db.example.com
$TTL 300
@   IN SOA ns1.example.com. admin.example.com. (
        2026010101 ; Serial: YYYYMMDDnn
        3600        ; Refresh
        900         ; Retry
        1209600     ; Expire
        300 )       ; Minimum

    IN NS   ns1.example.com.
    IN NS   ns2.example.com.

ns1 IN A    203.0.113.5
ns2 IN A    203.0.113.10

@   IN A    203.0.113.20
www IN A    203.0.113.21
api IN A    203.0.113.22
mail IN A   203.0.113.23

@   IN MX 10 mail.example.com.
@   IN TXT "v=spf1 a mx -all"

Ters Bölge (PTR) Oluştur

# /etc/bind/named.conf.local (append)
zone "113.0.203.in-addr.arpa" IN {
    type master;
    file "/etc/bind/zones/db.203.0.113";
};

# /etc/bind/zones/db.203.0.113
$TTL 300
@   IN SOA ns1.example.com. admin.example.com. (
        2026010101 3600 900 1209600 300 )
    IN NS ns1.example.com.

5   IN PTR ns1.example.com.
20  IN PTR example.com.
21  IN PTR www.example.com.

Doğrula ve yeniden yükle:

sudo named-checkconf
sudo named-checkzone example.com /etc/bind/zones/db.example.com
sudo named-checkzone 113.0.203.in-addr.arpa /etc/bind/zones/db.203.0.113
sudo systemctl reload named

Gelişmiş Üretim Özellikleri

Bölünmüş Ufuk DNS (Görünümler)

İç ve dış müşterilere farklı yanıtlar sunun. Örnek: internal.example.com Ağınızdaki özel IP adreslerine çözümlenir.

acl "internal" { 10.0.0.0/8; 192.168.0.0/16; };

view "internal" {
   match-clients { "internal"; };
   recursion yes;
   zone "example.com" { type master; file "/etc/bind/zones/db.example.com.internal"; };
};

view "external" {
   match-clients { any; };
   recursion no;
   zone "example.com" { type master; file "/etc/bind/zones/db.example.com.public"; };
};

DNSSEC İmzalama

DNSSEC, veri bütünlüğü ve kaynak kimlik doğrulaması sağlar. BIND9'da, satır içi imzalama kullanılır.

# /etc/bind/named.conf.local (zone with inline-signing)
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    inline-signing yes;
    auto-dnssec maintain;
    key-directory "/etc/bind/keys";
};

# Generate keys
cd /etc/bind/keys
sudo dnssec-keygen -a ECDSAP256SHA256 -n ZONE example.com
sudo dnssec-keygen -f KSK -a ECDSAP256SHA256 -n ZONE example.com

# Reload and publish DS record at your registrar
sudo rndc reload
# Extract DS:
dnssec-dsfromkey -f Kexample.com.+013+*.key example.com

TSIG ile Güvenli Bölge Transferleri

Birincil ve ikincil ad sunucuları arasındaki aktarımları doğrulamak için TSIG'yi kullanın.

# Create key on primary:
sudo tsig-keygen -a hmac-sha256 xfr-key > /etc/bind/keys/xfr-key.key

# Include on both primary and secondary:
include "/etc/bind/keys/xfr-key.key";

# Primary zone stanza
allow-transfer { key xfr-key; 203.0.113.10; };
also-notify { 203.0.113.10; };

Hız Sınırlama ve Kayıt Tutma

Yanıt hızı sınırlaması kullanarak kötüye kullanımı önleyin ve yapılandırılmış kayıtlar tutun.

# Example logging in /etc/bind/named.conf
logging {
  channel default_log {
    file "/var/log/named/default.log" versions 5 size 10m;
    severity info;
    print-time yes;
  };
  category default { default_log; };
  category queries { default_log; };
};

Sistem Entegrasyonu ve Güçlendirme

Güvenlik Duvarı ve SELinux/AppArmor

  • Open DNS: firewall-cmd --add-service=dns --permanent && firewall-cmd --reload or ufw allow 53.
  • SELinux: Doğru bağlamların sağlanması: restorecon -Rv /etc/bind /var/named.
  • AppArmor: BIND dosyaları varsayılan ayarların dışında bulunuyorsa profilleri ayarlayın.

Sistem d-çözümlü Etkileşimler

Ubuntu'da, systemd-resolved yönetebilir /etc/resolv.confYerel çözümleyiciler için devre dışı bırakın ve 127.0.0.1 adresine yönlendirin. Masaüstü bilgisayarlarda etkin bırakın ve NetworkManager aracılığıyla çözümleyicinize yönlendirin.


İzleme ve Ölçümler

  • Sağlık: rndc status, unbound-control status.
  • Kayıtlar: journalctl -u named -f or journalctl -u unbound -f.
  • Ölçümler: Prometheus için Bind Exporter veya Unbound Exporter; SERVFAIL artışları, gecikme ve NXDOMAIN oranı için uyarılar ayarlayın.

Sorun Giderme ve Sık Karşılaşılan Hatalar

Temel kazı komutları

# Test recursion
dig qloudhost.com @127.0.0.1

# Test authoritative NS and SOA
dig NS example.com @203.0.113.5
dig SOA example.com @203.0.113.5

# Trace resolution path
dig +trace example.com

# DNSSEC validation status (ad flag)
dig +dnssec example.com

# Reverse lookup
dig -x 203.0.113.20 @203.0.113.5

Sık Karşılaşılan Sorunlara Yönelik Çözümler

  • Özyinelemeli ServFail hatası: Yukarı akış bağlantısını, güvenlik duvarını ve DNSSEC güven çapasını kontrol edin. Unbound için şunu çalıştırın: unbound-anchor.
  • Yetkili mercilerden yanıt yok: Emin olun recursion no;, doğru listen-on IP ve NS kayıtlarınız, alan adınızın kayıt kuruluşunda bulunmaktadır.
  • Bölge yüklenmiyor: Seri numarasını artırın ve çalıştırın. named-checkzoneSOA formatını doğrulayın.
  • Aktarımlar başarısız oluyor: TSIG gizli anahtarlarının eşleştiğinden ve her iki tarafın da aktarıma izin verdiğinden emin olun.
  • Zaman aşımı: UDP/TCP 53'ü açın. Bazı daha büyük yanıtlar TCP gerektirir, bu nedenle her ikisine de izin verin.

En İyi Uygulamalar Kontrol Listesi (2026)

  • Özyinelemeli ve yetkili rolleri ayırın
  • DNSSEC'i etkinleştirin (çözümleyicilerde doğrulama, yetkili sunucuda imzalama)
  • Bölge transferleri için TSIG kullanın, kısıtlama getirin allow-transfer
  • Minimal yanıtlar, ACL'ler ve hız sınırlayıcılarla sertleşme
  • Doğru SOA seri numaralarını ve makul TTL değerlerini (300–3600 saniye) koruyun.
  • Yapılandırma yönetimi (Ansible) ve CI kod denetimi ile otomasyon sağlayın.
  • Sorgu hacmini, NXDOMAIN artışlarını ve gecikmeyi izleyin.
  • Bölge dosyalarının ve anahtarların yedeklerini (güvenli depolama ve rotasyon ile) saklayın.
  • Değişiklik prosedürlerini belgeleyin ve bir geri alma planınız olsun.

Yönetilen DNS'i Ne Zaman Kullanmalısınız? (Zaman ve Riskten Tasarruf Edin)

Küresel anycast, yerleşik DDoS koruması, DNS analizi ve %100 çalışma süresi SLA'larına ihtiyacınız varsa, yönetilen DNS, kendi başınıza yapacağınız çözümlerden daha iyi performans gösterebilir. QloudHostBarındırma ve bulut altyapılarımız, birinci sınıf DNS sağlayıcılarıyla entegre olur ve yönetilen hizmetler ekibimiz, tek bir bölge dosyasına dokunmanıza gerek kalmadan BIND/Unbound'u yapılandırabilir veya sizi dayanıklı, API tabanlı bir DNS iş akışına geçirebilir.


Adım Adım Mini Hızlı Başlangıç ​​Kılavuzu (Kopyala/Yapıştır)

Önbellek Çözümleyici (Unbound) 60 Saniyede

sudo apt update && sudo apt install -y unbound
sudo bash -c 'cat >/etc/unbound/unbound.conf.d/local.conf' <<'EOF'
server:
  interface: 127.0.0.1
  access-control: 127.0.0.0/8 allow
  qname-minimisation: yes
  auto-trust-anchor-file: "/var/lib/unbound/root.key"
forward-zone:
  name: "."
  forward-addr: 1.1.1.1
  forward-addr: 8.8.8.8
EOF
sudo unbound-anchor -a /var/lib/unbound/root.key
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
sudo systemctl enable --now unbound
dig qloudhost.com @127.0.0.1

Çözümleniyor DNS_PROBE_FINISHED_NXDOMAIN hata Özellikle Linux tabanlı bir sistemde çalışıyorsanız, bu işlem genellikle sistem DNS ayarlarını düzenlemeyi içerir. DNS'nin Linux ortamlarında nasıl çalıştığına dair adım adım bir kılavuz için (düzenlemeden başlayarak) aşağıdaki adımları izleyin. /etc/resolv.conf Önbellekleme ve özel ad sunucularının yapılandırılmasına ilişkin ek kaynak, DNS kurulumunuzu iyileştirmenize ve gelecekte benzer bağlantı sorunlarından kaçınmanıza yardımcı olacaktır.


Sıkça Sorulan Sorular: Linux DNS Sunucusu Yapılandırması 2026

2026'da önbelleğe alma özellikli bir DNS sunucusu için BIND9 mu yoksa Unbound mu daha iyi?

Unbound, güçlü varsayılan ayarları, güvenlik duruşu ve basitliği nedeniyle genellikle yalnızca önbellekleme için daha iyidir. BIND9, zaten standart olarak kullanıyorsanız veya görünümler veya entegre politikalar gibi özelliklere ihtiyacınız varsa uygundur. Birçok ekip özyineleme için Unbound'ı, yetkili işlemler için ise BIND9 veya PowerDNS'i kullanır.

Yetkili DNS sunucumu nasıl güvenli hale getirebilirim?

Özyinelemeyi devre dışı bırakın, TSIG ve IP ACL'leri ile aktarımları sınırlayın, DNSSEC imzalama özelliğini etkinleştirin, minimum yanıt sürelerini ve hız sınırlamasını açın, yazılımı güncel tutun ve günlükleri izleyin. Yetkili sunucuları halka açık olduğunda anycast veya DDoS saldırılarına dayanıklı bir ağın arkasına yerleştirin.

DNS'in doğru çalışması için hangi portların açık olması gerekir?

Sorgular için UDP 53 portunu ve büyük yanıtlar, bölge transferleri ve DNSSEC için TCP 53 portunu açın. TCP/53 portuna her iki yönde de izin verildiğinde birçok "gizemli" hata ortadan kalkar.

Yalnızca dahili ağ için DNSSEC'e ihtiyacım var mı?

Yalnızca dahili kullanım için çözümleyiciler için, istemcileri sahte harici yanıtlardan korumak amacıyla DNSSEC doğrulamasını etkinleştirin. Tamamen dahili bölgeler için DNSSEC isteğe bağlıdır, ancak özel bir PKI'niz varsa ve anahtarları yönetmek için değişiklik kontrolleriniz varsa giderek daha çok önerilmektedir.

Aynı sunucuda özyinelemeli ve yetkili DNS'i birlikte çalıştırabilir miyim?

Mümkün ancak en iyi uygulama değil. Ayrıştırma, saldırı yüzeyini ve operasyonel etki alanını azaltır. Birleştirmek zorundaysanız, BIND görünümleri ve katı ACL'ler kullanın; özyinelemenin herkese açık bir şekilde ifşa edilmediğinden ve günlük kaydının rolleri açıkça ayırt ettiğinden emin olun.

Yukarıdaki adımlarla, Linux DNS sunucunuzun yapılandırması 2026 yılı için üretime hazır hale gelir. Uzman yardımı veya tamamen yönetilen bir kurulum istiyorsanız, QloudHostMühendislerimiz, çalışma süresi, performans ve uyumluluk hedeflerinize uygun güvenli DNS yığınları tasarlayabilir, kurabilir ve işletebilir.

Leave a Comment