PowerDNS

Inleiding

De installatie van PowerDNS is gebasseerd op FreeBSD besturingsysteem.

Controle

Controleer of poort 53 al openstaat voor een andere DNS zoals Named

# sockstat -l

Mocht dit het geval zijn dan dien je eerst deze services te stoppen en te verwijderen voordat je PowerDNS kunt installeren en gebruiken.

Installatie

Installeer MySQL Server indien het nog niet op de server aanwezig is. MySQL Client wordt dan meteen mee geïnstalleerd

# pkg install dns/powerdns

To have your system build the port:

# cd /usr/ports/dns/powerdns/ && make install clean

De volgende instellingen moeten ingesteld worden:

Ga naar rc.conf bestand.

# vi /etc/rc.conf

En stel in dat MySQL automatisch opstart na een reboot.

mysql_enable="YES"

Installeer een database voor PowerDNS

Als eerste moet MySQL gestart worden

# /usr/local/etc/rc.d/mysql-server start

Vervolgens moet de root wachtwoord van MySQL ingesteld worden

# mysql -u root
# SET PASSWORD FOR 'root'@'localhost' = PASSWORD('verzin een uniek wachtwoord');
# SET PASSWORD FOR 'root'@'host_name' = PASSWORD('verzin een uniek wachtwoord');

Log in de MySQL client

# mysql -u root -p

Nu moet er een database genaamd ‘PowerDNS’ aangemaakt worden

# CREATE DATABASE pdns;
# use pdns;

Maak nu de benodigde tabellen, kolommen en indexes

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)
) Engine=InnoDB;

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

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


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


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) NOT NULL,
  comment               VARCHAR(64000) NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX comments_domain_id_idx ON comments (domain_id);
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;

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;

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;

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

ALTER TABLE `records` ADD CONSTRAINT `records_ibfk_1` FOREIGN KEY (`domain_id`)
REFERENCES `domains` (`id`) ON DELETE CASCADE;

Het is geen goed idee om de root wachtwoord te gebruiken voor PowerDNS installatie. Dus we gaan een database gebruiker aanmaken en rechten geven voor de database die we zojuist hebben aangemaakt

# CREATE USER 'pdns'@'localhost' IDENTIFIED by ' ''verzin een uniek wachtwoord'' ';
# GRANT ALL PRIVILEGES ON pdns. * to 'pdns'@'localhost' IDENTIFIED by ' ''verzin een uniek wachtwoord'' ';
# FLUSH PRIVILEGES;
# quit;

Installeer PowerDNS

Installeer PowerDNS via portsnap

# cd /usr/ports/dns/powerdns/ && make install clean

Zorg ervoor dat PowerDNS opstart. Ga naar rc.conf bestand.

# vi /etc/rc.conf

En stel in dat PowerDNS automatisch opstart na een reboot.

pdns_enable="YES"

PowerDNS nu opstarten.

# /usr/local/etc/rc.d/pdns start

Installeer PowerDNS recursor

Installeer PowerDNS recursor via portsnap

# cd /usr/ports/dns/powerdns-recursor/ && make install clean

Zorg ervoor dat PowerDNS recursor opstart. Ga naar rc.conf bestand.

# vi /etc/rc.conf

En stel in dat PowerDNS recursor automatisch opstart na een reboot.

pdns_recursor_enable="YES"

PowerDNS recursor nu opstarten.

# /usr/local/etc/rc.d/pdns-recursor start

Configureer PowerDNS Master Server

Nu PowerDNS is geïnstalleerd, moet er een aantal aanpassingen in het configuratie bestand

# vi /usr/local/etc/pdns/pdns.conf

Haal de commentaar van de volgende regel weg en verander het naar 127.0.0.1:5300. Dit geeft aan PowerDNS door dat de gevraagde queries naar de PowerDNS-recursor gestuurd dient te worden, dat luistert op de poort 5300.

recursor=127.0.0.1:5300

Voeg het onderstaande aan het gedeelte launch toe.

launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=powerdns
gmysql-password=(het gekozen wachtwoord voor de gebruiker powerdns van de MySQL server)
gmysql-dbname=pdns

Extra instellingen

allow-axfr-ips=84.22.100.69/24
allow-recursion=127.0.0.1
daemon=yes
disable-axfr=no
guardian=yes
local-address=127.0.0.1
local-port=53
log-dns-details=on
master=yes
slave=no

De recursor listener moet ingesteld worden op een andere poort dan PowerDNS al gebruikt, namelijk udp poort 53. Je hebt hierboven al de poort 5300 ingesteld, zo deze moeten we hieronder weer gebruiken.

# vi /usr/local/etc/pdns/recursor.conf

Zet de poort op 5300.

local-port=5300

Bovenaan in het bestand staat het kopje loopback 127.0.0.1

# allow-from    If set, only allow these comma separated netmasks to recurse
#
#allow-from=127.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10
allow-from=127.0.0.0/8

Nu moeten we ervoor zorgen dat de PowerDNS en PowerDNS recursor opnieuw opstart.

# /usr/local/etc/rc.d/pdns restart
# /usr/local/etc/rc.d/pdns-recursor restart

Als je IPTables gebruikt als firewall, dan moet je http en DNS queries wel toestaan. Dit doe je door de volgende regels toe te voegen aan de firewall.

# iptables -A INPUT -m udp -p udp --sport 53 -j ACCEPT
# iptables -A INPUT -m tcp -p tcp --sport 80 -j ACCEPT
# service iptables save

Configureer PowerDNS Slave Server

Nu PowerDNS is geïnstalleerd, moet er een aantal aanpassingen in het configuratie bestand

# vi /usr/local/etc/pdns/pdns.conf

Haal de commentaar van de volgende regel weg en verander het naar 127.0.0.1:5300. Dit geeft aan PowerDNS door dat de gevraagde queries naar de PowerDNS-recursor gestuurd dient te worden, dat luistert op de poort 5300.

recursor=127.0.0.1:5300

Voeg het onderstaande aan het gedeelte launch toe.

launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=powerdns
gmysql-password=(het gekozen wachtwoord voor de gebruiker powerdns van de MySQL server)
gmysql-dbname=pdns

Extra instellingen

allow-axfr-ips=37.252.121.42/24
allow-recursion=127.0.0.1
daemon=yes
disable-axfr=no
guardian=yes
local-address=127.0.0.1
local-port=53
log-dns-details=on
master=no
slave=yes

De recursor listener moet ingesteld worden op een andere poort dan PowerDNS al gebruikt, namelijk udp poort 53. Je hebt hierboven al de poort 5300 ingesteld, zo deze moeten we hieronder weer gebruiken.

# vi /usr/local/etc/pdns/recursor.conf

Zet de poort op 5300.

local-port=5300

Bovenaan in het bestand staat het kopje loopback 127.0.0.1

# allow-from    If set, only allow these comma separated netmasks to recurse
#
#allow-from=127.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10
allow-from=127.0.0.0/8

Nu moeten we ervoor zorgen dat de PowerDNS en PowerDNS recursor opnieuw opstart.

# /usr/local/etc/rc.d/pdns restart
# /usr/local/etc/rc.d/pdns-recursor restart

Als je IPTables gebruikt als firewall, dan moet je http en DNS queries wel toestaan. Dit doe je door de volgende regels toe te voegen aan de firewall.

# iptables -A INPUT -m udp -p udp --sport 53 -j ACCEPT
# iptables -A INPUT -m tcp -p tcp --sport 80 -j ACCEPT
# service iptables save

Log in de MySQL client, selecteer de pdns database en voeg een regel toe voor supermasters tabel met daarbij het ip adres Master en de hostname van de Slave.

# mysql -u root -p
# mysql> use pdns;
# mysql> insert into supermasters values ('37.252.121.42', 'ns2.markterweele.nl', 'admin');
# mysql> exit;

Aanpassen hostfile op Master en Slave server

Op starten van PowerDNS

# ee /etc/hosts

Volgende twee regels toevoegen:

37.252.121.42  ns1.markterweele.nl
84.22.100.69    ns2.markterweele.nl

Beheer

Op starten van PowerDNS

# /usr/local/sbin/pdns_server &

Zie ook

External links

FreeBSD

FreeBSD installatie Dit zijn de installatie vereisten:

Partions

1G /

1G /tmp

10G /var

10G /usr

2xram SWAP

De rest /home

DNS

/etc/resolf.conf

domain  markterweele.nl
nameserver      46.19.36.88
nameserver      46.19.38.115

User en Groups

De volgende group moet handmatig aangemaakt worden

  • users

De volgende gebruikers moeten worden aangemaakt:

  • admin
  • mark

Alle Users moeten in de group ‘users’ en ‘wheel’ komen

# pw useradd -n mark -G wheel -m -h 0

Vergeet niet dat je meteen erna een wachtwoord moet intypen voor de desbetreffende gebruiker

password for user mark:

Bij de user mark moet meteen een public key worden ingesteld.

/home/mark/.ssh/authorized_keys

ssh-rsa (hier komt de key te staan)

Shell voor ROOT en MARK user

chsh -s /usr/local/bin/bash

Extra software

Installeer de volgende extra software

  • pico
  • manuel pages
  • ports

Ports upgraden

Met CVSup kan nu de ports tree worden geupdate (Let op: is per 28 februari 2013 uitgefaseerd!)

zie ook Cvsup

Ook kan er portsnap gebruikt worden.

Zorg ervoor dat overbodige updates niet worden meegenomen, om te voorkomen dat er te veel wordt geupdate naar de server toe. Voer de onderstaande commando uit:

# vi /etc/portsnap.conf

Voeg de onderstaande regels toe in het bestand:

REFUSE audio finance games multimedia net-p2p

Zorg ervoor dat er wordt gekeken welke portsnap updates beschikbaar zijn:

# portsnap fetch

De eerste keer moet portsnap geextract worden, de volgende keren kan je “portsnap update” commando gebruiken.

# portsnap extract

Nu moet portsnap geupdate worden om alles te downloaden naar de server:

# portsnap update

Elke volgende keer dat portsnap geupdate moet worden:

# portsnap fetch update

3 Ware

tw_cli instaleren vanuit de Ports

Locatie /usr/ports/sysutils/tw_cli

Mail aliasses

/etc/mail/aliases

root:   systeembeheer@markterweele.nl

The program newaliases must be run after this file is updated for any changes to show through to sendmail.

# newaliases

Raid

File aanpassen voor Raid status

/etc/periodic/daily/400.status-disks

dump W || rc=3

echo ""
echo "TW Raid Interface status"
/usr/local/sbin/tw_cli info c0 u0;;

Tuning

# cp /etc/defaults/make.conf /etc/make.conf
# ee /etc/make.conf 

Edit the file, and look for the line starting: #CPUTYPE=

CPUTYPE?=prescott (Core 2 Duo)

#CFLAGS= -O -pipe
CFLAGS= -O2 -pipe -funroll-loops

Applying Security Patches

# freebsd-update fetch
# freebsd-update install

Rollback option:

# freebsd-update rollback

Performing Major and Minor Version Upgrades

# freebsd-update -r 10.3-RELEASE upgrade

External links