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 pdnsSelanjutnya, 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.confUbah 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.confSelanjutnya, hentikan server PowerDNS dan verifikasi PowerDNS dengan perintah berikut:
systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9Jika 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 pertanyaanSelanjutnya, mulai server PowerDNS dengan perintah berikut:
systemctl start pdnsPada titik ini, PowerDNS dimulai dan mendengarkan pada port 53. Anda dapat memeriksanya dengan perintah berikut:
ss -alnp4 | grep pdnsAnda 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 -ySetelah 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 -ySelanjutnya, 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.listSelanjutnya, perbarui repositori dan instal Yarn dengan perintah berikut:
apt-get update -y
apt-get install yarn -yPada 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/pdnsSelanjutnya, ubah direktori ke direktori yang diunduh dan buat lingkungan virtual Python dengan perintah berikut:
cd /var/www/html/pdns/
virtualenv -p python3 flaskSelanjutnya, aktifkan lingkungan virtual dan instal semua dependensi Python dengan perintah berikut:
source ./flask/bin/activate
pip install -r requirements.txtSelanjutnya, nonaktifkan dari lingkungan Virtual dengan perintah berikut:
nonaktifkanMenentukan Koneksi Basis Data
Selanjutnya, Anda perlu menentukan detail koneksi database PowerDNS ke file default_config.py:
nano /var/www/html/pdns/powerdnsadmin/default_config.pyUbah 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 BenarSimpan dan tutup file kemudian ubah direktori ke pdns dan aktifkan lingkungan virtual:
cd /var/www/html/pdns/
source ./flask/bin/activateSelanjutnya, perbarui database dengan perintah berikut:
ekspor FLASK_APP=powerdnsadmin/__init__.py
upgrade db flask
instalasi benang --pure-lockfile
pembuatan aset flaskSelanjutnya, nonaktifkan lingkungan virtual dengan perintah berikut:
nonaktifkanAktifkan 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.confUbah baris berikut:
api=yesapi-key=yoursecretekeySimpan dan tutup file kemudian restart layanan PowerDNS untuk menerapkan perubahan:
systemctl restart pdnsKonfigurasi 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.confTambahkan 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 -tAnda akan mendapatkan output berikut:
nginx:file konfigurasi /etc/nginx/nginx.conf sintaksnya oknginx:file konfigurasi /etc/nginx/nginx.conf tes berhasilSelanjutnya, ubah kepemilikan pdns menjadi www-data:
chown -R www-data:www-data /var/www/html/pdnsTerakhir, restart layanan Nginx untuk menerapkan perubahan:
systemctl restart nginxBuat 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.serviceTambahkan 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.targetSimpan dan tutup file tersebut kemudian buat file sockt pdnsadmin dengan perintah berikut:
nano /etc/systemd/system/pdnsadmin.socketTambahkan baris berikut:
[Unit]Description=PowerDNS-Admin socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.targetSimpan 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-reloadSelanjutnya, aktifkan layanan pdnsadmin untuk memulai pada sistem reboot dengan perintah berikut:
systemctl aktifkan --now pdnsadmin.service pdnsadmin.socketSelanjutnya, verifikasi status kedua layanan menggunakan perintah berikut:
systemctl status pdnsadmin.service pdnsadmin.socketAnda 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.
Pantau Lalu Lintas Jaringan dengan vnStat di Ubuntu 20.04 Cara Mengatur Penyelesai DNS Lokal menggunakan Dnsmasq di Ubuntu 20.04Ubuntu