Snažíte se vytvořit server DNS, který podporuje vysokou dostupnost a redundanci, ale přesto s výkonnými a moderními funkcemi? PowerDNS je nejlepší řešení. PowerDNS (pdns) je bezplatný a open source serverový software DNS pro operační systémy podobné Unixu.
V tomto článku se dozvíte, jak nainstalovat a nakonfigurovat PowerDNS s databází MariaDB v systému Debian/Ubuntu Linux.
Jste připraveni mít plně funkční server DNS? Skočte rovnou dovnitř!
Předpoklady
Tento tutoriál je praktickou ukázkou, ujistěte se, že máte následující:
- Počítač se systémem Linux – Tento výukový program používá nejnovější Debian 11 Bullseye.
- Uživatel s právy root.
Instalace a konfigurace databáze MariaDB
Ve výchozím nastavení podporuje PowerDNS mnoho backendů, jako jsou databázové backendy (PostgreSQL a MySQL/MariaDB), soubory zón vazby a rozhraní API JSON. V tomto tutoriálu použijete databázi MariaDB jako backend databáze PowerDNS.
1. Nejprve otevřete svůj terminál a SSH na váš server.
2. Dále spusťte apt install
příkaz níže k instalaci základních závislostí balíčků (software-properties-common
dirmngr
apt-transport-https
) do vašeho systému.
sudo apt install software-properties-common dirmngr apt-transport-https -y
3. Spuštěním níže uvedených příkazů přidejte úložiště MariaDB a klíč GPG do svého systému. Konfigurace úložiště MariaDB je uložena na /etc/apt/sources.list.d/
adresář, zatímco klíč GPG je uložen v /etc/apt/trusted.gpg.
adresář.
# Add MariaDB repository for Debian system
sudo add-apt-repository 'deb [arch=amd64,i386,arm64,ppc64el] https://mirror.23m.com/mariadb/repo/10.6/debian bullseye main'
# Add GPG key for MariaDB repository
wget -qO- https://mariadb.org/mariadb_release_signing_key.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/mariadb_release_signing_key.gpg
4. Nyní spusťte následující příkazy pro obnovení úložiště a instalaci balíčku (mariadb-server
).
Služba MariaDB se spustí po instalaci v distribucích Debian a Ubuntu a automaticky se spustí při spuštění/spuštění systému.
# refresh package index
sudo apt update
# install MariaDB database
sudo apt install mariadb-server -y
5. Spusťte mysql_secure_installation
příkaz níže k zabezpečení instalace MariaDB. mysql_secure_installation
mysql_secure_installation
6. Až budete vyzváni k zadání root
, stiskněte Enter na obrazovce terminálu heslo pro MariaDB, protože výchozí instalace MariaDB je bez hesla.

7. Zadejte Y ve výzvě zobrazené níže změňte výchozí ověřování na unix_socket .

8. Zadejte Y znovu na výzvu níže a zadejte nové silné heslo pro server MariaDB.

9. Nyní zadejte Y na níže uvedené výzvě. Výchozí instalace MariaDB je dodávána s výchozím anonymním uživatelem na produkční úrovni, takže musíte anonymního uživatele odebrat.

10. Na další výzvu zadejte Y pro zakázání vzdáleného přihlášení pro uživatele root. Musíte zakázat MariaDB root
aby se uživatel z bezpečnostních důvodů vzdáleně přihlašoval z jiných serverů.

11. Napište Y znovu k odstranění výchozí testovací databáze a odebrání veškerého přístupu a oprávnění.

12. Nakonec zadejte Y znovu, abyste znovu načetli všechna oprávnění tabulek a aplikovali nové změny na server MariaDB.

Jakmile bude veškerá konfigurace MariaDB dokončena, obdržíte potvrzovací zprávu, jako je snímek obrazovky níže.

Instalace PowerDNS v systému Debian/Ubuntu Linux
Po dokončení instalace MariaDB pro backend databáze PowerDNS jste připraveni nainstalovat balíčky PowerDNS. Přidáte oficiální úložiště PowerDNS a klíč GPG a nainstalujete balíčky serveru PowerDNS.
Chcete-li nainstalovat nejnovější balíčky PowerDNS z oficiálního úložiště:
1. Spuštěním níže uvedených příkazů přidejte úložiště PowerDNS a klíč GPG do svého systému.
# Download PowerDNS GPG Key
wget -qO- https://repo.powerdns.com/FD380FBB-pub.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/pdns.gpg
# Adding the PowerDNS Repository for Debian 11 Bullseye System
echo "deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-45 main" | sudo tee /etc/apt/sources.list.d/pdns.list
# Adding the PowerDNS Repository for Ubuntu 20.04 System
echo "deb [arch=amd64] http://repo.powerdns.com/ubuntu focal-auth-45 main" | sudo tee /etc/apt/sources.list.d/pdns.list
2. Dále vytvořte nový konfigurační soubor s názvem /etc/apt/preferences.d/pdns
pomocí vašeho preferovaného editoru a poté naplňte soubor s následující konfigurací.
S níže uvedenou konfigurací všechny balíčky začínající jménem pdns-
se automaticky nainstaluje z úložiště PowerDNS (repo.powerdns.com
) namísto úložiště Debian/Ubuntu.
# all packages with first name pdns- will be installed from the repo.powerdns.com repository
Package: pdns-*
Pin: origin repo.powerdns.com
Pin-Priority: 600
3. Spuštěním následujících příkazů aktualizujte a obnovte úložiště a poté nainstalujte PowerDNS (pdns-server
) a backend PowerDNS MariaDB/MySQL (pdns-backend-mysql
).
Po instalaci bude služba PowerDNS (pdns.service
) statistiky a je automaticky povoleno.
# refresh package index after adding new repository
sudo apt update
# install PowerDNS and PowerDNS MySQL/MariaDB backend
sudo apt install pdns-server pdns-backend-mysql -y
4. Nakonec spusťte systemctl
příkaz níže k ověření status
služby PowerDNS (pdns.service
).
sudo systemctl status pdns.service
Jak vidíte níže, služba PowerDNS je aktivní (běžící) na výchozím portu TCP 53 a je spuštěn jako Autoritativní server PowerDNS .

Vytvoření databáze a schéma importu databáze pro PowerDNS
Po instalaci PowerDNS nastavíte MariaDB jako databázový backend pro PowerDNS. Chcete-li tak učinit, vytvořte novou databázi a uživatele a poté importujte schéma databáze PowerDNS.
1. Spusťte následující příkaz a přihlaste se do prostředí MySQL jako uživatel root
. Po zobrazení výzvy zadejte své root heslo MariaDB.
mysql -u root -p
Po přihlášení do prostředí MySQL obdržíte uvítací zprávu, jako je snímek obrazovky níže.

2. Dále spusťte následující dotazy a vytvořte novou databázi (pdns
) s uživatelským jménem správce nastaveným na pdnsadmin
.
# creating database named pdns
create database pdns;
# create user pdnsadmin and grant privileges to the database pdns
grant all on pdns.* to [email protected] identified by 'StrongPdnsPasswd';
# reload database privileges to apply new changes
flush privileges;
# exit from the MySQL shell
exit

3. Spuštěním následujícího příkazu importujte schéma databáze PowerDNS do pdns
databáze. Ujistěte se, že jste zadali správné heslo pro pdnsadmin
uživatel.
Výchozí instalace backendu PowerDNS MySQL obsahuje schéma databáze, které je k dispozici na /usr/share/pdns-backend-mysql/schema/
adresář.
# import the schema.mysql.sql to the pdns database
mysql -u pdnsadmin -p pdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
4. Nyní spusťte níže uvedený mysqlshow
příkaz k ověření databázového schématu pdns
databáze. Tento příkaz vám zobrazí všechny dostupné tabulky na pdns
databáze.
# Check list of tables on the pdns database
mysqlshow pdns
Níže můžete vidět tabulky dostupné na pdns databáze.

Nastavení PowerDNS pomocí MariaDB Backend
Nakonfigurovali jste MariaDB a nastavili svou databázi. Jak ale víte, zda PowerDNS funguje? Vytvoříte novou konfiguraci backendu MariaDB pro PowerDNS. Služba PowerDNS používá tuto konfiguraci k připojení k databázi MySQL a ukládání všech dat DNS do databáze.
1. Spusťte následující příkaz na stop
službu PowerDNS (pdns.service
) nejprve před vytvořením konfigurace backendu PowerDNS.
sudo systemctl stop pdns.service
2. Dále vytvořte soubor s názvem self.conf v /etc/powerdns/pdns.d/ adresář pomocí textového editoru a naplňte soubor s následující konfigurací.
Změňte uživatelské jméno a heslo databáze pomocí svých údajů a uložte změny.
Všechny další konfigurace pro PowerDNS musí být uloženy v
/etc/powerdns/pdns.d
adresář.
# Define the gmysql backend
launch+=gmysql
# Details MariaDB database for PowerDNS
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=pdns
gmysql-user=pdnsadmin
gmysql-password=StrongPdnsPasswd
gmysql-dnssec=yes
# gmysql-socket=
3. Spuštěním následujících příkazů změňte oprávnění a vlastnictví mysql.conf
soubor. V tomto okamžiku je vytvořena konfigurace backendu MySQL pro PowerDNS.
# change the ownership to user and group pdns
sudo chown pdns:pdns /etc/powerdns/pdns.d/mysql.conf
# change permission of the file
sudo chmod 640 /etc/powerdns/pdns.d/mysql.conf
4. Nyní spusťte následující příkazy pro spuštění služby PowerDNS (pdns.service
) a ověřte službu status
.
# start PowerDNS service
sudo systemctl start pdns.service
# verify status of the PowerDNS service
sudo systemctl status pdns.service
Pokud je vaše konfigurace PowerDNS správná, obdržíte následující výstup ukazující stav služby PowerDNS je active (running)
.

5. Nakonec proveďte níže uvedený příkaz a zkontrolujte syslog
soubor. Tento příkaz vám umožní zajistit, aby byl backendový modul MySQL načten na server PowerDNS.
grep -rin pdns_server /var/log/syslog

Vytváření zón DNS na PowerDNS
PowerDNS poskytuje nástroj příkazového řádku s názvem pdnsutil
pro správu zón a DNSSEC. pdnsutil
příkaz lze spustit vzdáleně a provést změny v backendové databázi PowerDNS.
V této ukázce vytvoříte novou zónu DNS pro example.io
domény.
1. Spusťte pdnsutil
příkaz níže k vytvoření nové zóny DNS (create-zone
) s názvem example.io
.
pdnsutil create-zone example.io
2. Dále proveďte následující příkazy k vytvoření nového jmenného serveru a přiřazení jmenného serveru k IP adrese serveru PowerDNS.
# define ns1 A record to IP address 172.16.5.10
pdnsutil add-record example.io ns1 A 172.16.5.10
# define nameserver for example.io to the ns1.example.io
pdnsutil add-record example.io @ NS ns1.example.io
3. Spuštěním níže uvedeného příkazu přidejte nový záznam A pro example.io
doména. Tato doména bude používat IP adresu 172.16.5.20
.
pdnsutil add-record example.io @ A 172.16.5.20
4. Spuštěním následujících příkazů přidejte nové subdomény pro své aplikace.
# add subdomain www
pdnsutil add-record example.io www A 172.16.5.20
# add subdomain storage with the target server 172.16.5.50
pdnsutil add-record example.io storage A 172.16.5.50
5. Nyní spusťte níže uvedený příkaz a přidejte záznam MX. Záznam MX zpracovává doručování e-mailů pro hlavní doménu (example.io
).
pdnsutil add-record example.io @ MX "10 example.io"
6. Spuštěním níže uvedených příkazů nastavte nano
jako výchozí editor a otevřete example.io
soubor.
# setup default editor on the system temporary
export EDITOR=nano
# edit DNS zone example.io manually
pdnsutil edit-zone example.io
Upravte výchozí záznam SOA v example.io soubor s níže uvedenou konfigurací. Poté uložte změny a ukončete editor.
example.io 3600 IN SOA ns1.example.io admin.example.io 0 10800 3600 604800 3600

7. Napište a a stisknutím klávesy Enter potvrďte použití nových změn, jak je znázorněno níže.

8. Nyní spusťte následující příkaz a zobrazte všechny dostupné záznamy DNS na example.io
zóna.
pdnsutil list-zone example.io
Níže můžete potvrdit, že vámi upravený záznam SOA (krok 6) se odráží v seznamu záznamů DNS.

9. Nakonec spusťte níže uvedený příkaz a ověřte konfiguraci zón PowerDNS.
pdnsutil check-all-zones
Níže vidíte, že na example.io je sedm záznamů zóny bez jakékoli chyby a varování.

Ověření šíření DNS
Úspěšně jste vytvořili zónu DNS pro example.io doména, a to je skvělé! Nyní ověříte šíření DNS u example.io
domény pomocí nástroje Domain Information Groper (DIG). dig
je nástroj pro vyhledávání DNS, který vám umožňuje ověřit šíření DNS a odstraňovat problémy se serverem DNS.
1. Spusťte následující příkaz na install
dnsutils
balíček ve vašem systému.
dig
příkaz je součástídnsutils
balíček.
sudo apt install dnsutils -y
2. Dále spusťte dig
níže, abyste zkontrolovali záznam A pro example.io doména. V tomto příkladu je IP adresa serveru PowerDNS 172.16.5.10
.
dig example.io @172.16.5.10
V ANSWER SECTION
, uvidíte podobný výstup jako níže.

3. Kromě toho spusťte následující příkazy a zkontrolujte další subdoménu, například www.example.io
a storage.example.io
.
# check subdomain www.example.io
dig www.example.io @172.16.5.10
# check subdomain storage.example.io
dig storage.example.io @172.16.5.10
Níže www.example.io
subdoména je přeložena na stejný server jako example.io
doména.

storage.example.io
subdoména je přeložena na jiný server s IP adresou 172.16.5.50
, Jak je ukázáno níže.

4. Nakonec spusťte dig
příkaz níže a zkontrolujte záznam MX pro example.io doména.
Můžete také zkontrolovat další záznamy DNS, například
TXT
,MX
,SOA
, a tak dále.
dig MX example.io @172.16.5.10

Závěr
V tomto tutoriálu jste se naučili, jak nastavit PowerDNS a backend databáze MariaDB v Debian/Ubuntu Linux. Také jste si uvědomili, že PowerDNS umožňuje vytvářet a spravovat servery DNS s malými prostředky, na rozdíl od jiných serverových aplikací DNS. Navíc jste se naučili kontrolovat konfiguraci a šíření DNS pomocí dig
příkaz.
Jak posunout PowerDNS na další úroveň? Možná přidáním PowerDNS recursor
pro povolení mezipaměti DNS a nastavení dnsdist
jako DNS load balancer? Nyní se zblázněte a začněte vytvářet vysoce dostupné a distribuované servery DNS.