GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Server PowerDNS dan Admin PowerDNS di Ubuntu 20.04

PowerDNS adalah server nama otoritatif sumber terbuka dan gratis. Itu ditulis dalam C++ dan berjalan di sistem operasi Unix, Linux dan macOS. Ini menggunakan MySQL, MariaDB, PostgreSQL, dan Oracle untuk menyimpan file dan catatan zona.

PowerDNS Admin adalah alat berbasis web yang digunakan untuk mengelola PowerDNS. Anda dapat membuat dan mengelola zona DNS menggunakan browser web. Muncul dengan serangkaian fitur yang kaya. Beberapa di antaranya tercantum di bawah ini:

  • Dukungan IPv4 dan IPv6
  • Halaman status yang menampilkan informasi berguna
  • Buat/perbarui data PTR terbalik secara otomatis
  • Dukungan untuk pembuatan domain massal
  • Dukungan untuk template domain
  • Dukungan DNSec
  • Mendukung DB Lokal, SAML, LDAP, autentikasi pengguna Direktori Aktif

Dalam tutorial ini, kami akan menunjukkan cara menginstal PowerDNS dan admin PowerDNS di server Ubuntu 20.04.

Prasyarat

  • Server yang menjalankan Ubuntu 20.04.
  • Nama domain valid yang ditunjukkan dengan IP server Anda.
  • Sandi root dikonfigurasi untuk server.

Instal dan Konfigurasi Server MariaDB

Sebelum memulai, Anda perlu menginstal server database MariaDB di sistem Anda. Secara default, versi terbaru MariaDB tidak tersedia di repositori default Ubuntu 20.04. Jadi, Anda perlu menambahkan repositori MariaDB ke sistem Anda.

Pertama, instal paket yang diperlukan dengan perintah berikut:

apt-get install software-properties-common gnupg2 -y

Setelah semua paket terinstal, tambahkan kunci penandatanganan MariaDB dengan perintah berikut:

apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

Selanjutnya, tambahkan repositori MariaDB dengan perintah berikut:

add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu fokus utama'

Selanjutnya, instal server MariaDB dengan menjalankan perintah berikut:

apt-get install mariadb-server -y

Setelah terinstal, Anda perlu membuat database dan pengguna untuk PowerDNS.

Pertama, login ke MariaDB dengan perintah berikut:

mysql

Setelah login, buat database dan user dengan perintah berikut:

MariaDB [(none)]> create database pdns;
MariaDB [(none)]> berikan semua pada pdns.* ke [email protected] yang diidentifikasi oleh 'password';

Selanjutnya, flush hak istimewa dan keluar dari shell MariaDB dengan perintah berikut:

MariaDB [(none)]> hak istimewa flush;
MariaDB [(none)]> exit;

Instal PowerDNS

Pertama, Anda harus menonaktifkan layanan yang diselesaikan systemd dari sistem Anda. Anda dapat menonaktifkannya dengan perintah berikut:

systemctl nonaktifkan --now systemd-resolved

Selanjutnya, hapus file resolv.conf default dan buat file baru:

rm -rf /etc/resolv.conf
echo "server nama 8.8.8.8"> /etc/resolv.conf

Selanjutnya, instal server PowerDNS dengan perintah berikut:

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

Setelah PowerDNS diinstal, Anda dapat melanjutkan ke langkah berikutnya.

Konfigurasi PowerDNS

Pertama, Anda perlu mengimpor skema database PowerDNS ke database PowerDNS. Anda dapat mengimpornya dengan perintah berikut:

mysql -u pdnsadmin -p pdns  

Selanjutnya, Anda perlu menentukan detail koneksi database PowerDNS. Anda dapat melakukannya dengan mengedit file pdns.local.gmysql.conf:

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

Ubah baris berikut:

# Konfigurasi MySQL## Luncurkan gmysql backendlaunch+=gmysql# parameter gmysqlgmysql-host=127.0.0.1gmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsadmingmysql-password=passwordgmysql-dnssec=yes# gmysql-socket= 

Simpan dan tutup file, lalu berikan izin yang sesuai untuk file pdns.local.gmysql.conf:

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

Selanjutnya, hentikan server PowerDNS dan verifikasi PowerDNS dengan perintah berikut:

systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

02 Nov 10:43:47 gmysql Koneksi berhasil. Terhubung ke database 'pdns' pada '127.0.0.1'. 02 November 10:43:47 Koneksi gmysql berhasil. Terhubung ke database 'pdns' pada '127.0.0.1'. 02 November 10:43:47 Koneksi gmysql berhasil. Terhubung ke database 'pdns' pada '127.0.0.1'. 02 November 10:43:47 Selesai meluncurkan utas, siap untuk mendistribusikan pertanyaan

Selanjutnya, mulai server PowerDNS dengan perintah berikut:

systemctl start pdns

Pada titik ini, PowerDNS dimulai dan mendengarkan pada port 53. Anda dapat memeriksanya dengan perintah berikut:

ss -alnp4 | grep pdns

Anda akan mendapatkan output berikut:

udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* pengguna:(("pdns_server",pid=33140,fd=5)) tcp DENGARKAN 0 128 0.0.0.0:53 0.0.0.0:* pengguna:(("pdns_server",pid=33140,fd=7)) 

Instal Admin PowerDNS

Di bagian ini, kami akan menunjukkan cara menginstal admin PowerDNS dengan Nginx.

Instal Dependensi yang Diperlukan

Pertama, instal semua dependensi yang diperlukan untuk admin PowerDNS dengan perintah berikut:

apt-get install nginx python3-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential libmariadb-dev git python3- labu -y

Setelah semua dependensi terinstal, tambahkan repositori Node.js dengan perintah berikut:

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

Selanjutnya, instal Node.js dengan perintah berikut:

apt-get install nodejs -y

Selanjutnya, tambahkan penyimpanan benang dengan perintah berikut:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

Selanjutnya, perbarui repositori dan instal Yarn dengan perintah berikut:

apt-get update -y
apt-get install yarn -y

Pada titik ini, semua dependensi yang diperlukan telah diinstal, Anda sekarang dapat melanjutkan ke langkah berikutnya.

Unduh Admin PowerDNS

Selanjutnya, unduh versi terbaru admin PowerDNS dari repositori Git ke direktori root Nginx:

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdns

Selanjutnya, ubah direktori ke direktori yang diunduh dan buat lingkungan virtual Python dengan perintah berikut:

cd /var/www/html/pdns/
virtualenv -p python3 flask

Selanjutnya, aktifkan lingkungan virtual dan instal semua dependensi Python dengan perintah berikut:

source ./flask/bin/activate
pip install -r requirements.txt

Selanjutnya, nonaktifkan dari lingkungan Virtual dengan perintah berikut:

nonaktifkan

Menentukan Koneksi Basis Data

Selanjutnya, Anda perlu menentukan detail koneksi database PowerDNS ke file default_config.py:

nano /var/www/html/pdns/powerdnsadmin/default_config.py

Ubah baris berikut:

SALT ='yoursecretekey'SECRET_KEY ='yoursecretekey'BIND_ADDRESS ='0.0.0.0'PORT =9191HSTS_ENABLED =FalseOFFLINE_MODE =FalseSQLA_DB_USER ='pdnsadmin'SQLA_DB_PASSWORD ='password'SQLA_DB_SQL_SDI'NAME 'ACK_SQLHOST'SQLA_DB Benar

Simpan dan tutup file kemudian ubah direktori ke pdns dan aktifkan lingkungan virtual:

cd /var/www/html/pdns/
source ./flask/bin/activate

Selanjutnya, perbarui database dengan perintah berikut:

ekspor FLASK_APP=powerdnsadmin/__init__.py
upgrade db flask
instalasi benang --pure-lockfile
pembuatan aset flask

Selanjutnya, nonaktifkan lingkungan virtual dengan perintah berikut:

nonaktifkan

Aktifkan PowerDNS Admin API

Admin PowerDNS menggunakan JSON API untuk membaca statistik dan memodifikasi konten zona, metadata, dan materi kunci DNSSEC. Anda dapat mengaktifkannya dengan mengedit file pdns.conf:

nano /etc/powerdns/pdns.conf

Ubah baris berikut:

api=yesapi-key=yoursecretekey

Simpan dan tutup file kemudian restart layanan PowerDNS untuk menerapkan perubahan:

systemctl restart pdns

Konfigurasi Nginx untuk Admin PowerDNS

Selanjutnya, Anda perlu mengonfigurasi Nginx untuk admin PowerDNS. Untuk melakukannya, buat file konfigurasi virtual host Nginx dengan perintah berikut:

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

Tambahkan baris berikut:

server { dengarkan *:80; nama_server pdnsadmin.contoh.com; index index.html index.htm index.php; root /var/www/html/pdns; access_log /var/log/nginx/pdnsadmin_access.log digabungkan; error_log /var/log/nginx/pdnsadmin_error.log; client_max_body_size 10m; client_body_buffer_size 128k; proxy_redirect mati; 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-Diteruskan-Untuk $proxy_add_x_forwarded_for; proxy_headers_hash_bucket_size 64; lokasi ~ ^/static/ { include /etc/nginx/mime.types; root /var/www/html/pdns/powerdnsadmin; lokasi ~* \.(jpg|jpeg|png|gif)$ { berakhir 365 hari; } lokasi ~* ^.+.(css|js)$ { berakhir 7 hari; } } lokasi / { proxy_pass http://unix:/run/pdnsadmin/socket; proxy_read_timeout 120; proxy_connect_timeout 120; proxy_redirect mati; }}

Simpan dan tutup file kemudian periksa Nginx untuk kesalahan sintaks dengan perintah berikut:

nginx -t

Anda akan mendapatkan output berikut:

nginx:file konfigurasi /etc/nginx/nginx.conf sintaksnya oknginx:file konfigurasi /etc/nginx/nginx.conf tes berhasil

Selanjutnya, ubah kepemilikan pdns menjadi www-data:

chown -R www-data:www-data /var/www/html/pdns

Terakhir, restart layanan Nginx untuk menerapkan perubahan:

systemctl restart nginx

Buat File Layanan Systemd untuk Admin PowerDNS

Selanjutnya, Anda perlu membuat file layanan systemd untuk mengelola layanan PowerDNS.

Pertama, buat file layanan pdns dengan perintah berikut:

nano /etc/systemd/system/pdnsadmin.service

Tambahkan baris berikut:

[Unit]Description=PowerDNS-AdminRequires=pdnsadmin.socketAfter=network.target[Service]PIDFile=/run/pdnsadmin/pidUser=pdnsGroup=pdnsWorkingDirectory=/var/www/html/pdnsExecStart=/var/www/html /pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket 'powerdnsadmin:create_app()'ExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/ kill -s TERM $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target

Simpan dan tutup file tersebut kemudian buat file sockt pdnsadmin dengan perintah berikut:

nano /etc/systemd/system/pdnsadmin.socket

Tambahkan baris berikut:

[Unit]Description=PowerDNS-Admin socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.target

Simpan dan tutup file kemudian buat file dan direktori yang diperlukan dengan perintah berikut:

echo "d /run/pdnsadmin 0755 pdns pdns -">> /etc/tmpfiles.d/pdnsadmin.conf
mkdir /run/pdnsadmin/
chown -R pdns:/run/pdnsadmin /
chown -R pdns:/var/www/html/pdns/powerdnsadmin/

Selanjutnya, muat ulang daemon systemd dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, aktifkan layanan pdnsadmin untuk memulai pada sistem reboot dengan perintah berikut:

systemctl aktifkan --now pdnsadmin.service pdnsadmin.socket

Selanjutnya, verifikasi status kedua layanan menggunakan perintah berikut:

systemctl status pdnsadmin.service pdnsadmin.socket

Anda akan mendapatkan output berikut:

? pdnsadmin.service - PowerDNS-Admin Dimuat:dimuat (/etc/systemd/system/pdnsadmin.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Sen 2020-11-02 10:54:19 UTC; 5 detik yang laluDipicu Oleh:? pdnsadmin.socket PID Utama:38881 (gunicorn) Tugas:2 (batas:2353) Memori:62,5 juta CGroup:/system.slice/pdnsadmin.service ??38881 /var/www/html/pdns/flask/bin/python / var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa> ??38898 /var/www/html/pdns/flask/bin/python / var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa>02 November 10:54:19 pdnsadmin.example.com systemd[1]:Dimulai PowerDNS-Admin.Nov 02 10:54:19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Memulai gunicorn 20.0.4Nov 02 10:54 :19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Mendengarkan di:unix:/run/pdnsadmin/socket (38881)02 November 10:54:19 pdnsadmin.example.com gunicorn[38881]:[02-11-2020 10:54:19 +0000] [38881] [INFO] Menggunakan pekerja:syncNov 02 10:54:19 pdnsadmin.example.com gunicorn[ 38898]:[2020-11-02 10:54:19 +0000] [38898] [INFO] Boot pekerja dengan pid:38898? pdnsadmin.socket - Soket PowerDNS-Admin Dimuat:dimuat (/etc/systemd/system/pdnsadmin.socket; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Sen 2020-11-02 10:54:19 UTC; 5 detik yang lalu Pemicu:? pdnsadmin.service Dengarkan:/run/pdnsadmin/socket (Stream) CGroup:/system.slice/pdnsadmin.socketNov 02 10:54:19 pdnsadmin.example.com systemd[1]:Mendengarkan di soket PowerDNS-Admin.

Mengakses UI Web Admin PowerDNS

Sekarang, buka browser web Anda dan akses antarmuka web admin PowerDNS menggunakan URL http://pdnsadmin.example.com . Anda akan diarahkan ke halaman berikut:

Klik Buat akun tombol. Anda akan melihat layar berikut:

Berikan detail pengguna admin Anda dan klik Daftar tombol untuk membuat akun. Anda akan melihat halaman login admin PowerDNS di layar berikut:

Berikan nama pengguna, kata sandi admin Anda, dan klik Masuk tombol. Anda akan melihat antarmuka web admin PowerDNS di halaman berikut:

Di sini, berikan URL API PowerDNS untuk terhubung ke PowerDNS dan mengelolanya. Kemudian, klik tombol Perbarui tombol untuk menyimpan perubahan. Anda akan melihat halaman berikut:

Klik Dasbor tombol. Anda akan melihat dasbor admin PowerDNS di layar berikut:

Kesimpulan

Selamat! Anda telah berhasil menginstal dan mengkonfigurasi admin PowerDNS dan PowerDNS di server Ubuntu 20.04. Sekarang Anda dapat membuat zona dan menambahkan catatan melalui antarmuka web admin PowerDNS.


Ubuntu
  1. Cara Menginstal dan Mengkonfigurasi Server DHCP di Ubuntu 20.04

  2. Cara Menginstal Dan Mengkonfigurasi Server Redis Di Ubuntu

  3. Cara menginstal dan Mengkonfigurasi Mariadb 10 di Ubuntu 20.04

  1. Cara Menginstal dan Mengonfigurasi Server NFS di Ubuntu 20.04

  2. Cara Menginstal dan Mengkonfigurasi VNC di Ubuntu 20.04

  3. Cara Menginstal MariaDB di Ubuntu 22.04

  1. Cara Menginstal MariaDB di Ubuntu 18.04

  2. Cara Menginstal dan Mengkonfigurasi VNC di Ubuntu 18.04

  3. Cara Menginstal dan Mengonfigurasi Server NFS di Ubuntu 18.04