İçeriğe geç

(B) Ağ Yönetimi

PowerDNS Recursor Yuksek Performansli Dns Onbellek Kurulumu

5 dk okuma

DNS çözümlemesi her ağ altyapısının omurgasını oluşturur. İstemciler her web sayfası açışında, her servis erişiminde DNS sunucusuna sorgu gönderir. Bu sorguların gecikme süresi kullanıcı deneyimini doğrudan etkiler. PowerDNS Recursor, açık kaynak dünyasının en performanslı DNS önbellek çözümlerinden biridir. C++ ile yazılmış, çoklu iş parçacığı destekleyen bu yazılım, saniyeler içinde binlerce sorguyu yanıtlayabilecek kapasitededir.

Neden PowerDNS Recursor

Geleneksel BIND sunucuları karmaşık yapılandırması ve yüksek kaynak tüketimiyle bilinir. PowerDNS Recursor, minimal bellek ayak izi ve yüksek throughput değerleriyle farklılaşır. Geliştiriciler dört çekirdekli bir Xeon 3GHz sistemde saniyede 400 bin gerçek paketin yeniden oynatıldığı bir ölçüm bildiriyor. DNSSEC desteği yerleşik olarak gelir, ek paket kurulumu gerektirmez.

Daemon olarak çalışır, arka planda sürekli dinleme yapar. DNS portu 53 üzerinden hem UDP hem TCP sorgularını kabul eder. Önbellek mekanizması agresif şekilde çalışır; gelen yanıtları TTL değerine göre saklar ve sonraki sorguları doğrudan bellekten yanıtlar.

Kurulum Süreci

Debian tabanlı sistemlerde kurulum tek komutla tamamlanır:

apt update
apt install pdns-recursor

CentOS veya Rocky Linux ortamında epel reposundan erişim sağlanır:

yum install epel-release
yum install pdns-recursor

Kurulum tamamlandıktan sonra yapılandırma dosyası /etc/powerdns/recursor.conf konumunda bulunur. Dağıtıma göre bu dizin /etc/pdns ya da /etc/pdns-recursor da olabilir. Daemon başlatılmadan önce temel ayarların yapılması gerekir.

Temel Yapılandırma

Recursor.conf dosyası anahtar-değer çiftleri şeklinde düzenlenir. İlk olarak sunucunun dinleyeceği IP adresi belirlenir. Birden fazla IP adresi varsa virgülle ayrılarak yazılır:

local-address=0.0.0.0

Güvenlik açısından kimlerin sorgu gönderebileceği sınırlandırılmalıdır. Varsayılan ayar yalnızca RFC 1918 özel ağlarına izin verir; liste kendi altyapınıza göre daraltılmalı ya da genişletilmelidir:

allow-from=10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

Kayıt önbelleğinin kapasitesi max-cache-entries ile, paket önbelleğinin kapasitesi max-packetcache-entries ile kontrol edilir. Güncel sürümlerde varsayılanlar sırasıyla 1000000 ve 500000 kadardır; büyük ölçekli ortamlarda bu değerler ihtiyaca göre ayarlanır:

max-cache-entries=1000000
max-packetcache-entries=500000

DNS kayıtlarının önbellekte kalma süresi iki parametreyle kontrol edilir. Pozitif yanıtlar için max-cache-ttl, olumsuz yanıtlar (NXDOMAIN) için max-negative-ttl ayarlanır:

max-cache-ttl=86400
max-negative-ttl=3600

İleriye Gönderme Yapılandırması

Bazı bölgeler için özel DNS sunucularına yönlendirme yapılması gerekebilir. İç ağdaki Active Directory sunucuları veya özel DNS altyapıları için forward-zones direktifi kullanılır:

forward-zones=internal.example.com=10.53.0.1, corp.local=10.53.0.2

Bu ayar, belirtilen bölgeler için sorguların doğrudan tanımlanan sunuculara iletilmesini sağlar. Bölge sayısı çoksa aynı kayıtlar forward-zones-file ile ayrı bir dosyadan da okutulabilir.

Servisi Başlatma ve Test Etme

Yapılandırma tamamlandıktan sonra servis etkinleştirilir ve başlatılır:

systemctl enable pdns-recursor
systemctl start pdns-recursor

Durum kontrolü için systemctl status komutu kullanılır. Aktif çalışma zamanı istatistikleri rec_control kontrol aracıyla görüntülenebilir:

rec_control get-all

Sorgu testi için dig komutuyla basit bir test yapılır:

dig @127.0.0.1 google.com

İlk sorguda yanıt yetkili DNS sunucusundan alınır ve önbelleğe kaydedilir. Aynı sorgu ikinci kez çalıştırıldığında yanıt süresi önemli ölçüde düşer; bu önbelleğin çalıştığını doğrular.

İzleme ve Performans

PowerDNS yerleşik izleme mekanizmaları sunar. Önbellek isabet oranı, sorgu sayısı gibi değerler rec_control komutuyla istatistik adları sorgulanarak takip edilir:

rec_control get packetcache-hits packetcache-misses cache-entries

Paket önbelleği, DNS yanıtlarının ham halini saklar. Bu mekanizma en yüksek performansı sağlar çünkü her sorgu için yeniden işlem yapılmaz. İstatistik adlarını Prometheus formatında dışa aktarmak da mümkündür; Grafana tarafında izlemek isteyen ekipler bu yolu kullanır.

Loglama ayrıntı düzeyi yapılandırma dosyasında ayarlanır. Aşırı detaylı loglama disk GÇ artırır ve performansı düşürür; üretim ortamında minimal seviye tercih edilir:

loglevel=3

Güvenlik Önlemleri

DNSSEC doğrulaması açık kaynak bir recursorda olmazsa olmazdır. Güncel sürümlerde varsayılan mod olan process DNSSEC kayıtlarını işler ama doğrulama yapmaz; yanıtların bütünlüğünü denetlemek için modun açıkça validate yapılması gerekir. Doğrulama kapatılmak istenirse dnssec=off kullanılır:

dnssec=validate

Sunucu yalnızca yetkili istemcilerden sorgu kabul etmelidir. allow-from direktifi boş bırakılmamalıdır; aksi halde sunucu açık resolver haline gelir ve istismar listelerine düşer. Öte yandan tek bir istemci sorgusunun arkasında kaç giden sorguya izin verileceği max-qperq ile sınırlanır; güncel sürümlerde varsayılanı 50dir. Bu limit bir döngüye ya da bozuk bir yetki zincirine takılan çözümlemenin sonsuza kadar sorgu üretmesini engeller:

max-qperq=50

Ölçeklendirme

Tek PowerDNS Recursor süreci yüksek trafikli ortamlarda bile yeterli olabilir. Ancak yedeklilik için birden fazla sunucu çalıştırılması önerilir. Ön tarafta dnsdist gibi bir yük dengeleyici ya da anycast IP kullanılarak sorgular dağıtılabilir.

PowerDNS Recursor, DNS önbellek ihtiyaçları için güçlü ve esnek bir çözümdür. Minimal yapılandırma ile yüksek performans elde edilir. Önbellek mekanizması, yetkili sunuculara gelen yükü azaltırken istemci tarafında gecikme sürelerini düşürür. Doğru parametrelerle saniyeler içinde binlerce sorguyu yanıtlayabilecek bir altyapı kurulabilir.

Açık kaynak

GitHub projeleri

Tümünü gör
wireguard-server-panel

WireGuard VPN sunucu paneli - İstemci yönetimi, QR kodları ve trafik istatistikleri için kendi sunucunuzda barındırılan web kullanıcı arayüzü (fork, aktif olarak geliştirilmekte)

Go

Laravel-NDFirewall

Rota Kapsamlı Laravel WAF - RCE, SQLi, XSS ve SSRF algılama özelliklerine sahip hafif bir Web Uygulaması Güvenlik Duvarı

PHP

Trustsslroot

Tek komutla çalışan özel PKI oluşturucu - Kendi kendini imzalayan kök CA ve sertifikaları anında oluşturun

Go

node_exporter

Hafif sistem metrikleri aktarıcısı - Güvenli erişim kontrolüne sahip, Linux için durum bilgisi barındırmayan tek ikili dosyalı izleme hizmeti

Rust

ipReconary

IP keşif ve alt ağ analiz aracı - Hızlı ağ taraması ve IP istihbarat toplama

Rust

Cloudfiltred

Cloudflare IP beyaz liste güvenlik duvarı - 80/443 numaralı bağlantı noktalarını yalnızca Cloudflare IP’leriyle sınırlayarak kaynak sunucunuzu doğrudan saldırılara karşı koruyun

Rust

LoadAlertTracker

Hafif sistem yükü izleme arka plan programı - Eşik değerleri aşıldığında Telegram, Discord ve Mattermost üzerinden gerçek zamanlı uyarılar

Rust

ctCertWatch

Sertifika Şeffaflığı günlüğü izleyicisi - Kimlik avı alan adlarını, marka taklitçiliğini ve yetkisiz SSL sertifikalarını gerçek zamanlı olarak tespit eder

Rust

DDNS-FW

Dinamik DNS Güvenlik Duvarı - DDNS aracılığıyla değişen IP adreslerini takip edin ve güvenli erişim kontrolü için güvenlik duvarı kurallarını otomatik olarak güncelleyin

Rust