GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer PowerDNS Server et PowerDNS Admin sur Ubuntu 20.04

PowerDNS est un serveur de noms gratuit et open source faisant autorité. Il est écrit en C++ et fonctionne sur les systèmes d'exploitation Unix, Linux et macOS. Il utilise MySQL, MariaDB, PostgreSQL et Oracle pour stocker les fichiers et les enregistrements de zone.

PowerDNS Admin est un outil Web utilisé pour gérer PowerDNS. Vous pouvez créer et gérer des zones DNS à l'aide du navigateur Web. Il est livré avec un riche ensemble de fonctionnalités. Certains d'entre eux sont répertoriés ci-dessous :

  • Prise en charge IPv4 et IPv6
  • Page d'état affichant des informations utiles
  • Créer/mettre à jour automatiquement les enregistrements PTR inversés
  • Prise en charge de la création de domaines en masse
  • Compatibilité avec les modèles de domaine
  • Assistance DNSSec
  • Prise en charge de l'authentification des utilisateurs de base de données locale, SAML, LDAP et Active Directory

Dans ce tutoriel, nous allons vous montrer comment installer PowerDNS et PowerDNS admin sur le serveur Ubuntu 20.04.

Prérequis

  • Un serveur exécutant Ubuntu 20.04.
  • Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
  • Un mot de passe root est configuré sur le serveur.

Installer et configurer le serveur MariaDB

Avant de commencer, vous devrez installer le serveur de base de données MariaDB sur votre système. Par défaut, la dernière version de MariaDB n'est pas disponible dans le référentiel par défaut d'Ubuntu 20.04. Vous devrez donc ajouter le référentiel MariaDB à votre système.

Tout d'abord, installez les packages requis avec la commande suivante :

apt-get install software-properties-common gnupg2 -y

Une fois tous les packages installés, ajoutez la clé de signature MariaDB avec la commande suivante :

apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

Ensuite, ajoutez le référentiel MariaDB avec la commande suivante :

add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu focal main'

Ensuite, installez le serveur MariaDB en exécutant la commande suivante :

apt-get install mariadb-server -y

Une fois installé, vous devrez créer une base de données et un utilisateur pour PowerDNS.

Tout d'abord, connectez-vous à MariaDB avec la commande suivante :

mysql

Une fois connecté, créez une base de données et un utilisateur avec la commande suivante :

MariaDB [(none)]> crée des pdns de base de données ;
MariaDB [(none)]> accorde tout sur pdns.* à [email protected] identifié par 'password' ;

Ensuite, videz les privilèges et quittez le shell MariaDB avec la commande suivante :

MariaDB [(none)]> flush privilèges ;
MariaDB [(none)]> exit ;

Installer PowerDNS

Tout d'abord, vous devrez désactiver le service résolu par systemd de votre système. Vous pouvez le désactiver avec la commande suivante :

systemctl disable --now systemd-resolved

Ensuite, supprimez le fichier resolv.conf par défaut et créez un nouveau fichier :

rm -rf /etc/resolv.conf
echo "nameserver 8.8.8.8"> /etc/resolv.conf

Ensuite, installez le serveur PowerDNS avec la commande suivante :

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

Une fois le PowerDNS installé, vous pouvez passer à l'étape suivante.

Configurer PowerDNS

Tout d'abord, vous devrez importer le schéma de base de données PowerDNS dans la base de données PowerDNS. Vous pouvez l'importer avec la commande suivante :

mysql -u pdnsadmin -p pdns  

Ensuite, vous devrez définir les détails de connexion à la base de données PowerDNS. Vous pouvez le faire en éditant le fichier pdns.local.gmysql.conf :

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

Modifiez les lignes suivantes :

# Configuration MySQL## Lancer gmysql backendlaunch+=gmysql# gmysql parametersgmysql-host=127.0.0.1gmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsadmingmysql-password=passwordgmysql-dnssec=yes# gmysql-socket= 

Enregistrez et fermez le fichier puis donnez la permission appropriée au fichier pdns.local.gmysql.conf :

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

Ensuite, arrêtez le serveur PowerDNS et vérifiez le PowerDNS avec la commande suivante :

systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9

Si tout va bien, vous devriez obtenir le résultat suivant :

Nov 02 10:43:47 gmysql Connexion réussie. Connecté à la base de données 'pdns' sur '127.0.0.1'.Nov 02 10:43:47 gmysql Connexion réussie. Connecté à la base de données 'pdns' sur '127.0.0.1'.Nov 02 10:43:47 gmysql Connexion réussie. Connecté à la base de données 'pdns' sur '127.0.0.1'.Nov 02 10:43:47 Lancement des discussions terminé, prêt à distribuer les questions

Ensuite, démarrez le serveur PowerDNS avec la commande suivante :

systemctl start pdns

À ce stade, PowerDNS est démarré et écoute sur le port 53. Vous pouvez le vérifier avec la commande suivante :

ss -alnp4 | grep pdn

Vous devriez obtenir le résultat suivant :

udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* utilisateurs :(("pdns_server",pid=33140,fd=5)) tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* utilisateurs :(("pdns_server",pid=33140,fd=7)) 

Installer l'administrateur PowerDNS

Dans cette section, nous allons vous montrer comment installer PowerDNS admin avec Nginx.

Installer les dépendances requises

Tout d'abord, installez toutes les dépendances requises pour l'administration PowerDNS avec la commande suivante :

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- flacon -y

Une fois toutes les dépendances installées, ajoutez le dépôt Node.js avec la commande suivante :

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

Ensuite, installez le Node.js avec la commande suivante :

apt-get install nodejs -y

Ensuite, ajoutez le dépôt de fil avec la commande suivante :

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.list

Ensuite, mettez à jour le référentiel et installez Yarn avec la commande suivante :

apt-get update -y
apt-get install yarn -y

À ce stade, toutes les dépendances requises sont installées, vous pouvez maintenant passer à l'étape suivante.

Télécharger l'administrateur PowerDNS

Ensuite, téléchargez la dernière version de PowerDNS admin depuis le référentiel Git vers le répertoire racine Nginx :

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdns

Ensuite, changez le répertoire vers le répertoire téléchargé et créez un environnement virtuel Python avec la commande suivante :

cd /var/www/html/pdns/
virtualenv -p flacon python3

Ensuite, activez l'environnement virtuel et installez toutes les dépendances Python avec la commande suivante :

source ./flask/bin/activate
pip install -r requirements.txt

Ensuite, désactivez depuis l'environnement virtuel avec la commande suivante :

désactiver

Définir la connexion à la base de données

Ensuite, vous devrez définir les détails de connexion à la base de données PowerDNS dans le fichier default_config.py :

nano /var/www/html/pdns/powerdnsadmin/default_config.py

Modifiez les lignes suivantes :

SALT ='votreclésecrète'SECRET_KEY ='votreclésecrète'BIND_ADDRESS ='0.0.0.0'PORT =9191HSTS_ENABLED =FalseOFFLINE_MODE =FalseSQLA_DB_USER ='pdnsadmin'SQLA_DB_PASSWORD ='password'SQLA_DB_HOST ='127.0.0.1'SQLA_DB_STRACKIFICATION' ='SQLMO_DB_NSIFICATION' ='SQLMO_DB_NSIFICATION Vrai

Enregistrez et fermez le fichier puis changez le répertoire en pdns et activez l'environnement virtuel :

cd /var/www/html/pdns/
source ./flask/bin/activate

Ensuite, mettez à jour la base de données avec la commande suivante :

export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
yarn install --pure-lockfile
flask assets build

Ensuite, désactivez l'environnement virtuel avec la commande suivante :

désactiver

Activer l'API d'administration PowerDNS

L'administrateur PowerDNS utilise l'API JSON pour lire les statistiques et modifier le contenu de la zone, les métadonnées et le matériel de clé DNSSEC. Vous pouvez l'activer en éditant le fichier pdns.conf :

nano /etc/powerdns/pdns.conf

Modifiez les lignes suivantes :

api=yesapi-key=votreclésecrète

Enregistrez et fermez le fichier puis redémarrez le service PowerDNS pour appliquer les modifications :

systemctl redémarrer pdns

Configurer Nginx pour l'administrateur PowerDNS

Ensuite, vous devrez configurer l'administrateur Nginx pour PowerDNS. Pour ce faire, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :

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

Ajoutez les lignes suivantes :

serveur { écouter *:80; nom_serveur pdnsadmin.exemple.com ; index index.html index.htm index.php; racine /var/www/html/pdns ; access_log /var/log/nginx/pdnsadmin_access.log combiné ; error_log /var/log/nginx/pdnsadmin_error.log ; client_max_body_size 10 m ; client_body_buffer_size 128k ; proxy_redirect désactivé ; proxy_connect_timeout 90 ; proxy_send_timeout 90 ; proxy_read_timeout 90 ; proxy_buffers 32 4k ; proxy_buffer_size 8k ; proxy_set_header Hôte $hôte ; 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 ; emplacement ~ ^/statique/ { inclure /etc/nginx/mime.types ; racine /var/www/html/pdns/powerdnsadmin ; emplacement ~* \.(jpg|jpeg|png|gif)$ { expire 365j ; } emplacement ~* ^.+.(css|js)$ { expire 7j ; } } emplacement / { proxy_pass http://unix:/run/pdnsadmin/socket ; proxy_read_timeout 120 ; proxy_connect_timeout 120 ; proxy_redirect désactivé ; }}

Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :

nginx -t

Vous devriez obtenir le résultat suivant :

nginx :la syntaxe du fichier de configuration /etc/nginx/nginx.conf est oknginx :le test du fichier de configuration /etc/nginx/nginx.conf est réussi

Ensuite, changez la propriété des pdns en www-data :

chown -R www-data:www-data /var/www/html/pdns

Enfin, redémarrez le service Nginx pour appliquer les modifications :

systemctl redémarrer nginx

Créer un fichier de service Systemd pour l'administrateur PowerDNS

Ensuite, vous devrez créer un fichier de service systemd pour gérer le service PowerDNS.

Commencez par créer un fichier de service pdns avec la commande suivante :

nano /etc/systemd/system/pdnsadmin.service

Ajoutez les lignes suivantes :

[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.target

Enregistrez et fermez le fichier puis créez un fichier sockt pdnsadmin avec la commande suivante :

nano /etc/systemd/system/pdnsadmin.socket

Ajoutez les lignes suivantes :

[Unit]Description=PowerDNS-Admin socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.target

Enregistrez et fermez le fichier puis créez les fichiers et répertoires requis avec la commande suivante :

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/

Ensuite, rechargez le démon systemd avec la commande suivante :

rechargement du démon systemctl

Ensuite, activez le service pdnsadmin pour qu'il démarre au redémarrage du système avec la commande suivante :

systemctl enable --now pdnsadmin.service pdnsadmin.socket

Ensuite, vérifiez l'état des deux services à l'aide de la commande suivante :

statut systemctl pdnsadmin.service pdnsadmin.socket

Vous devriez obtenir le résultat suivant :

 ? pdnsadmin.service - PowerDNS-Admin chargé :chargé (/etc/systemd/system/pdnsadmin.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis le lundi 2020-11-02 10:54:19 UTC ; il y a 5sTriggeredBy : ? pdnsadmin.socket PID principal :38881 (gunicorn) Tâches :2 (limite :2353) Mémoire :62,5 Mo 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] :Démarré PowerDNS-Admin.Nov 02 10:54:19 pdnsadmin.example.com gunicorn[38881] :[2020-11-02 10:54:19 +0000] [38881] [INFO] Démarrage de gunicorn 20.0.4Nov 02 10:54 :19 pdnsadmin.example.com gunicorn[38881] :[2020-11-02 10:54:19 +0000] [38881] [INFO] Écoute sur :unix :/run/pdnsadmin/socket (38881)Nov 02 10 :54:19 pdnsadmin.example.com gunicorn[38881] :[2020-11-02 10:54:19 +0000] [38881] [INFO] Utilisation de worker :syncNov 02 10:54:19 pdnsadmin.example.com gunicorn[ 38898] :[2020-11-02 10:54:19 +0000] [38898] [INFO] Démarrage du travailleur avec pid :38898 ? pdnsadmin.socket - Socket PowerDNS-Admin Chargé :chargé (/etc/systemd/system/pdnsadmin.socket; activé; préréglage fournisseur :activé) Actif :actif (en cours d'exécution) depuis le lundi 2020-11-02 10:54:19 UTC; il y a 5s Déclencheurs :? pdnsadmin.service Écoute :/run/pdnsadmin/socket (Stream) CGroup :/system.slice/pdnsadmin.socketNov 02 10:54:19 pdnsadmin.example.com systemd[1] :écoute sur le socket PowerDNS-Admin.

Accéder à l'interface utilisateur Web d'administration de PowerDNS

Maintenant, ouvrez votre navigateur Web et accédez à l'interface Web d'administration de PowerDNS à l'aide de l'URL http://pdnsadmin.example.com . Vous serez redirigé vers la page suivante :

Cliquez sur Créer un compte bouton. Vous devriez voir l'écran suivant :

Fournissez vos informations d'utilisateur administrateur et cliquez sur S'inscrire bouton pour créer un compte. Vous devriez voir la page de connexion de l'administrateur PowerDNS dans l'écran suivant :

Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur, puis cliquez sur Connexion bouton. Vous devriez voir l'interface Web d'administration de PowerDNS sur la page suivante :

Ici, fournissez l'URL de l'API PowerDNS pour vous connecter à PowerDNS et la gérer. Cliquez ensuite sur Mettre à jour bouton pour enregistrer les modifications. Vous devriez voir la page suivante :

Cliquez sur le tableau de bord bouton. Vous devriez voir le tableau de bord d'administration de PowerDNS dans l'écran suivant :

Conclusion

Toutes nos félicitations! vous avez installé et configuré avec succès PowerDNS et PowerDNS admin sur le serveur Ubuntu 20.04. Vous pouvez désormais créer des zones et ajouter des enregistrements via l'interface Web d'administration de PowerDNS.


Ubuntu
  1. Comment installer et configurer un serveur NFS sur Ubuntu 20.04

  2. Comment installer et configurer le serveur DHCP sur Ubuntu 20.04

  3. Comment installer et configurer le serveur Redis dans Ubuntu

  4. Comment installer et configurer Mariadb 10 dans Ubuntu 20.04

  5. Comment installer MariaDB sur Ubuntu 22.04

Comment installer et configurer DHCP sur Ubuntu 18.04

Comment installer MariaDB sur Ubuntu 18.04 / Ubuntu 16.04

Comment installer le serveur et le client NFS sur Ubuntu

Comment installer le serveur et le client NTP sur Ubuntu

Comment installer le serveur et le client UrBackup sur Ubuntu 20.04

Comment installer le serveur et le client Telnet sur Ubuntu