PowerDNS Authoritative Server (Ubuntu): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(35 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 21: Zeile 21:
=== Datenbank ===
=== Datenbank ===


==== Datenbank anlegen ====
[[Datenbank für PowerDNS erstellen (Version 4.1.X)|Datenbank für PowerDNS erstellen]]


Datenbank ''powerdns'' erstellen - siehe [[MySQL#Neue_Datenbank_anlegen:|MySQL]]
=== Service starten ===
 
 
Die Zugangsdaten für die Datenbank in der Datei


<pre>
<pre>
sudo vi /etc/powerdns/pdns.conf
sudo systemctl start pdns.service
sudo systemctl status pdns.service
</pre>
</pre>


am Ende hinzufügen:
=== Links ===


<pre>
[https://doc.powerdns.com/authoritative/installation.html https://doc.powerdns.com/authoritative/installation.html]
#################################
# database connection
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=powerdns
gmysql-dbname=powerdns
gmysql-password=<password>
</pre>


==== Tabellen anlegen ====
[https://www.linux.com/tutorials/how-install-powerdns-dns-server-ubuntu/ https://www.linux.com/tutorials/how-install-powerdns-dns-server-ubuntu/]


<pre>
[https://clouding.io/kb/en/how-to-install-powerdns-on-ubuntu-18-04/ https://clouding.io/kb/en/how-to-install-powerdns-on-ubuntu-18-04/]
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) CHARACTER SET 'utf8' DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';


CREATE UNIQUE INDEX name_index ON domains(name);
[https://www.debacher.de/wiki/Mein_eigenes_DynDNS https://www.debacher.de/wiki/Mein_eigenes_DynDNS]


== Konfiguration ==


CREATE TABLE records (
In der Grundkofiguration ist nur die Eingabe der Zugangsdaten für die Datenbank notwendig. Die Konfigurationen in Verbindung mit ''PowerDNS-Recursor'' ist dort beschrieben.
  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,
  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 CHARACTER SET 'latin1';


CREATE INDEX nametype_index ON records(name,type);
Siehe dazu [[Datenbank_für_PowerDNS_erstellen_(Version_4.1.X)#Datenbank_anlegen|Datenbank für PowerDNS erstellen]] bzw. [[PowerDNS_Recursor_(Ubuntu)#/etc/powerdns/pdns.conf|PowerDNS_Recursor]]
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX ordername ON records (ordername);


=== API für PowerDNS-Admin ===


CREATE TABLE supermasters (
==== /etc/powerdns/pdns.conf ====
  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';


 
<pre>
CREATE TABLE comments (
sudo vi /etc/powerdns/pdns.conf
  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,
  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);
</pre>
</pre>
=== Testdaten einfügen ===


<pre>
<pre>
# mysql pdnstest
log-dns-details=yes
mysql> INSERT INTO domains (name, type) values ('example.com', 'NATIVE');
log-dns-queries=yes
INSERT INTO records (domain_id, name, content, type,ttl,prio)
api=yes
VALUES (1,'example.com','localhost admin.example.com 1 10380 3600 604800 3600','SOA',86400,NULL);
api-key=<api key>
INSERT INTO records (domain_id, name, content, type,ttl,prio)
api-logfile=/var/log/pdns.log
VALUES (1,'example.com','dns-us1.powerdns.net','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'example.com','dns-eu1.powerdns.net','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'www.example.com','192.0.2.10','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'mail.example.com','192.0.2.12','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'localhost.example.com','127.0.0.1','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'example.com','mail.example.com','MX',120,25);
</pre>
</pre>


==== Links ====  
==== API-Key Generator ====


[https://doc.powerdns.com/authoritative/guides/basic-database.html https://doc.powerdns.com/authoritative/guides/basic-database.html]
[https://codepen.io/corenominal/pen/rxOmMJ https://codepen.io/corenominal/pen/rxOmMJ]


[https://github.com/PowerDNS/pdns/blob/rel/auth-4.1.x/modules/gmysqlbackend/schema.mysql.sql https://github.com/PowerDNS/pdns/blob/rel/auth-4.1.x/modules/gmysqlbackend/schema.mysql.sql]
==== Server neustarten ====


=== Links ===
<pre>
sudo systemctl restart pdns.service
</pre>


[https://doc.powerdns.com/authoritative/installation.html https://doc.powerdns.com/authoritative/installation.html]
==== Links ====
 
[https://www.linux.com/tutorials/how-install-powerdns-dns-server-ubuntu/ https://www.linux.com/tutorials/how-install-powerdns-dns-server-ubuntu/]
 
[https://clouding.io/kb/en/how-to-install-powerdns-on-ubuntu-18-04/ https://clouding.io/kb/en/how-to-install-powerdns-on-ubuntu-18-04/]
 
[https://www.debacher.de/wiki/Mein_eigenes_DynDNS https://www.debacher.de/wiki/Mein_eigenes_DynDNS]


== Konfiguration ==
[https://doc.powerdns.com/md/httpapi/README/ https://doc.powerdns.com/md/httpapi/README/]
 
=== Master / Slave ===
 
[https://www.claudiokuenzler.com/blog/844/powerdns-master-slave-dns-replication-mysql-backend https://www.claudiokuenzler.com/blog/844/powerdns-master-slave-dns-replication-mysql-backend]


== Benutzeroberfläche ==
== Benutzeroberfläche ==


=== Poweradmin ===
=== PowerDNS-Admin ===


==== Download ====
Siehe dazu [[PowerDNS-Admin (Ubuntu)|PowerDNS-Admin]]


[https://sourceforge.net/projects/poweradmin/ https://sourceforge.net/projects/poweradmin/]
=== Links allgemein ===


==== Links ====
[https://github.com/PowerDNS/pdns/wiki/WebFrontends https://github.com/PowerDNS/pdns/wiki/WebFrontend]


[https://www.poweradmin.org/ https://www.poweradmin.org/]
== Mehrere Domainserver ==


[https://blog.jonaharagon.com/installing-powerdns-admin-on-ubuntu-18-04/ https://blog.jonaharagon.com/installing-powerdns-admin-on-ubuntu-18-04/]
=== Master / Slave ===


=== PowerDNS-Admin ===
[https://doc.powerdns.com/authoritative/modes-of-operation.html https://doc.powerdns.com/authoritative/modes-of-operation.html]


==== Download ====
[https://www.claudiokuenzler.com/blog/844/powerdns-master-slave-dns-replication-mysql-backend https://www.claudiokuenzler.com/blog/844/powerdns-master-slave-dns-replication-mysql-backend]


[https://github.com/ngoduykhanh/PowerDNS-Admin https://github.com/ngoduykhanh/PowerDNS-Admin]
== Daten einfügen ==


==== Links ====
<pre>
--delete from domains;
--delete from records;


[https://blog.jonaharagon.com/installing-powerdns-admin-on-ubuntu-18-04/ https://blog.jonaharagon.com/installing-powerdns-admin-on-ubuntu-18-04/]
INSERT INTO domains (name, type)
 
VALUES ('dynamic-dns.at', 'NATIVE');
=== Links allgemein ===
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','localhost admin.kirner.or.at 2020022201 10800 3600 604800 3600','SOA',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','dns1.dynamic-dns.at','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','dns2.dynamic-dns.at','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'www.dynamic-dns.at','222.122.134.13','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dns1.dynamic-dns.at','222.122.134.13','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dns2.dynamic-dns.at','222.122.134.14','A',120,NULL);
--INSERT INTO records (domain_id, name, content, type,ttl,prio)
--VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'mail1.kirner.at','222.122.134.11','A',120,NULL);
--INSERT INTO records (domain_id, name, content, type,ttl,prio)
--VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'mail2.kirner.at','222.122.134.12','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'localhost.dynamic-dns.at','127.0.0.1','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','mail.kirner.or.at','MX',120,25);
</pre>


[https://github.com/PowerDNS/pdns/wiki/WebFrontends https://github.com/PowerDNS/pdns/wiki/WebFrontend
=== Hinweise ===


<pre>
$ORIGIN example.com.
"@" ist ein Joker-Symbol für den Wert von $ORIGIN
</pre>


Zurück zu [[Domain selbst verwalten]]
Zurück zu [[PowerDNS (Ubuntu)|PowerDNS]]

Aktuelle Version vom 26. Februar 2020, 12:03 Uhr

Allgemein

https://www.powerdns.com/

Voraussetzungen

SQL-Datenbank => siehe MariaDB

Installation

Binaries

sudo apt-get -y install pdns-server pdns-backend-mysql

Links

https://doc.powerdns.com/authoritative/installation.html

Datenbank

Datenbank für PowerDNS erstellen

Service starten

sudo systemctl start pdns.service
sudo systemctl status pdns.service

Links

https://doc.powerdns.com/authoritative/installation.html

https://www.linux.com/tutorials/how-install-powerdns-dns-server-ubuntu/

https://clouding.io/kb/en/how-to-install-powerdns-on-ubuntu-18-04/

https://www.debacher.de/wiki/Mein_eigenes_DynDNS

Konfiguration

In der Grundkofiguration ist nur die Eingabe der Zugangsdaten für die Datenbank notwendig. Die Konfigurationen in Verbindung mit PowerDNS-Recursor ist dort beschrieben.

Siehe dazu Datenbank für PowerDNS erstellen bzw. PowerDNS_Recursor

API für PowerDNS-Admin

/etc/powerdns/pdns.conf

sudo vi /etc/powerdns/pdns.conf
log-dns-details=yes
log-dns-queries=yes
api=yes
api-key=<api key>
api-logfile=/var/log/pdns.log

API-Key Generator

https://codepen.io/corenominal/pen/rxOmMJ

Server neustarten

sudo systemctl restart pdns.service

Links

https://doc.powerdns.com/md/httpapi/README/

Benutzeroberfläche

PowerDNS-Admin

Siehe dazu PowerDNS-Admin

Links allgemein

https://github.com/PowerDNS/pdns/wiki/WebFrontend

Mehrere Domainserver

Master / Slave

https://doc.powerdns.com/authoritative/modes-of-operation.html

https://www.claudiokuenzler.com/blog/844/powerdns-master-slave-dns-replication-mysql-backend

Daten einfügen

--delete from domains;
--delete from records;

INSERT INTO domains (name, type) 
VALUES ('dynamic-dns.at', 'NATIVE');
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','localhost admin.kirner.or.at 2020022201 10800 3600 604800 3600','SOA',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','dns1.dynamic-dns.at','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','dns2.dynamic-dns.at','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'www.dynamic-dns.at','222.122.134.13','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dns1.dynamic-dns.at','222.122.134.13','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dns2.dynamic-dns.at','222.122.134.14','A',120,NULL);
--INSERT INTO records (domain_id, name, content, type,ttl,prio) 
--VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'mail1.kirner.at','222.122.134.11','A',120,NULL);
--INSERT INTO records (domain_id, name, content, type,ttl,prio) 
--VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'mail2.kirner.at','222.122.134.12','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'localhost.dynamic-dns.at','127.0.0.1','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 
VALUES ((SELECT id FROM domains WHERE name='dynamic-dns.at'),'dynamic-dns.at','mail.kirner.or.at','MX',120,25);

Hinweise

$ORIGIN example.com.
"@" ist ein Joker-Symbol für den Wert von $ORIGIN

Zurück zu PowerDNS