What is PowerDNS?

   PowerDNS, C ++ ile yazılmış ve GPL altında lisanslanmış bir DNS sunucusudur . Çoğu Unix türevinde çalışır. PowerDNS, güvenli açık kaynaklı ve ticari DNS yazılımının lider sağlayıcısıdır. PowerDNS çözümleri, mobil ve sabit hatlı geniş bant operatörleri ile barındırma ve bulut hizmet sağlayıcıları dahil olmak üzere büyük ölçekli DNS hizmet sağlayıcılarına odaklanmıştır. PowerDNS ayrıca pazar lideri satıcıların ölçeklenebilir güvenlik çözümlerini de destekler.

Sağlayıcılar, mükemmel bir kullanıcı deneyimi ve DDoS ile kötü amaçlı yazılım saldırılarına karşı koruma sağlamanın yanı sıra Barındırıcılar ve İSS'ler için internet performansı sağlama konusunda PowerDNS'e güveniyor.

requirements

  • docker
  • docker compose
  • static ip

Daha fazla bilgi için bakınız:

PowerDNS Docker Install

Her şeyden önce, bu kılavuz Docker'ı sisteminize kurduğunuzu varsayar. Bu görüntüden bir kapsayıcı oluşturmaya başlamanıza yardımcı olması için docker-compose veya docker cli'yi kullanabilirsiniz.

Her zamanki gibi kuruluma başlamadan önce sunucu güncelleme işlemlerini gerçekleştirelim.

sudo apt update && sudo apt upgrade -y && sudo reboot 

İhtiyacımız olan gerekli portlara, güvenlik duvarı üzerinden kalıcı olarak izin verelim. 

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

Ubuntu'nun (17.10+) ve Fedora'nın (33+) modern sürümleri, systemd-resolve varsayılan olarak önbelleğe alma DNS çözümleyicisi uygulamak üzere yapılandırılmıştır. Bu, Bind9'un 53 numaralı portu dinlemesini önleyecektir. Bu yüzden aşağıdaki işlemleri gerçekleştirerek çözümleyici şu şekilde devre dışı bırakılmalıdır.

Eski Ubuntu sürümlerinin (yaklaşık 17.04) kullanıcılarının dnsmasq'ı devre dışı bırakması gerekecektir.

sudo sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' /etc/systemd/resolved.conf
sudo sh -c 'rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf'
sudo systemctl restart systemd-resolved 

Şimdi compose.yaml adından bir dosya oluşturun.

cd && mkdir powerdns && cd powerdns && vi compose.yaml

Açılan pencerede aşağıdaki satırları kopyalayın ve example.local yazan yerlere oluşturacağınız domaini yazınız.

version: '2.4'

services:

  pdns-recursor-pgsql:
    image: pschiffe/pdns-recursor:${RECURSOR_TAG:-latest}
    networks:
      - pdns-pgsql
    volumes:
      - /etc/localtime:/etc/localtime:ro
    ulimits:
      nofile:
        soft: 5000
        hard: 5000

  postgres:
    image: postgres:16-alpine
    networks:
      pdns-pgsql:
        aliases:
          - db
          - pgsql
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - pgsql:/var/lib/postgresql/data:Z
    environment:
      - POSTGRES_PASSWORD=my-secret-pw
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres']
      timeout: 10s
      retries: 5

  adminer:
    image: adminer
    networks:
      - pdns-pgsql
    ports:
      - '7988:8080'
    volumes:
      - /etc/localtime:/etc/localtime:ro

  pdns-pgsql-master:
    image: pschiffe/pdns-pgsql:${PDNS_PGSQL_TAG:-latest}
    hostname: ns1.example.com
    networks:
      pdns-pgsql:
        ipv4_address: 172.8.0.20
        aliases:
          - pdns
    ports:
      - '53:53'
      - '52:53/udp'      
    extra_hosts:
      - 'ns1.example.com:172.8.0.20'
      - 'ns2.example.com:172.8.0.21'
    volumes:
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PDNS_gpgsql_password=my-secret-pw
      - PDNS_master=yes
      - PDNS_api=yes
      - PDNS_api_key=secret
      - PDNS_webserver=yes
      - PDNS_webserver_address=0.0.0.0
      - PDNS_webserver_allow_from=172.8.0.0/16
      - PDNS_version_string=anonymous
      - PDNS_default_ttl=1500
      - PDNS_allow_axfr_ips=172.8.0.21
      - PDNS_only_notify=172.8.0.21
    depends_on:
      - postgres

  pdns-pgsql-slave:
    image: pschiffe/pdns-pgsql:${PDNS_PGSQL_TAG:-latest}
    hostname: ns2.example.com
    networks:
      pdns-pgsql:
        ipv4_address: 172.8.0.21
    extra_hosts:
      - 'ns1.example.com:172.8.0.20'
      - 'ns2.example.com:172.8.0.21'
    volumes:
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PDNS_gpgsql_dbname=powerdnsslave
      - PDNS_gpgsql_password=my-secret-pw
      - PDNS_slave=yes
      - PDNS_superslave=yes
      - PDNS_webserver=yes
      - PDNS_webserver_address=0.0.0.0
      - PDNS_webserver_allow_from=172.8.0.0/16
      - PDNS_version_string=anonymous
      - PDNS_disable_axfr=yes
      - PDNS_allow_notify_from=172.8.0.20
      - SUPERMASTER_IPS=172.8.0.20
    depends_on:
      - postgres
      - pdns-pgsql-master

  pdns-admin-pgsql:
    image: pschiffe/pdns-admin
    networks:
      pdns-pgsql:
        aliases:
          - pdns-admin
    ports:
      - '7989:8080'
    volumes:
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PDNS_ADMIN_SQLA_DB_TYPE=postgres
      - PDNS_ADMIN_SQLA_DB_HOST=pgsql
      - PDNS_ADMIN_SQLA_DB_PORT=5432
      - PDNS_ADMIN_SQLA_DB_USER=postgres
      - PDNS_ADMIN_SQLA_DB_PASSWORD=my-secret-pw
      - PDNS_VERSION=4.8
      - PDNS_API_KEY=secret
    depends_on:
      - postgres
      - pdns-pgsql-master

networks:
  pdns-pgsql:
    ipam:
      config:
        - subnet: 172.8.0.0/16
          gateway: 172.8.0.1

volumes:
  pgsql:

Kayıt edip çıktıktan sonra. PowerDNS oluşturmak ve başlatmak için aşağıdaki komutu çalıştırın.

docker-compose up -d

Bir browser üzerinden ip ve port bilgilerini yazarak uygulamaya erişebilirsiniz.  Açılan pencere bir hesap oluşturmak için, Create an account seçeneğine tıklayın.

http://docker_ip:7989/

Hesap için gerekli bilgileri doldurup, Register butonuna basalım.

Hesap oluşturma işleminden sonra PowerDNS'e giriş yapalım. Burada en önemli ve ilk yapmamız gerek şey, Create an account kısmını giriş panelinden kaldırmaktır. Aksi halde isteyen herkez hesap oluşturabilir. Bunun için, Settings kısmından Local Authentication Settings altında bulunan Allow users to sign up seçeneğini kaldırıp Save butonuna basmanız yeterli olacaktır. 

Girişteki OTP kaldırmak isterseniz, yine Settings altında bulunan Basic seçeneğine tıklayı, otp_field_enabled kısmını Turn Off ile kapatabilirsiniz.

Alan adlarımızı oluşturmak için, Create zone kısmına tıklayın. Açılan pencerede domain'i yazın, ardından Zone Type kısmına Primary olarak belirleyin. Kendisi otomatik olarak Secondary kayıtları gönderecektir. Create zone butonuna basarak işlemi tamamlayınız.

Oluşturduğunuz zone'lar Dashboard'a düşecektir. Kayıtları oluşturmak için ilgili domaine tıklayınız.

Add Record butonuna basarak ilk kaydınızı oluşturun.

Kayıt işlemini kalıcı olarak tamamlamak için, Save Changes butonuna basınız.

Eğer her şey yolunda ise, Client cihazın DNS adresine PowerDNS sunucunuzun ip adresini yazarsanız kayıtları çözümleyecektir.

 

Blog'a Dön