PowerDNS je bezplatný a open source autoritativní jmenný server. Je napsán v C++ a běží na operačních systémech Unix, Linux a macOS. K ukládání zónových souborů a záznamů využívá MySQL, MariaDB, PostgreSQL a Oracle.
PowerDNS Admin je webový nástroj používaný pro správu PowerDNS. DNS zóny můžete vytvářet a spravovat pomocí webového prohlížeče. Dodává se s bohatou sadou funkcí. Některé z nich jsou uvedeny níže:
- Podpora IPv4 a IPv6
- Stránka stavu zobrazující užitečné informace
- Automaticky vytvářet/aktualizovat reverzní záznamy PTR
- Podpora hromadného vytváření domén
- Podpora doménových šablon
- Podpora DNSSec
- Podpora ověřování uživatelů Local DB, SAML, LDAP, Active Directory
V tomto tutoriálu vám ukážeme, jak nainstalovat PowerDNS a PowerDNS admin na server Ubuntu 20.04.
Předpoklady
- Server se systémem Ubuntu 20.04.
- Platný název domény s adresou IP vašeho serveru.
- Na serveru je nakonfigurováno heslo uživatele root.
Instalace a konfigurace serveru MariaDB
Než začnete, budete muset do systému nainstalovat databázový server MariaDB. Ve výchozím nastavení není nejnovější verze MariaDB k dispozici ve výchozím úložišti Ubuntu 20.04. Budete tedy muset do svého systému přidat úložiště MariaDB.
Nejprve nainstalujte požadované balíčky pomocí následujícího příkazu:
apt-get install software-properties-common gnupg2 -y
Jakmile jsou všechny balíčky nainstalovány, přidejte podpisový klíč MariaDB pomocí následujícího příkazu:
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Dále přidejte úložiště MariaDB pomocí následujícího příkazu:
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu focal main'
Dále nainstalujte server MariaDB spuštěním následujícího příkazu:
apt-get install mariadb-server -y
Po instalaci budete muset vytvořit databázi a uživatele pro PowerDNS.
Nejprve se přihlaste do MariaDB pomocí následujícího příkazu:
mysql
Po přihlášení vytvořte databázi a uživatele pomocí následujícího příkazu:
MariaDB [(none)]> vytvořit databázi pdns;
MariaDB [(none)]> udělit vše na pdns.* na [e-mail chráněný] identifikovaný 'heslem';
Dále vyprázdněte oprávnění a ukončete prostředí MariaDB pomocí následujícího příkazu:
MariaDB [(none)]> flush oprávnění;
MariaDB [(none)]> exit;
Instalovat PowerDNS
Nejprve budete muset zakázat službu systemd-resolved z vašeho systému. Můžete jej zakázat pomocí následujícího příkazu:
systemctl disable --now systemd-resolved
Dále odstraňte výchozí soubor resolv.conf a vytvořte nový soubor:
rm -rf /etc/resolv.conf
echo "nameserver 8.8.8.8"> /etc/resolv.conf
Dále nainstalujte server PowerDNS pomocí následujícího příkazu:
apt-get install pdns-server pdns-backend-mysql -y
Jakmile je PowerDNS nainstalováno, můžete přejít k dalšímu kroku.
Konfigurace PowerDNS
Nejprve budete muset importovat schéma databáze PowerDNS do databáze PowerDNS. Můžete jej importovat pomocí následujícího příkazu:
mysql -u pdnsadmin -p pdnsDále budete muset definovat podrobnosti připojení k databázi PowerDNS. Můžete to udělat úpravou souboru pdns.local.gmysql.conf:
nano /etc/powerdns/pdns.d/pdns.local.gmysql.confZměňte následující řádky:
# Konfigurace MySQL## Spustit gmysql backendlaunch+=gmysql# parametry gmysqlgmysql-host=127.0.0.1gmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsadmingmysql-ocsql=pass před>Uložte a zavřete soubor a poté udělte správná oprávnění k souboru pdns.local.gmysql.conf:
chmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.confDále zastavte server PowerDNS a ověřte PowerDNS pomocí následujícího příkazu:
systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9Pokud je vše v pořádku, měli byste získat následující výstup:
Nov 02 10:43:47 gmysql Připojení úspěšné. Připojeno k databázi 'pdns' na '127.0.0.1'.Nov 02 10:43:47 gmysql Připojení úspěšné. Připojeno k databázi 'pdns' na '127.0.0.1'.Nov 02 10:43:47 gmysql Připojení úspěšné. Připojeno k databázi 'pdns' na '127.0.0.1'. 2. listopadu 10:43:47 Spouštění vláken dokončeno, připraveno k distribuci otázekDále spusťte server PowerDNS pomocí následujícího příkazu:
systemctl start pdnsV tomto okamžiku se PowerDNS spustí a naslouchá na portu 53. Můžete to zkontrolovat pomocí následujícího příkazu:
ss -alnp4 | grep pdnsMěli byste získat následující výstup:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("pdns_server",pid=33140,fd=5)) tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* users:(("pdns_server",pid=33140,fd=7))Nainstalovat PowerDNS Admin
V této části vám ukážeme, jak nainstalovat PowerDNS admin s Nginx.
Instalovat požadované závislosti
Nejprve nainstalujte všechny závislosti požadované pro PowerDNS admin pomocí následujícího příkazu:
apt-get install nginx python3-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-httpsentialonthdev3magit-ess baňka -yJakmile jsou všechny závislosti nainstalovány, přidejte úložiště Node.js pomocí následujícího příkazu:
curl -sL https://deb.nodesource.com/setup_14.x | bash -Dále nainstalujte Node.js pomocí následujícího příkazu:
apt-get install nodejs -yDále přidejte úložiště příze pomocí následujícího příkazu:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tričko /etc/apt/sources.list.d/yarn.listDále aktualizujte úložiště a nainstalujte Yarn pomocí následujícího příkazu:
apt-get update -y
apt-get install yarn -yV tomto okamžiku jsou nainstalovány všechny požadované závislosti, nyní můžete přejít k dalšímu kroku.
Stáhnout PowerDNS Admin
Dále si stáhněte nejnovější verzi PowerDNS admin z úložiště Git do kořenového adresáře Nginx:
klon git https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdnsDále změňte adresář na stažený adresář a vytvořte virtuální prostředí Pythonu pomocí následujícího příkazu:
cd /var/www/html/pdns/
virtualenv -p python3 flaskDále aktivujte virtuální prostředí a nainstalujte všechny závislosti Pythonu pomocí následujícího příkazu:
zdroj ./flask/bin/activate
pip install -r requirements.txtDále deaktivujte z virtuálního prostředí pomocí následujícího příkazu:
deaktivovatDefinovat připojení k databázi
Dále budete muset definovat podrobnosti připojení databáze PowerDNS k souboru default_config.py:
nano /var/www/html/pdns/powerdnsadmin/default_config.pyZměňte následující řádky:
salt ='yourSecreteKey'Secret_Key =' yourSecReteKey'Bind_address ='0.0.0'Port =9191hsts_enabled =falseoffline_mode =falsesqla_db_user =' pdnsals ='tb_pswords ='' '' '' Pravda Uložte a zavřete soubor, změňte adresář na pdns a aktivujte virtuální prostředí:
cd /var/www/html/pdns/
zdroj ./flask/bin/activateDále aktualizujte databázi pomocí následujícího příkazu:
export FLASK_APP=powerdnsadmin/__init__.py
upgrade databáze flask
instalace příze --pure-lockfile
sestavení flasku aktivDále deaktivujte virtuální prostředí pomocí následujícího příkazu:
deaktivovatPovolit PowerDNS Admin API
Správce PowerDNS používá JSON API pro čtení statistik a úpravu obsahu zóny, metadat a klíčových materiálů DNSSEC. Můžete to povolit úpravou souboru pdns.conf:
nano /etc/powerdns/pdns.confZměňte následující řádky:
api=yesapi-key=yoursecretekeyUložte a zavřete soubor a poté restartujte službu PowerDNS, aby se změny projevily:
systemctl restart pdnsKonfigurace Nginx pro správce PowerDNS
Dále budete muset nakonfigurovat Nginx pro správce PowerDNS. Chcete-li tak učinit, vytvořte konfigurační soubor virtuálního hostitele Nginx pomocí následujícího příkazu:
nano /etc/nginx/conf.d/pdns-admin.confPřidejte následující řádky:
server { poslouchat *:80; název_serveru pdnsadmin.example.com; index index.html index.htm index.php; root /var/www/html/pdns; access_log /var/log/nginx/pdnsadmin_access.log kombinovaný; error_log /var/log/nginx/pdnsadmin_error.log; client_max_body_velikost 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; umístění ~ ^/static/ { include /etc/nginx/mime.types; root /var/www/html/pdns/powerdnsadmin; umístění ~* \.(jpg|jpeg|png|gif)$ { vyprší 365d; } umístění ~* ^.+.(css|js)$ { vyprší 7d; } } umístění / { proxy_pass http://unix:/run/pdnsadmin/socket; proxy_read_timeout 120; proxy_connect_timeout 120; proxy_redirect off; }}Uložte a zavřete soubor a poté pomocí následujícího příkazu zkontrolujte Nginx, zda neobsahuje nějakou chybu syntaxe:
nginx -tMěli byste získat následující výstup:
nginx:syntaxe konfiguračního souboru /etc/nginx/nginx.conf je oknginx:konfigurační soubor /etc/nginx/nginx.conf test byl úspěšnýDále změňte vlastnictví pdns na www-data:
chown -R www-data:www-data /var/www/html/pdnsNakonec restartujte službu Nginx, aby se změny projevily:
systemctl restart nginxVytvoření souboru služby Systemd pro správce PowerDNS
Dále budete muset vytvořit soubor služby systemd pro správu služby PowerDNS.
Nejprve vytvořte soubor služby pdns pomocí následujícího příkazu:
nano /etc/systemd/system/pdnsadmin.servicePřidejte následující řádky:
[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.targetUložte a zavřete soubor a poté vytvořte soubor pdnsadmin sockt pomocí následujícího příkazu:
nano /etc/systemd/system/pdnsadmin.socketPřidejte následující řádky:
[Unit]Description=PowerDNS-Admin socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.targetUložte a zavřete soubor a poté vytvořte požadované soubory a adresáře pomocí následujícího příkazu:
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/Dále znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reloadDále povolte spuštění služby pdnsadmin při restartování systému pomocí následujícího příkazu:
systemctl enable --now pdnsadmin.service pdnsadmin.socketDále ověřte stav obou služeb pomocí následujícího příkazu:
stav systemctl pdnsadmin.service pdnsadmin.socketMěli byste získat následující výstup:
? pdnsadmin.service - PowerDNS-Admin Načteno:načteno (/etc/systemd/system/pdnsadmin.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od Po 2020-11-02 10:54:19 UTC; před 5 sTriggeredBy:? pdnsadmin.socket Hlavní PID:38881 (gunicorn) Úkoly:2 (limit:2353) Paměť:62,5M 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>Nov 02 10:54:19 pdnsadmin.example.com systemd[1]:Spuštěno PowerDNS-Admin.Nov 02 10:54:19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Starting gunicorn 20.0.4Nov:54 :19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Poslech na:unix:/run/pdnsadmin/socket (38881)Nov:2 10 54:19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Pomocí pracovníka:syncNov 02 10:54:19 pdnsadmin.gunicornle.com 38898]:[2020-11-02 10:54:19 +0000] [38898] [INFO] Bootovací pracovník s pid:38898? pdnsadmin.socket - PowerDNS-Admin socket Načteno:načteno (/etc/systemd/system/pdnsadmin.socket; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od Po 2020-11-02 10:54:19 UTC; před 5s Spouštěče:? pdnsadmin.service Poslech:/run/pdnsadmin/socket (Stream) CGroup:/system.slice/pdnsadmin.socketNov 02 10:54:19 pdnsadmin.example.com systemd[1]:Poslech na PowerDNS-Admin socketu.Přístup k webovému uživatelskému rozhraní pro správu PowerDNS
Nyní otevřete webový prohlížeč a přejděte do webového rozhraní správce PowerDNS pomocí adresy URL http://pdnsadmin.example.com . Budete přesměrováni na následující stránku:
Klikněte na Vytvořit účet knoflík. Měli byste vidět následující obrazovku:
Zadejte své uživatelské údaje správce a klikněte na Registrovat tlačítko pro vytvoření účtu. Na následující obrazovce byste měli vidět přihlašovací stránku správce PowerDNS:
Zadejte své administrátorské uživatelské jméno, heslo a klikněte na Přihlásit se knoflík. Webové rozhraní správce PowerDNS byste měli vidět na následující stránce:
Zde zadejte adresu URL PowerDNS API pro připojení k PowerDNS a jeho správu. Poté klikněte na Aktualizovat tlačítko pro uložení změn. Měli byste vidět následující stránku:
Klikněte na Hlavní panel knoflík. Na následující obrazovce byste měli vidět řídicí panel pro správu PowerDNS:
Závěr
Gratulujeme! úspěšně jste nainstalovali a nakonfigurovali PowerDNS a PowerDNS admin na serveru Ubuntu 20.04. Nyní můžete vytvářet zóny a přidávat záznamy prostřednictvím webového rozhraní pro správu PowerDNS.
Monitorujte síťový provoz pomocí vnStat na Ubuntu 20.04 Jak nastavit Local DNS Resolver pomocí Dnsmasq na Ubuntu 20.04Ubuntu