Bu yazı, PowerDNS’nin Debian 11/Debian 10’a nasıl kolayca kurulacağı ve kullanılacağı hakkındadır. PowerDNS, “ açık kaynaklı DNS yazılımı” Hem Authoritative Server hem de Recursor DNS ürünlerini sağlar.
PowerDNS;
- çok yüksek alan çözünürlüğü performansı sunar.
- basit bölge dosyalarından ilişkisel veritabanlarına ve yük dengeleme/yük devretme algoritmalarına kadar çok sayıda farklı arka ucu destekler.
- daha iyi güvenlik özellikleri sunar.
- kaynak kodu oldukça küçüktür ve bu da denetimi kolaylaştırır.
- hem bir kurulumun ölçeklenebilirliğini belirlemede hem de sorunları tespit etmede yardımcı olan, çalışması hakkında birçok istatistik verir.
PowerDNS ‘nin Debian 10/11’e Kurulumu ve Ayarlanması
Sistem Güncellemesini Çalıştırın
Başlamak için sistem paketi önbelleğinizi güncelleyin.
apt update
PowerDNS İlişkisel Veritabanını Yükleyin
Yukarıda belirtildiği gibi, yetkili PowerDNS sunucusu MySQL, PostgreSQL, Oracle ve BIND bölge dosyaları gibi veritabanı arka uçlarından ortak işlemlere ve JSON API’lerine kadar farklı arka uçları destekler .
Bu yazıda, ilişkisel veritabanlarından biri, özellikle MariaDB kullanılacaktır.
Bu nedenle, MariaDB’nin en son ve kararlı yayın sürümünü yüklemek için aşağıdaki komutları çalıştırın.
apt install software-properties-common gnupg2 -ywget -qO- https://mariadb.org/mariadb_release_signing_key.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/mariadb_release_signing_key.gpgArdından, MariaDB depoları sitesine gidin ve kurulum aynalarınızı seçin. Bu kurulumda ukfast.co.uk aynalarını kullanıyoruz .
echo "deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.6/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/mariadb.listSistem paketi önbelleğini güncelleyin ve MariaDB 10.6’yı Debian 11/Debian 10’a yükleyin;
apt updateapt install mariadb-server -yKurulum tamamlandıktan sonra, anonim kullanıcıları kaldırmak ve veritabanlarını test etmek için ilk MySQL güvenlik komut dosyasını çalıştırın, uzaktan root oturumu açmaya izin vermeyin.
mysql_secure_installationsystemd-resolved Hizmetini devre dışı bırakın
systemd-resolved hizmeti , yerel uygulamalara ağ adı çözümlemesi sağlar . Bunun yerine PowerDNS kullanmak istiyoruz
systemctl disable --now systemd-resolvedKurulumu yapabilmeniz için resolv.conf dosyasını özel DNS sunucusu ayrıntılarıyla güncelleyin.
echo "nameserver 8.8.8.8" > /etc/resolv.confArdından, PowerDNS’yi Debian 10/11’e yükleyin. PowerDNS, pdns-server paket tarafından sağlanır.
En son sürümü yüklediğinizden emin olmak için PowerDNS depolarını yüklemeniz gerekir.
PowerDNS 4.5, bu yazı itibariyle mevcut kararlı sürümdür. Dolayısıyla aşağıdaki repolar;
echo "deb [arch=amd64] http://repo.powerdns.com/debian $(lsb_release -sc)-auth-45 main" > /etc/apt/sources.list.d/pdns.listcat > /etc/apt/preferences.d/pdns << EOL
Package: pdns-*
Pin: origin repo.powerdns.com
Pin-Priority: 600
EOLwget -qO- https://repo.powerdns.com/FD380FBB-pub.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/pdns.gpgapt updateapt install pdns-serverAyrıca PowerDNS MySQL arka ucunu da yüklemeniz gerekir;
apt install pdns-backend-mysqlPowerDNS Veritabanı Oluşturun
PowerDNS ve MySQL arka uç paketleri yüklendiğine göre, MariaDB’de oturum açın ve PowerDNS name server için bir veritabanı oluşturun.
mysql -u rootTercih ettiğiniz veritabanı adlarını ve veritabanı kullanıcı adlarını kullandığınızdan emin olun. Burada kullanılan isimler standart değildir.
create database kifarunixdemopdns;Bir PowerDNS veritabanı kullanıcısı oluşturun ve PowerDNS veritabanındaki tüm ayrıcalıkları verin. Parolayı isteğinize göre belirleyin.
grant all on kifarunixdemopdns.* to pdnsadmin@localhost identified by 'PdnSPassW0rd';Ayrıcalık tablolarını yeniden yükleyin ve veritabanından çıkın;
flush privileges;
quitPowerDNS Veritabanı Şemasını İçe Aktarın
Varsayılan PowerDNS veritabanı şeması, /usr/share/pdns-backend-mysql/schema/ dizini altında schema.mysql.sql olarak bulunur. Bu şemayı yukarıda oluşturulan PowerDNS veritabanına aktarmanız gerekir;
mysql -u pdnsadmin -p kifarunixdemopdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sqlPowerDNS veritabanı şeması içe aktarımını doğrulamak için kullanılabilir tabloları listelemeye çalışın;
mysqlshow kifarunixdemopdnsDatabase: kifarunixdemopdns +----------------+ | Tables | +----------------+ | comments | | cryptokeys | | domainmetadata | | domains | | records | | supermasters | | tsigkeys |
PowerDNS Veritabanı Bağlantı Ayrıntılarını Yapılandırma
PowerDNS veritabanı bağlantı ayrıntılarını tanımlamak için bir yapılandırma dosyası oluşturun. Özellikleri size uygun şekilde değiştirin.
cat > /etc/powerdns/pdns.d/pdns.local.gmysql.conf << 'EOL' # MySQL Configuration # # Launch gmysql backend launch+=gmysql # gmysql parameters gmysql-host=127.0.0.1 gmysql-port=3306 gmysql-dbname=kifarunixdemopdns gmysql-user=pdnsadmin gmysql-password=PdnSPassW0rd gmysql-dnssec=yes # gmysql-socket= EOL
Veritabanı bağlantı ayrıntılarının izinlerini ayarlayın.
chown pdns: /etc/powerdns/pdns.d/pdns.local.gmysql.confchmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.confPowerDNS veritabanı bağlantısını doğrulayın
PowerDNS zaten çalışıyorsa, durdurun ve veritabanına bağlanıp bağlanamadığını doğrulamak için ön planda çalıştırın;
systemctl stop pdns.service
pdns_server --daemon=no --guardian=no --loglevel=9PowerDNS’i yeniden başlatın
PDNS’nin arka planda çalışmasını durdurmak için Ctrl+C tuşlarına basın.
Yapılan değişiklikleri uygulamak için PowerDNS’i yeniden başlatın.
systemctl restart pdnsDNS bağlantı noktası UDP/TCP bağlantı noktası 53’ün açık olduğunu doğrulayın
ss -alnp4 | grep pdnsudp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("pdns_server",pid=9986,fd=5))
tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* users:(("pdns_server",pid=9986,fd=7))PowerDNS Forward Zone Kayıtları Oluşturma
Veritabanını doğrudan manipüle ederek bölgeler oluşturabildiğiniz kadar, bunun yerine pdnsutil aracını kullanmanız önerilir.
Bu nedenle, Forward Zone’u oluşturmaya başlamak için;
pdnsutil create-zone kifarunix-demo.comÇeşitli PowerDNS çalışma modları vardır . Yerel çalışma modu, PowerDNS için varsayılan moddur. Çalıştırarak listeleyebilirsiniz;
pdnsutil list-all-zones nativeForward Zone DNS Kayıtlarını PowerDNS Veritabanına Ekleme
Kayıt eklemek için aşağıdaki komutu kullanın;
pdnsutil add-record ZONE NAME TYPE [ttl] contentBölge oluşturduğunuzda, SOA (Yetki Başlangıcı) kaydı otomatik olarak eklenir.
Komutu çalıştırarak detayları gösterebilirsiniz;
pdnsutil list-zone kifarunix-demo.comÖrnek Çıktı;
Nov 25 22:59:40 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
$ORIGIN .
kifarunix-demo.com 3600 IN SOA a.misconfigured.dns.server.invalid hostmaster.kifarunix-demo.com 0 10800 3600 604800 3600SOA biçimi:
primary hostmaster serial refresh retry expire default_ttl- primary: default-soa-name yapılandırma seçeneği
- hostmaster:
hostmaster@domain-name - serial: 0
- refresh: 10800 (3 saat)
- retry 3600 (1 saat)
- expire: 604800 (1 hafta)
- default_ttl: 3600 (1 saat)
SOA’yı buna göre güncelleyin.
export EDITOR=vimpdnsutil edit-zone kifarunix-demo.comYalnızca default- soa-content adını ve ana bilgisayar yöneticisini şöyle görünecek şekilde güncelleyeceğiz;
; Warning - every name in this file is ABSOLUTE!
$ORIGIN .
kifarunix-demo.com 3600 IN SOA ns1.kifarunix-demo.com admin.kifarunix-demo.com 0 10800 3600 604800 3600Dosyayı kaydedip çıkın ve değişiklikleri uygulayın.
[Error] No NS record at zone apex in zone 'kifarunix-demo.com' Checked 1 records of 'kifarunix-demo.com', 1 errors, 0 warnings. There was a problem with your zone Options are: (e)dit your changes, (r)etry with original zone, (a)pply change anyhow, (q)uit: a Detected the following changes: -kifarunix-demo.com 3600 IN SOA a.misconfigured.dns.server.invalid hostmaster.kifarunix-demo.com 0 10800 3600 604800 3600 +kifarunix-demo.com 3600 IN SOA ns1.kifarunix-demo.com admin.kifarunix-demo.com 0 10800 3600 604800 3600 (a)pply these changes, (e)dit again, (r)etry with original zone, (q)uit: a Adding empty non-terminals for non-DNSSEC zone 'kifarunix-demo.com', 1 updates
Ad sunucusu NS kayıtları oluşturun
pdnsutil add-record kifarunix-demo.com @ NS 86400 ns1.kifarunix-demo.comAd Sunucusu için A Kayıtları Ekle.
IP’leri uygun şekilde değiştirin.
pdnsutil add-record kifarunix-demo.com ns1 A 120 192.168.58.22Diğer sistemlerin A kayıtlarını ekleyin;
pdnsutil add-record kifarunix-demo.com news A 120 192.168.59.12pdnsutil add-record kifarunix-demo.com mail A 120 192.168.57.25MX kayıtları ekle
pdnsutil add-record kifarunix-demo.com @ MX 120 "10 mail.kifarunix-demo.com"Buraya kadar iyi, demomuz için bu kadarı yeterli ve kayıtlarımız bu şekilde;
pdnsutil list-zone kifarunix-demo.comNov 25 16:08:18 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed $ORIGIN . kifarunix-demo.com 120 IN MX 10 mail.kifarunix-demo.com. kifarunix-demo.com 86400 IN NS ns1.kifarunix-demo.com. kifarunix-demo.com 3600 IN SOA ns1.kifarunix-demo.com admin.kifarunix-demo.com 0 10800 3600 604800 3600 news.kifarunix-demo.com 120 IN A 192.168.59.12 ns1.kifarunix-demo.com 120 IN A 192.168.58.22
PowerDNS Forward Resolution Doğrulama
Kayıtlar DB’ye yerleştirildikten sonra PowerDNS doğrulaması gerçekleştirelim.
apt install dnsutils -ydig ns1.kifarunix-demo.com @127.0.0.1; <<>> DiG 9.11.5-P4-5.1+deb10u6-Debian <<>> ns1.kifarunix-demo.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63327 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;ns1.kifarunix-demo.com. IN A ;; ANSWER SECTION: ns1.kifarunix-demo.com. 120 IN A 192.168.58.22 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Nov 25 16:09:03 EST 2021 ;; MSG SIZE rcvd: 67
dig MX kifarunix-demo.com @127.0.0.1; <<>> DiG 9.11.5-P4-5.1+deb10u6-Debian <<>> MX kifarunix-demo.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5092 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;kifarunix-demo.com. IN MX ;; ANSWER SECTION: kifarunix-demo.com. 120 IN MX 10 mail.kifarunix-demo.com. ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Nov 25 16:09:27 EST 2021 ;; MSG SIZE rcvd: 68
PowerDNS Reverse Zone Kayıtları Oluşturma
Reverse zone oluşturun;
pdnsutil create-zone 58.168.192.in-addr.arpaReverse zone SOA’sını güncelleyin;
pdnsutil list-zone 58.168.192.in-addr.arpa192.168.58.x/x , 192.168.59.x/x , 192.168.57.x /x gibi birden fazla ağınız varsa, aşağıdaki gibi bir reverse zone oluşturabileceğinizi unutmayın;
pdnsutil create-zone 168.192.in-addr.arpaAdı ve ana bilgisayar yöneticisini, aşağıda gösterildiği gibi görünebilecekleri şekilde güncelleyin.
pdnsutil edit-zone 168.192.in-addr.arpaNov 26 13:46:09 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
$ORIGIN .
168.192.in-addr.arpa 3600 IN SOA ns1.kifarunix-demo.com admin.kifarunix.demo.com 0 10800 3600 604800 3600NS Reverse Zone Kaydı Ekle
pdnsutil add-record 168.192.in-addr.arpa @ NS 86400 ns1.kifarunix-demo.comNS için PTR Kayıtları Ekle
pdnsutil add-record 168.192.in-addr.arpa 22.58 PTR 120 ns1.kifarunix-demo.comDiğer Etki Alanları PTR Kayıtlarını Ekle
pdnsutil add-record 168.192.in-addr.arpa 12.59 PTR 120 news.kifarunix-demo.compdnsutil add-record 168.192.in-addr.arpa 25.57 PTR 120 mail.kifarunix-demo.comŞimdi genel ters kayıtlar şöyle görünmeli;
pdnsutil list-zone 168.192.in-addr.arpaNov 26 13:56:58 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed $ORIGIN . 12.59.168.192.in-addr.arpa 120 IN PTR news.kifarunix-demo.com 168.192.in-addr.arpa 86400 IN NS ns1.kifarunix-demo.com. 168.192.in-addr.arpa 3600 IN SOA ns1.kifarunix-demo.com admin.kifarunix.demo.com 0 10800 3600 604800 3600 22.58.168.192.in-addr.arpa 120 IN PTR ns1.kifarunix-demo.com 25.57.168.192.in-addr.arpa 120 IN PTR mail.kifarunix-demo.com
PowerDNS Reverse Resolution Doğrulama
Veritabanından çıkın ve her şeyin yolunda olup olmadığını doğrulamak için ters DNS sorgularını çalıştırın.
dig -x 192.168.58.22 @127.0.0.1; <<>> DiG 9.11.5-P4-5.1+deb10u6-Debian <<>> -x 192.168.58.22 @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15391 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;22.58.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 22.58.168.192.in-addr.arpa. 120 IN PTR ns1.kifarunix-demo.com. ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Nov 26 13:58:15 EST 2021 ;; MSG SIZE rcvd: 91
dig -x 192.168.57.25 @127.0.0.1; <<>> DiG 9.11.5-P4-5.1+deb10u6-Debian <<>> -x 192.168.57.25 @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10942 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;25.57.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 25.57.168.192.in-addr.arpa. 120 IN PTR mail.kifarunix-demo.com. ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Nov 26 14:00:30 EST 2021 ;; MSG SIZE rcvd: 92
UFW’de DNS Bağlantı Noktasını Açın
Uzak ana bilgisayarların ad çözümlemeleri için PowerDNS’i kullanabilmeleri için, 53/UDP DNS bağlantı noktasını açmanız gerekir;
ufw allow from 192.168.0.0/16 to any port 53 proto udpBu, 192.168.0.0/16 alt ağından DNS sorgularına izin verir.
İstemci Sistemlerinde DNS Sunucusunu Yapılandırma
Test amacıyla, PowerDNS ad sunucusu girişi ile /etc/resolv.conf dosyanızın üzerine yazın.
echo "nameserver 192.168.58.22" > /etc/resolv.conf
İstemci DNS Çözümlemesini Doğrulayın
Ardından, herhangi bir DNS yardımcı programını kullanarak DNS çözümlemesi gerçekleştirin.
dig news.kifarunix-demo.com; <<>> DiG 9.16.22-Debian <<>> news.kifarunix-demo.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27385 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;news.kifarunix-demo.com. IN A ;; ANSWER SECTION: news.kifarunix-demo.com. 120 IN A 192.168.59.12 ;; Query time: 4 msec ;; SERVER: 192.168.58.22#53(192.168.58.22) ;; WHEN: Fri Nov 26 00:39:56 EAT 2021 ;; MSG SIZE rcvd: 68
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.