powerDNS installieren als eigener DNS Server

Bei den meisten Domain reggern bekommt man ja gratis deren DNS zur Verfügung, aber es gibt viele Situationen, wo ein eigener DNS ganz sinnvoll ist. Vor allem wenn man nicht abhängig sein will von den anderen – Stichwort “Server Ausfall”.

Das ganze ist auf Debian ausgelegt, weil ich persönlich das für das beste Serversystem halte. Es ist schön minimalistisch :)
Befehl ausführen: apt-get install pdns-backend-mysql pdns-doc pdns-server
Damit haben wir powerdns mit mysql installiert. Sollte mysql fehlen, wird das gleich mit installiert.
Als nächstes schaut mal ob nicht ein dns auf Port 53 arbeitet: lsof -i :53. Sollte da ein anderer DNS lauschen, killt den einfach und am besten aus rc raus nehmen oder deinstalliert diesen einfach.

Als nächstes geht mit einem Editor in die Datei /etc/powerdns/pdns.conf und sucht nach “launch=”. Da dann das Raute (#) davor entfernen (falls vorhanden) und dann das da hin schreiben “lauch=gmysql”. Damit weiß der powerDNS, das er auf die mysql Datenbank zurück greifen muss.

Als nächstes dann die Zeile “local-address=” suchen. Da ersetzten wir die “0.0.0.0″ durch die IP, aufder der DNS lauschen soll. Das wäre es dann mit der Datei.

Danach müsstet Ihr nur noch die Datei /etc/powerdns/pdns.d/pdns.local bearbeiten. Da wird sehr warscheinlich nichts drin stehen, als irgendwelche auskommentierte Kommentare. Fügt da dann folgende Einträge ein:
gmysql-host=LOKALER_HOST
gmysql-user=POWERDNS_USER
gmysql-password=POWERDNS_USER_PASSWORD
gmysql-dbname=POWERDNS_DATENBANK_NAME

So weit so gut. Damit sind wir jetzt zu der Mysql Datenbank angekommen. Legt jetzt eine Mysql Datenbank an, die dann für powerDNS ist: CREATE DATABASE IF NOT EXISTS `POWERDNS_DATENBANK_NAME` ;

Vergebt dann die Rechte zu der Datenbank an den User, den Ihr dafür vorgesehen habt.
Danach müsst Ihr nur noch die Tabellen anlegen:
CREATE TABLE IF NOT EXISTS `domains` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`master` varchar(128) DEFAULT NULL,
`last_check` int(11) DEFAULT NULL,
`type` varchar(6) NOT NULL,
`notified_serial` int(11) DEFAULT NULL,
`account` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_index` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS `records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`domain_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`type` varchar(6) DEFAULT NULL,
`content` varchar(255) DEFAULT NULL,
`ttl` int(11) DEFAULT NULL,
`prio` int(11) DEFAULT NULL,
`change_date` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `rec_name_index` (`name`),
KEY `nametype_index` (`name`,`type`),
KEY `domain_id` (`domain_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Die Tabelle “domains” dient dazu, die Domains einzutragen. In die Tabelle “records” müssen dann logischerweise die Umleitungen/Rekords. Als Verknüpfung dienen die Felder domains.id und records.domain_id.

So dann könnt Ihr jetzt mal einen Beispiel Eintrag rein machen:
insert into domains set id='1',name='beispiel-domain.de', type='NATIVE';
insert into records set domain_id='1', name='test.beispiel-domain.de', type='A', content='192.168.1.123', ttl='300', change_date=CURDATE();

Jetzt könnt Ihr mal den Nameserver starten und abfragen:
/etc/init.d/pdns start
dig @NAMESERVER_IP a test.beispiel-domain.de

Als Antwort sollte dann kommen:
web:~# dig @NAMESERVER_IP a test.beispiel-domain.de

; <<>> DiG 9.6-ESV-R3 <<>> @NAMESERVER_IP a test.beispiel-domain.de
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29903
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;test.beispiel-domain.de. IN A

;; ANSWER SECTION:
test.beispiel-domain.de. 300 IN A 192.168.1.123

;; Query time: 12 msec
;; SERVER: NAMESERVER_IP#53(NAMESERVER_IP)
;; WHEN: Sun Jan 30 21:44:42 2011
;; MSG SIZE rcvd: 57

Wenn alles passt: Herzlichen Glückwunsch. Der powerDNS ist installiert. Wenn nicht, dann Kommentar hinterlassen mit den Fehler :)

Benutzer, die diese Seite fanden, suchten auch nach:

powerdns mysql create domain
DNS Server Tabelle
installation powerdns debian
pdns einrichten
dns service programmieren
PowerDNS beispiel
powerdns installatioin
allintext: “powerd by wordpress” Flags
powerdns insert local address
powerdns "recursion requested but not available"
  1. cooles tool. schaut sehr einfach aus und das mysql backend ist ja perfekt für weboberflächen, wenn man zb seinen usern ein tool zum einträge ändern zur verfügung stellen möchte..
    perfekt für deinen domain robot oder? ;)

    • Ralph
    • 31. Jan. 2011 9:12pm

    Ja genau. Das setzte ich auch ein und ich habe einen neuen Nameserver aufgesetzt. Darum dachte ich mal “Schreibst du das Tutorial”. Es bringt halt die Vorteile mit, das man es super einfach steuern kann :)

  1. Noch keine TrackBacks.