Outils pour utilisateurs

Outils du site


informatique:linux:powerdns

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:linux:powerdns [2024/04/12 08:38]
benoit [Installation]
informatique:linux:powerdns [2024/04/12 13:00] (Version actuelle)
benoit [Installation]
Ligne 3: Ligne 3:
 ===== Introduction ===== ===== Introduction =====
  
-Ce tutoriel présente l'​installation de PowerDNS avec une base de données en arrière plan.+:!: EN COURS DE REDACTION :!: 
 + 
 +Ce tutoriel présente l'​installation de PowerDNS avec une base de données en arrière plan avec gestion des ACL.
  
 ===== Installation ===== ===== Installation =====
Ligne 9: Ligne 11:
 Installation :  Installation : 
  
-  apt-get install pdns-server pdns-tools pdns-backend-mysql ​pdns-recursor+  apt-get install pdns-server ​pdns-recursor dnsdist ​pdns-tools pdns-backend-mysql ​mariadb-client mariadb-server lua-sql-mysql
  
 +Description des composants installés : 
 +  * **pdns-server** : Serveur DNS privé
 +  * **pdns-recursor** : Serveur DNS pour les requêtes recursives vers internet
 +  * **dnsdist** : Loadbalancer DNS pouvant utiliser des ACL
 +  * **pdns-tools** : Utilitaire pour PowerDNS
 +  * **pdns-backend-mysql** : Module pour utiliser MariaDB en backend
 +  * **mariadb-client,​ mariadb-server** : Client et Serveur de base de données MariaDB
 +  * **lua-sql-mysql**
 +
 + 
 ===== Configuration ===== ===== Configuration =====
-Se rendre dans le répertoire et sauvegarder les fichiers de conf originaux :  
-  /​etc/​powerdns 
-  mv pdns.conf pdns.conf.orig 
-  mv recursor.conf recursor.conf.orig 
  
-Editer ​le fichier de configuration ​:  +==== Base de données ==== 
-  vim /​etc/​powerdns/​pdns.conf+ 
 +Créer la base de données :  
 +  mysql 
 +  create database powerdns; 
 +  GRANT ALL PRIVILEGES on powerdns.* to '​pdns'​@'​localhost'​ IDENTIFIED BY '​xxxxxxxxxxxx';​ 
 +  FLUSH PRIVILEGES;​ 
 +  QUIT; 
 + 
 +Créer ​le fichier de structure de base de données ​:  
 +  vim schema_powerdns.sql 
 + 
 +Insérer le contenu suivant :  
 +  CREATE TABLE domains ( 
 +    id                    INT AUTO_INCREMENT,​ 
 +    name                  VARCHAR(255) NOT NULL, 
 +    master ​               VARCHAR(128) DEFAULT NULL, 
 +    last_check ​           INT DEFAULT NULL, 
 +    type                  VARCHAR(8) NOT NULL, 
 +    notified_serial ​      INT UNSIGNED DEFAULT NULL, 
 +    account ​              ​VARCHAR(40) CHARACTER SET '​utf8'​ DEFAULT NULL, 
 +    options ​              ​VARCHAR(64000) DEFAULT NULL, 
 +    catalog ​              ​VARCHAR(255) DEFAULT NULL, 
 +    PRIMARY KEY (id) 
 +  ) Engine=InnoDB CHARACTER SET '​latin1';​
   ​   ​
 +  CREATE UNIQUE INDEX name_index ON domains(name);​
 +  CREATE INDEX catalog_idx ON domains(catalog);​
 +  ​
 +  ​
 +  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,
 +    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,
 +    published ​            BOOL DEFAULT 1,
 +    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);
 +
 +==== PowerDNS ====
 +
 +Sauvegarde le fichier de conf par défaut, créer un nouveau et l'​éditer :
 +  mv /​etc/​powerdns/​pdns.conf /​etc/​powerdns/​pdns.conf.orig
 +  touch /​etc/​powerdns/​pdns.conf
 +  chown root:pdns /​etc/​powerdns/​pdns.conf
 +  vim /​etc/​powerdns/​pdns.conf
 +
 Insérer le contenu suivant :  Insérer le contenu suivant : 
-  # Allow zonetransfers only to these subnets +  # Backend ​MySQL
-  allow-axfr-ips=127.0.0.0/​8,::​1 +
-  # Allow recursive queries +
-  allow-recursion=127.0.0.1 +
-  # Disable zonetransfers but do allow TCP queries +
-  disable-axfr=no +
-  # Seconds to store packets in the PacketCache +
-  cache-ttl=20 +
-  # Which backends to launch and order to query them in (here is MySQL)+
   launch=gmysql   launch=gmysql
-  # Log under a specific facility +  # Listening IP 
-  ​logging-facility=0 +  ​local-address=127.0.0.1 
-  # Amount of logging. Higher is more. Do not set below 3 +  # Listening IP (pdns-recursor will forward DNS queries du this port) 
-  ​loglevel=4 +  ​local-port=54 
-  # +  # MariaDB Backend Config 
-  ​out-of-zone-additional-processing=yes +  ​gmysql-host=127.0.0.1 
-  ​# Seconds to store query results in the QueryCache +  gmysql-port=3306 
-  ​query-cache-ttl=20 +  gmysql-dbname=powerdns 
-  ​# +  gmysql-user=pdns 
-  ​recursive-cache-ttl=150 +  ​gmysql-group=client 
-  ​recursor=127.0.0.1:54+  ​gmysql-password=eiur546fTEd6gEaFr 
 +  ​gmysql-dnssec=no 
 +  ​gmysql-innodb-read-committed=yes 
 +  ​gmysql-timeout=10 
 + 
 +===== pdnsutil ===== 
 + 
 +==== Zone/​Domaine ==== 
 + 
 +Créer une zone :  
 +  pdnsutil create-zone domain.local 
 + 
 +Ajouter un enregistrement Type A :    
 +  pdnsutil add-record domain.local www A 60 127.0.0.1
informatique/linux/powerdns.1712903938.txt.gz · Dernière modification: 2024/04/12 08:38 par benoit