GNU/Linux >> Belajar Linux >  >> Linux

Instal PowerDNS di Ubuntu 18.04, 20.04, &22.04

Pendahuluan

PowerDNS adalah solusi server DNS open-source yang membantu menyelesaikan namespace. PowerDNS mendukung ketersediaan tinggi, redundansi data, dan berbagai backend, yang menjadikannya solusi yang fleksibel dan tangguh.

Panduan ini menunjukkan cara menginstal PowerDNS dan antarmuka Admin PowerDNS di Ubuntu.

Prasyarat

  • Akses ke terminal.
  • Akses ke pengguna root.
  • Editor teks, seperti nano.
  • Peramban web untuk mengakses Admin PowerDNS.

Mengapa Menggunakan PowerDNS?

PowerDNS menyediakan dua solusi server nama:

  • Server Resmi , yang menggunakan database untuk menyelesaikan kueri tentang domain.
  • Rekursor , yang berkonsultasi dengan server otoritatif lainnya untuk menyelesaikan kueri.

Server nama lain menggabungkan dua fungsi secara otomatis. PowerDNS menawarkannya secara terpisah, dan memungkinkan perpaduan dua solusi dengan mulus untuk pengaturan modular.

Selain itu, PowerDNS adalah open source, berfungsi sama baiknya untuk volume kueri kecil dan besar, dan menawarkan banyak kemungkinan untuk solusi backend.

Menginstal PowerDNS di Ubuntu 18.04, 20.04, &22.04

Ikuti langkah-langkah di bawah ini untuk menginstal dan mengkonfigurasi PowerDNS dengan server MariaDB sebagai database backend. Selain itu, langkah-langkah tersebut memandu pengguna melalui penyiapan antarmuka web dan API PowerDNS Admin.

Langkah 1:Instal dan Konfigurasikan Server MariaDB

Untuk menginstal dan mengkonfigurasi MariaDB, lakukan hal berikut:

1. Perbarui dan tingkatkan paket sistem:

sudo apt update && sudo apt upgrade

2. Instal server dan klien MariaDB dengan:

sudo apt install mariadb-server mariadb-client

Catatan: Server database lain yang mungkin termasuk PostgreSQL, MySQL, dan database relasional lainnya.

Tunggu penginstalan selesai sebelum melanjutkan.

3. Hubungkan ke MariaDB dengan:

sudo mysql

Terminal terhubung ke sesi database.

4. Buat database untuk server nama PowerDNS:

create database pda;

Catatan: Jika menggunakan nama database yang berbeda, ubah semua perintah konsekuen yang sesuai.

5. Berikan semua hak istimewa ke pda pengguna dan berikan kata sandi pengguna:

grant all privileges on pda.* TO 'pda'@'localhost' identified by 'YOUR_PASSWORD_HERE';
flush privileges;

6. Hubungkan ke database:

use pda;

7. Gunakan kueri SQL berikut untuk membuat tabel untuk pda basis data:

CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT UNSIGNED DEFAULT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE UNIQUE INDEX name_index ON domains(name);


CREATE TABLE records (
  id                    BIGINT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX ordername ON records (ordername);


CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB CHARACTER SET 'latin1';


CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  comment               TEXT CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);


CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);


CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX domainidindex ON cryptokeys(domain_id);


CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

8. Konfirmasikan bahwa tabel telah dibuat dengan:

show tables;

Outputnya mencantumkan tabel yang tersedia.

9. Keluar dari koneksi database:

exit;

Perintah mengembalikan sesi ke terminal.

Langkah 2:Instal PowerDNS

Untuk menginstal PowerDNS di Ubuntu, lakukan hal berikut:

1. Beralih ke pengguna root:

sudo su -

Sesi terminal berubah menjadi pengguna root.

Catatan: Pelajari tentang perbedaan antara sudo dan su.

2. systemd-resolved service menyediakan resolusi nama untuk aplikasi lokal. PowerDNS menggunakan layanannya sendiri untuk resolusi nama.

Nonaktifkan systemd-resolved layanan dengan:

systemctl disable --now systemd-resolved

Output mengkonfirmasi penghapusan layanan.

3. Hapus file konfigurasi layanan sistem dengan:

rm -rf /etc/resolv.conf

4. Buat resolv.conf baru berkas:

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

Menambahkan server nama Google memastikan resolusi DNS.

5. Instal server PowerDNS dan paket backend database dengan:

apt-get install pdns-server pdns-backend-mysql -y

Tunggu hingga penginstalan selesai sebelum melanjutkan.

Langkah 3:Konfigurasi PowerDNS

Konfigurasikan file PowerDNS lokal untuk terhubung ke database:

1. Buka file konfigurasi untuk mengedit:

nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf

2. Tambahkan informasi berikut ke file:

# MySQL Configuration
#
# Launch gmysql backend
launch+=gmysql

# gmysql parameters
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=pda
gmysql-user=pda
gmysql-password=YOUR_PASSWORD_HERE
gmysql-dnssec=yes
# gmysql-socket=

Tukarkan nama database, user, dan password dengan parameter yang benar jika menggunakan parameter yang berbeda. Simpan dan tutup file.

3. Ubah izin file:

chmod 777 /etc/powerdns/pdns.d/pdns.local.gmysql.conf

4. Hentikan pdns layanan:

systemctl stop pdns

5. Uji koneksi ke database:

pdns_server --daemon=no --guardian=no --loglevel=9

Output menunjukkan koneksi yang berhasil. Tekan CTRL +C untuk keluar dari pengujian.

6. Mulai layanan:

systemctl start pdns

7. Cek koneksi dengan perintah ss:

ss -alnp4 | grep pdns

Verifikasi port TCP/UDP UCONN terbuka dan dalam LISTEN /UCONN negara.

Langkah 4:Instal Ketergantungan Admin PowerDNS

Admin PowerDNS membantu mengelola PowerDNS melalui antarmuka web. Untuk menginstal dasbor secara lokal, lakukan hal berikut:

1. Instal paket pengembangan Python:

apt install python3-dev

2. Instal dependensi:

apt install -y git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https python3-venv build-essential curl

3. Ambil setup Node.js:

curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

4. Instal Node.js dengan:

apt install -y nodejs

5. Selanjutnya, instal manajer paket Benang. Ambil kunci publik Yarn dan tambahkan ke apt :

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

Benang membantu membangun file aset.

6. Tambahkan Benang ke daftar sumber:

echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

7. Perbarui daftar sumber yang tepat:

apt update -y

8. Instal Benang dengan:

apt install yarn -y

9. Mengkloning repositori PowerDNS Admin Git ke /opt/web/powerdns-admin :

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin

Jika menggunakan direktori yang berbeda, tukar direktori tujuan di perintah dan di semua tampilan berikutnya.

10. Arahkan ke direktori Git kloning:

cd /opt/web/powerdns-admin

11. Buat lingkungan virtual Python:

python3 -mvenv ./venv

12. Aktifkan lingkungan virtual dengan:

source ./venv/bin/activate

13. Tingkatkan pip ke versi terbaru:

pip install --upgrade pip

Manajer paket pip membantu menginstal persyaratan Python tambahan.

14. Instal persyaratan dari requirements.txt berkas:

pip install -r requirements.txt

Setelah menginstal semua persyaratan, Admin PowerDNS memerlukan konfigurasi tambahan sebelum dijalankan.

Langkah 5:Konfigurasi dan Jalankan Admin PowerDNS

Untuk mengonfigurasi dan memulai Admin PowerDNS pada instans lokal, lakukan hal berikut:

1. Gunakan perintah cp untuk menyalin contoh development.py File Python ke production.py :

cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py

2. Buka production.py file untuk diedit:

nano /opt/web/powerdns-admin/configs/production.py

3. Edit baris berikut:

#import urllib.parse

SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd2'

SQLA_DB_PASSWORD = 'changeme'

4. Batalkan komentar impor perpustakaan, berikan kunci rahasia yang dibuat secara acak, dan berikan kata sandi basis data yang benar.

import urllib.parse

SECRET_KEY = '\x19\xc7\xd8\xa7$\xb6P*\xc6\xb8\xa1E\x90P\x12\x95'

SQLA_DB_PASSWORD = 'YOUR_PASSWORD_HERE'

Catatan: Hasilkan kunci acak menggunakan Python:

python3 -c "import os; print(os.urandom(16))"

Salin dan tempel hasilnya ke SECRET_KEY nilai.

Simpan dan tutup file.

5. Ekspor variabel konfigurasi aplikasi produksi:

export FLASK_CONF=../configs/production.py

6. Ekspor variabel aplikasi labu:

export FLASK_APP=powerdnsadmin/__init__.py

7. Tingkatkan skema database:

flask db upgrade

8. Instal dependensi proyek:

yarn install --pure-lockfile

9. Bangun aset aplikasi flask:

flask assets build

Tunggu hingga pembangunan selesai.

10. Jalankan aplikasi dengan:

./run.py

Biarkan aplikasi berjalan.

11. Aplikasi saat ini berjalan di localhost pada port 9191 . Kunjungi alamat berikut:

http://localhost:9191

Layar masuk untuk Admin PowerDNS ditampilkan. Saat ini, tidak ada pengguna, dan pengguna pertama yang Anda daftarkan adalah akun administrator.

12. Di terminal, keluar dari lingkungan virtual dan keluar dari pengguna root dengan:

exit

Terminal kembali ke keadaan biasa.

Langkah 6:Buat Layanan Admin PowerDNS

Konfigurasikan Admin PowerDNS untuk dijalankan saat startup:

1. Buat file layanan systemd untuk Admin PowerDNS:

sudo nano /etc/systemd/system/powerdns-admin.service

2. Tambahkan konten berikut:

[Unit]
Description=PowerDNS-Admin
Requires=powerdns-admin.socket
After=network.target

[Service]
User=root
Group=root
PIDFile=/run/powerdns-admin/pid
WorkingDirectory=/opt/web/powerdns-admin
ExecStartPre=/bin/bash -c '$$(mkdir -p /run/powerdns-admin/)'
ExecStart=/opt/web/powerdns-admin/venv/bin/gunicorn --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket 'powerdnsadmin:create_app()'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3. Buat file satuan:

sudo systemctl edit --force powerdns-admin.service

4. Tambahkan berikut ini:

[Service]
Environment="FLASK_CONF=../configs/production.py"

5. Buat file soket:

sudo nano /etc/systemd/system/powerdns-admin.socket

6. Masukkan informasi berikut:

[Unit]
Description=PowerDNS-Admin socket

[Socket]
ListenStream=/run/powerdns-admin/socket

[Install]
WantedBy=sockets.target

7. Buat file lingkungan:

sudo nano /etc/tmpfiles.d/powerdns-admin.conf

8. Tambahkan informasi berikut:

d /run/powerdns-admin 0755 pdns pdns -

9. Muat ulang daemon:

sudo systemctl daemon-reload

10. Mulai dan aktifkan layanan dan soket:

sudo systemctl start powerdns-admin.service powerdns-admin.socket
sudo systemctl enable powerdns-admin.service powerdns-admin.socket

11. Periksa statusnya dengan:

sudo systemctl status powerdns-admin.service powerdns-admin.socket

Layanan ditampilkan sebagai berjalan tanpa kesalahan.

Langkah 7:Instal dan Konfigurasi Nginx

Untuk mengonfigurasi Admin PowerDNS agar berjalan di Nginx, lakukan hal berikut:

1. Instal Nginx dengan:

sudo apt install nginx -y

2. Edit file konfigurasi Nginx:

sudo nano /etc/nginx/conf.d/pdns-admin.conf

3. Tambahkan informasi berikut:

server {
  listen *:80;
  server_name               localhost;

  index                     index.html index.htm index.php;
  root                      /opt/web/powerdns-admin;
  access_log                /var/log/nginx/powerdns-admin.local.access.log combined;
  error_log                 /var/log/nginx/powerdns-admin.local.error.log;

  client_max_body_size              10m;
  client_body_buffer_size           128k;
  proxy_redirect                    off;
  proxy_connect_timeout             90;
  proxy_send_timeout                90;
  proxy_read_timeout                90;
  proxy_buffers                     32 4k;
  proxy_buffer_size                 8k;
  proxy_set_header                  Host $host;
  proxy_set_header                  X-Real-IP $remote_addr;
  proxy_set_header                  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_headers_hash_bucket_size    64;

  location ~ ^/static/  {
    include  /etc/nginx/mime.types;
    root /opt/web/powerdns-admin/powerdnsadmin;

    location ~*  \.(jpg|jpeg|png|gif)$ {
      expires 365d;
    }

    location ~* ^.+.(css|js)$ {
      expires 7d;
    }
  }

  location / {
    proxy_pass            http://unix:/run/powerdns-admin/socket;
    proxy_read_timeout    120;
    proxy_connect_timeout 120;
    proxy_redirect        off;
  }

}

Jika menggunakan nama server yang berbeda, ubah localhost ke alamat server Anda.

4. Konfirmasikan bahwa file tidak memiliki kesalahan sintaks:

nginx -t

5. Ubah kepemilikan powerdns-admin ke www-data :

sudo chown -R www-data:www-data /opt/web/powerdns-admin

6. Mulai ulang layanan Nginx:

sudo systemctl restart nginx

7. Akses halaman admin PowerDNS melalui browser:

localhost

Jika menautkan ke alamat yang berbeda, gunakan alamat yang disediakan di file konfigurasi Nginx.

Langkah 8:Konfigurasikan PowerDNS API

Untuk mengonfigurasi API PowerDNS, lakukan hal berikut:

1. Masuk ke Admin PowerDNS melalui browser. Jika dijalankan untuk pertama kalinya, buat pengguna baru terlebih dahulu. Pengguna pertama secara otomatis menjadi administrator.

2. Buka Kunci API s di menu sebelah kiri.

3. Klik Tambahkan Kunci+ tombol.

4. Peran bidang default ke Administrator pengguna. Tambahkan deskripsi opsional untuk kunci.

5. Klik Buat Kunci untuk menghasilkan kunci API.

6. Sebuah jendela popup mencetak kunci. Salin kunci dan tekan Konfirmasi untuk melanjutkan.

7. Navigasikan ke Dasbor halaman.

8. Masukkan domain dan kunci API. Simpan perubahannya.

9. Aktifkan API dalam konfigurasi PowerDNS. Buka file konfigurasi di terminal:

nano /etc/powerdns/pdns.conf

10. Batalkan komentar dan ubah baris berikut:

api=yes
api-key=yoursecretekey
webserver=yes

11. Simpan perubahan dan tutup nano. API sudah disiapkan dan siap digunakan.

Kesimpulan

Setelah melalui langkah-langkah dalam panduan ini, Anda telah menyiapkan PowerDNS, antarmuka web Admin PowerDNS di Nginx, dan menghubungkan API PowerDNS.

Selanjutnya, pelajari tentang berbagai jenis data DNS atau praktik terbaik keamanan DNS.


Linux
  1. Instal GitLab di Ubuntu 18.04

  2. Instal Nginx di Ubuntu

  3. Instal Qt di Ubuntu

  1. Instal Podman di Ubuntu

  2. Hal-hal yang harus diinstal di Ubuntu 20.04

  3. Cara Menginstal R di Ubuntu 20.04

  1. Ubuntu 20.04 Hadoop

  2. Cara Menginstal Go di Ubuntu 18.04

  3. Cara Menginstal R di Ubuntu 18.04