GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit PowerDNS na Ubuntu Linux

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.


Linux
  1. Jak nainstalovat usb-creator na Ubuntu Linux

  2. Jak nainstalovat MariaDB na Ubuntu 22.04

  3. Jak nainstalovat soubory .deb na Ubuntu Linux

  1. Jak nainstalovat MariaDB 10.4 na Ubuntu 18.04

  2. Jak nainstalovat Redis na Ubuntu 20.04 / 18.04

  3. Jak nainstalovat Javu na Ubuntu Linux

  1. Jak nainstalovat Redis na Ubuntu Linux

  2. Jak nainstalovat Curl na Ubuntu

  3. Jak nainstalovat PipeWire na Ubuntu Linux