Outils pour utilisateurs

Outils du site


linux:powerdns

POWERDNS & POWERADMIN : Serveur DNS et interface web

PowerDNS est un service de noms offrant les prestations de Bind et même plus !
PowerAdmin est une interface PHP-MySQL qui permet d'administrer (comme son nom l'indique) le serveur pdns.

Administration PowerDNS

PowerDNS


PowerDNS est capable d'intéragir avec plusieurs types de backends(Mysql,fichiers de zone Bind,Postgres…)
Pour cet exemple, le choix de la BDD Mysql est relatif à l'applicatif PowerAdmin qui effectuera les modifs en base également.

  • Voici les paquets à installer:

aptitude install pdns-server pdns-doc pdns-backend-mysql

  • Le fichier de configuration du daemon pdns:

vi /etc/powerdns/pdns.conf
Exemple de conf:
allow-recursion=127.0.0.1/8,10.10.10.0/24
cache-ttl=20
config-dir=/etc/powerdns
daemon=yes
disable-axfr=yes
distributor-threads=1
guardian=yes
launch=gmysql
lazy-recursion=yes
local-address=10.10.10.100
local-port=53
logfile=/var/log/pdns.log
logging-facility=0
loglevel=4
master=yes
max-queue-length=5000
max-tcp-connections=10
module-dir=/usr/lib/powerdns
negquery-cache-ttl=10
out-of-zone-additional-processing=no
query-cache-ttl=20
query-logging=yes
queue-limit=1500
query-local-address=10.10.10.100
receiver-threads=1
recursive-cache-ttl=10
recursor=8.8.8.8
setgid=pdns
setuid=pdns
socket-dir=/var/run
use-logfile=yes
webserver=no
version-string=powerdns
include=/etc/powerdns/pdns.d

  • Rediriger les logs dans le fichier désiré par le biais de RSYSLOG en rapport avec la déclaration “logging-facility” :

vi /etc/rsyslog.conf
local0.* /var/log/pdns.log

  • Créer la BDD associé qui servira de stockage au daemon pdns:

mysql -Bse "create database powerdns"
mysql -Bse "grant all privileges on powerdns.* to 'powerdns'@'localhost' identified by 'P@$$w0rd';"
mysql

use powerdns

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 DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
);

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

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

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

  • Configuration du backend MySQL :

vi /etc/powerdns/pdns.d/pdns.local
gmysql-host=127.0.0.1
gmysql-user=powerdns
gmysql-password=P@$$w0rd
gmysql-dbname=powerdns

  • Redémarrer le service :

/etc/init.d/pdns restart

  • Mode debug en quelque sorte :

/etc/init.d/pdns monitor

PowerAdmin

Poweradmin

  • Installer les dépendances :

aptitude install libapache2-mod-php5 php5-cgi php-pear php5-curl php5-gd php5-mcrypt php5-ming php5-mysql php5-xmlrpc

  • Télécharger la “latest” version :

wget "https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz"
tar xvzf poweradmin-2.1.6.tgz
mv poweradmin-2.1.6 /var/www/poweradmin

  • Créer le fichier qui permettra d'écrire la conf et positionner les permissions pour RW apache:

touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/

  • Terminer la configuration directement par HTTP:

PowerAdmin installation

Renseigner la BDD de PowerDNS dans la coniguration de PowerAdmin afin de pouvoir effectuer les créations/modifications/suppression de zones DNS via HTTP !
De mon ressenti, l'applicatif est fiable et répond à mes attentes avec une possibilité de “gabaris” intéressante au niveau des profils utilisateurs, fichiers de zones…
Le design est pas fantastique mais ça c'est useless. ;-)

Réplication DNS entre PowerDNS et Bind

Réplication DNS

Pour aller plus loin et vérifier la compatiblité entre les 2 serveurs DNS

Contexte
  • DNS primaire: PowerDNS (backend MySQL)
  • DNS secondaire: Bind (backend txt files)
  • Configuration du primaire :

vi /etc/powerdns/pdns.conf

# If enabled, restrict zonetransfers to originate from these IP addresses
allow-axfr-ips=10.10.10.101
# Disable zonetransfers but do allow TCP queries
disable-axfr=no

:!: En cas de firewall, pensez à autoriser TCP 53 pour le transfert de zones…!

  • Configuration du secondaire :

vi /etc/bind/named.conf.zones

zone "test.local" {
        type slave;
        masters { 10.10.10.100; };
        file "/etc/bind/zones/db.test.local";
        notify no;
};

  • Les notifications sont automatiques vers tous les NS déclarés dans une zone, mais au cas où pour forcer le master PDNS à notifier le slave :

/usr/bin/pdns_control notify-host test.local 10.10.10.101

  • Résultats dans les logs du MASTER PowerDNS:

Apr 23 16:00:55 sogo pdns[4256]: 1 domain for which we are master needs notifications
Apr 23 16:00:55 sogo pdns[4256]: Query: select content,ttl,prio,type,domain_id,name from records where type='NS' and name='test.local'
Apr 23 16:01:00 sogo pdns[4152]: Queued notification of domain 'test.local' to 10.10.10.101
Apr 23 16:01:00 sogo pdns[4152]: Query: update domains set notified_serial=2013042300 where id=5
Apr 23 16:01:00 sogo pdns[4256]: AXFR of domain 'test.local' initiated by 10.10.10.101
Apr 23 16:01:00 sogo pdns[4256]: AXFR of domain 'test.local' to 10.10.10.101 finished

  • Résultats dans les logs du SLAVE Bind:

23-Apr-2013 16:02:30.566 general: info: zone test.local/IN: transferred serial 2013042301
23-Apr-2013 16:02:30.566 xfer-in: info: transfer of 'test.local/IN' from 10.10.10.100#53: Transfer completed: 3 messages, 9 records, 301 bytes, 0.005 secs (60200 bytes/sec)

linux/powerdns.txt · Dernière modification: 15/04/2016 à 21:15 (modification externe)

Outils de la page