GNU/Linux >> Znalost Linux >  >> Linux

Nainstalujte PowerDNS na Ubuntu 18.04, 20.04 a 22.04

Úvod

PowerDNS je řešení serveru DNS s otevřeným zdrojovým kódem, které pomáhá řešit jmenné prostory. PowerDNS podporuje vysokou dostupnost, redundanci dat a různé backendy, což z něj činí flexibilní a robustní řešení.

Tato příručka ukazuje, jak nainstalovat PowerDNS a rozhraní PowerDNS Admin na Ubuntu.

Předpoklady

  • Přístup k terminálu.
  • Přístup k uživateli root.
  • Textový editor, jako je nano.
  • Webový prohlížeč pro přístup k PowerDNS Admin.

Proč používat PowerDNS?

PowerDNS poskytuje dvě řešení jmenného serveru:

  • Autoritativní server , který používá databázi k řešení dotazů na domény.
  • Rekurzor , která konzultuje dotazy s dalšími autoritativními servery.

Ostatní jmenné servery kombinují tyto dvě funkce automaticky. PowerDNS je nabízí samostatně a umožňuje bezproblémovou kombinaci těchto dvou řešení pro modulární nastavení.

PowerDNS je navíc open source, funguje stejně dobře pro malé i velké objemy dotazů a nabízí mnoho možností pro backendová řešení.

Instalace PowerDNS na Ubuntu 18.04, 20.04 a 22.04

Chcete-li nainstalovat a nakonfigurovat PowerDNS se serverem MariaDB jako backendovou databází, postupujte podle následujících kroků. Tyto kroky navíc uživatele provedou nastavením webového rozhraní PowerDNS Admin a API.

Krok 1:Instalace a konfigurace serveru MariaDB

Chcete-li nainstalovat a nakonfigurovat MariaDB, postupujte takto:

1. Aktualizujte a upgradujte systémové balíčky:

sudo apt update && sudo apt upgrade

2. Nainstalujte server a klienta MariaDB pomocí:

sudo apt install mariadb-server mariadb-client

Poznámka: Mezi další možné databázové servery patří PostgreSQL, MySQL a další relační databáze.

Než budete pokračovat, počkejte na dokončení instalace.

3. Připojte se k MariaDB pomocí:

sudo mysql

Terminál se připojí k relaci databáze.

4. Vytvořte databázi pro jmenný server PowerDNS:

create database pda;

Poznámka: Pokud používáte jiný název databáze, změňte odpovídajícím způsobem všechny následné příkazy.

5. Udělte všechna oprávnění pda uživatele a zadejte uživatelské heslo:

grant all privileges on pda.* TO 'pda'@'localhost' identified by 'YOUR_PASSWORD_HERE';
flush privileges;

6. Připojte se k databázi:

use pda;

7. Pomocí následujících dotazů SQL vytvořte tabulky pro pda databáze:

CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT UNSIGNED DEFAULT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE UNIQUE INDEX name_index ON domains(name);


CREATE TABLE records (
  id                    BIGINT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX ordername ON records (ordername);


CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB CHARACTER SET 'latin1';


CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  comment               TEXT CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);


CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);


CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE INDEX domainidindex ON cryptokeys(domain_id);


CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

8. Potvrďte, že tabulky byly vytvořeny pomocí:

show tables;

Výstup uvádí dostupné tabulky.

9. Ukončete připojení k databázi:

exit;

Příkaz vrátí relaci do terminálu.

Krok 2:Nainstalujte PowerDNS

Chcete-li nainstalovat PowerDNS na Ubuntu, postupujte takto:

1. Přepněte na uživatele root:

sudo su -

Relace terminálu se změní na uživatele root.

Poznámka: Přečtěte si o rozdílu mezi sudo a su.

2. systemd-resolved služba poskytuje rozlišení názvů místním aplikacím. PowerDNS používá vlastní službu pro rozlišení názvů.

Deaktivujte systemd-resolved služba s:

systemctl disable --now systemd-resolved

Výstup potvrdí odebrání služby.

3. Smažte konfigurační soubor systémové služby pomocí:

rm -rf /etc/resolv.conf

4. Vytvořte nový soubor resolv.conf soubor:

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

Připojení jmenného serveru Google zajistí rozlišení DNS.

5. Nainstalujte server PowerDNS a balíčky backend databáze pomocí:

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

Než budete pokračovat, počkejte na dokončení instalace.

Krok 3:Nakonfigurujte PowerDNS

Nakonfigurujte místní soubor PowerDNS pro připojení k databázi:

1. Otevřete konfigurační soubor pro úpravy:

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

2. Přidejte do souboru následující informace:

# MySQL Configuration
#
# Launch gmysql backend
launch+=gmysql

# gmysql parameters
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=pda
gmysql-user=pda
gmysql-password=YOUR_PASSWORD_HERE
gmysql-dnssec=yes
# gmysql-socket=

Pokud používáte jiné, vyměňte název databáze, uživatele a heslo se správnými parametry. Uložte a zavřete soubor.

3. Změňte oprávnění souboru:

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

4. Zastavte pdns služba:

systemctl stop pdns

5. Otestujte připojení k databázi:

pdns_server --daemon=no --guardian=no --loglevel=9

Výstup ukazuje úspěšné připojení. Stiskněte CTRL +C pro ukončení testu.

6. Spusťte službu:

systemctl start pdns

7. Zkontrolujte připojení pomocí příkazu ss:

ss -alnp4 | grep pdns

Ověřte port TCP/UDP 53 je otevřená a v LISTEN /UCONN stavu.

Krok 4:Instalace závislostí správce PowerDNS

Správce PowerDNS pomáhá spravovat PowerDNS prostřednictvím webového rozhraní. Chcete-li řídicí panel nainstalovat místně, postupujte takto:

1. Nainstalujte vývojový balíček Pythonu:

apt install python3-dev

2. Nainstalujte závislosti:

apt install -y git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https python3-venv build-essential curl

3. Načtěte nastavení Node.js:

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

4. Nainstalujte Node.js pomocí:

apt install -y nodejs

5. Dále nainstalujte správce balíčků Yarn. Získejte veřejný klíč Yarn a přidejte jej do apt :

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

Yarn pomáhá vytvářet soubory aktiv.

6. Přidejte přízi do seznamu zdrojů:

echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

7. Aktualizujte seznam zdrojů apt:

apt update -y

8. Nainstalujte přízi pomocí:

apt install yarn -y

9. Naklonujte úložiště PowerDNS Admin Git do /opt/web/powerdns-admin :

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin

Pokud používáte jiný adresář, vyměňte cílový adresář v příkazu a ve všech následujících vzhledech.

10. Přejděte do klonovaného adresáře Git:

cd /opt/web/powerdns-admin

11. Vytvořte virtuální prostředí Pythonu:

python3 -mvenv ./venv

12. Aktivujte virtuální prostředí pomocí:

source ./venv/bin/activate

13. Upgradujte pip na nejnovější verzi:

pip install --upgrade pip

Správce balíčků pip pomáhá instalovat další požadavky Pythonu.

14. Nainstalujte požadavky ze souboru requirements.txt soubor:

pip install -r requirements.txt

Po instalaci všech požadavků vyžaduje správce PowerDNS před spuštěním další konfiguraci.

Krok 5:Konfigurace a spuštění PowerDNS Admin

Chcete-li nakonfigurovat a spustit PowerDNS Admin v místní instanci, postupujte takto:

1. Pomocí příkazu cp zkopírujte příklad development.py Soubor Python do production.py :

cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py

2. Otevřete soubor production.py soubor pro úpravy:

nano /opt/web/powerdns-admin/configs/production.py

3. Upravte následující řádky:

#import urllib.parse

SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd2'

SQLA_DB_PASSWORD = 'changeme'

4. Odkomentujte import knihovny, zadejte náhodně vygenerovaný tajný klíč a zadejte správné heslo databáze.

import urllib.parse

SECRET_KEY = '\x19\xc7\xd8\xa7$\xb6P*\xc6\xb8\xa1E\x90P\x12\x95'

SQLA_DB_PASSWORD = 'YOUR_PASSWORD_HERE'

Poznámka: Vygenerujte náhodný klíč pomocí Pythonu:

python3 -c "import os; print(os.urandom(16))"

Zkopírujte a vložte výstup do SECRET_KEY hodnotu.

Uložte a zavřete soubor.

5. Exportujte konfigurační proměnnou produkční aplikace:

export FLASK_CONF=../configs/production.py

6. Exportujte proměnnou aplikace baňky:

export FLASK_APP=powerdnsadmin/__init__.py

7. Upgradujte schéma databáze:

flask db upgrade

8. Nainstalujte závislosti projektu:

yarn install --pure-lockfile

9. Sestavte prostředky aplikace flask:

flask assets build

Počkejte na dokončení sestavení.

10. Spusťte aplikaci pomocí:

./run.py

Nechte aplikaci spuštěnou.

11. Aplikace aktuálně běží na localhost na portu 9191 . Navštivte následující adresu:

http://localhost:9191

Zobrazí se přihlašovací obrazovka pro PowerDNS Admin. V současné době zde nejsou žádní uživatelé a prvním registrovaným uživatelem bude administrátorský účet.

12. V terminálu ukončete virtuální prostředí a odhlaste se od uživatele root pomocí:

exit

Terminál se vrátí do normálního stavu.

Krok 6:Vytvořte službu PowerDNS Admin Service

Nakonfigurujte PowerDNS Admin pro spuštění při spuštění:

1. Vytvořte soubor služby systemd pro PowerDNS Admin:

sudo nano /etc/systemd/system/powerdns-admin.service

2. Přidejte následující obsah:

[Unit]
Description=PowerDNS-Admin
Requires=powerdns-admin.socket
After=network.target

[Service]
User=root
Group=root
PIDFile=/run/powerdns-admin/pid
WorkingDirectory=/opt/web/powerdns-admin
ExecStartPre=/bin/bash -c '$$(mkdir -p /run/powerdns-admin/)'
ExecStart=/opt/web/powerdns-admin/venv/bin/gunicorn --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket 'powerdnsadmin:create_app()'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3. Vytvořte soubor jednotky:

sudo systemctl edit --force powerdns-admin.service

4. Připojte následující:

[Service]
Environment="FLASK_CONF=../configs/production.py"

5. Vytvořte soubor soketu:

sudo nano /etc/systemd/system/powerdns-admin.socket

6. Vložte následující informace:

[Unit]
Description=PowerDNS-Admin socket

[Socket]
ListenStream=/run/powerdns-admin/socket

[Install]
WantedBy=sockets.target

7. Vytvořte soubor prostředí:

sudo nano /etc/tmpfiles.d/powerdns-admin.conf

8. Přidejte následující informace:

d /run/powerdns-admin 0755 pdns pdns -

9. Znovu načtěte démona:

sudo systemctl daemon-reload

10. Spusťte a povolte službu a soket:

sudo systemctl start powerdns-admin.service powerdns-admin.socket
sudo systemctl enable powerdns-admin.service powerdns-admin.socket

11. Zkontrolujte stav pomocí:

sudo systemctl status powerdns-admin.service powerdns-admin.socket

Služby se zobrazují jako spuštěné bez jakýchkoli chyb.

Krok 7:Nainstalujte a nakonfigurujte Nginx

Chcete-li nakonfigurovat PowerDNS Admin pro spuštění na Nginx, postupujte takto:

1. Nainstalujte Nginx pomocí:

sudo apt install nginx -y

2. Upravte konfigurační soubor Nginx:

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

3. Přidejte následující informace:

server {
  listen *:80;
  server_name               localhost;

  index                     index.html index.htm index.php;
  root                      /opt/web/powerdns-admin;
  access_log                /var/log/nginx/powerdns-admin.local.access.log combined;
  error_log                 /var/log/nginx/powerdns-admin.local.error.log;

  client_max_body_size              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;

  location ~ ^/static/  {
    include  /etc/nginx/mime.types;
    root /opt/web/powerdns-admin/powerdnsadmin;

    location ~*  \.(jpg|jpeg|png|gif)$ {
      expires 365d;
    }

    location ~* ^.+.(css|js)$ {
      expires 7d;
    }
  }

  location / {
    proxy_pass            http://unix:/run/powerdns-admin/socket;
    proxy_read_timeout    120;
    proxy_connect_timeout 120;
    proxy_redirect        off;
  }

}

Pokud používáte jiný název serveru, změňte localhost na adresu vašeho serveru.

4. Potvrďte, že soubor neobsahuje žádné syntaktické chyby:

nginx -t

5. Změňte vlastnictví powerdns-admin na www-data :

sudo chown -R www-data:www-data /opt/web/powerdns-admin

6. Restartujte službu Nginx:

sudo systemctl restart nginx

7. Prostřednictvím prohlížeče přejděte na stránku správce PowerDNS:

localhost

Pokud odkazujete na jinou adresu, použijte adresu uvedenou v konfiguračním souboru Nginx.

Krok 8:Konfigurace PowerDNS API

Chcete-li nakonfigurovat rozhraní PowerDNS API, postupujte takto:

1. Přihlaste se do správce PowerDNS prostřednictvím prohlížeče. Pokud běží poprvé, vytvořte nejprve nového uživatele. První uživatel je automaticky administrátor.

2. Otevřete Klíč API s v levé nabídce.

3. Klikněte na Přidat klíč+ tlačítko.

4. Role výchozí pole Administrátor uživatel. Přidejte volitelný popis klíče.

5. Klikněte na Vytvořit klíč pro vygenerování klíče API.

6. Vyskakovací okno vytiskne klíč. Zkopírujte klíč a stiskněte Potvrdit pokračovat.

7. Přejděte na Hlavní panel stránku.

8. Zadejte doménu a klíč API. Uložte změny.

9. Povolte rozhraní API v konfiguraci PowerDNS. Otevřete konfigurační soubor v terminálu:

nano /etc/powerdns/pdns.conf

10. Odkomentujte a změňte následující řádky:

api=yes
api-key=yoursecretekey
webserver=yes

11. Uložte změny a zavřete nano. Rozhraní API je nastaveno a připraveno k použití.

Závěr

Poté, co jste prošli kroky v této příručce, jste nastavili PowerDNS, webové rozhraní PowerDNS Admin na Nginx, a připojili PowerDNS API.

Dále se dozvíte o různých typech záznamů DNS nebo o doporučených postupech zabezpečení DNS.


Linux
  1. Nainstalujte GitLab na Ubuntu 18.04

  2. Nainstalujte Nginx na Ubuntu

  3. Nainstalujte Qt na Ubuntu

  1. Nainstalujte Podman na Ubuntu

  2. Co nainstalovat na Ubuntu 20.04

  3. Jak nainstalovat R na Ubuntu 20.04

  1. Ubuntu 20.04 Hadoop

  2. Jak nainstalovat Go na Ubuntu 18.04

  3. Jak nainstalovat R na Ubuntu 18.04