Ci-dessous, les différences entre deux révisions de la page.
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 10:01] benoit [Installation] |
informatique:linux:powerdns [2024/04/12 13:00] (Version actuelle) benoit [Installation] |
||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
Installation : | Installation : | ||
- | apt-get install pdns-server pdns-recursor dnsdist pdns-tools pdns-backend-mysql mariadb-client mariadb-server | + | 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 : | Description des composants installés : | ||
Ligne 20: | Ligne 20: | ||
* **pdns-backend-mysql** : Module pour utiliser MariaDB en backend | * **pdns-backend-mysql** : Module pour utiliser MariaDB en backend | ||
* **mariadb-client, mariadb-server** : Client et Serveur de base de données MariaDB | * **mariadb-client, mariadb-server** : Client et Serveur de base de données MariaDB | ||
+ | * **lua-sql-mysql** | ||
Ligne 31: | Ligne 32: | ||
GRANT ALL PRIVILEGES on powerdns.* to 'pdns'@'localhost' IDENTIFIED BY 'xxxxxxxxxxxx'; | GRANT ALL PRIVILEGES on powerdns.* to 'pdns'@'localhost' IDENTIFIED BY 'xxxxxxxxxxxx'; | ||
FLUSH PRIVILEGES; | 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 : | ||
+ | # Backend MySQL | ||
+ | launch=gmysql | ||
+ | # Listening IP | ||
+ | local-address=127.0.0.1 | ||
+ | # Listening IP (pdns-recursor will forward DNS queries du this port) | ||
+ | local-port=54 | ||
+ | # MariaDB Backend Config | ||
+ | gmysql-host=127.0.0.1 | ||
+ | gmysql-port=3306 | ||
+ | gmysql-dbname=powerdns | ||
+ | gmysql-user=pdns | ||
+ | gmysql-group=client | ||
+ | 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 |