Difference between revisions of "PowerDNS: Instalasi di Ubuntu"

From OnnoWiki
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 64: Line 64:
  
 
  CREATE DATABASE powerdns;
 
  CREATE DATABASE powerdns;
  GRANT ALL ON powerdns.* TO 'poweruser '@'localhost' IDENTIFIED BY 'ubuntu';
+
  GRANT ALL ON powerdns.* TO 'poweruser'@'localhost' IDENTIFIED BY 'ubuntu';
  
 
Disini,
 
Disini,
Line 82: Line 82:
 
  USE powerdns;
 
  USE powerdns;
  
Buat tabel dan record.
+
Buat tabel dan record yang dibutuhkan:
 
 
Buat tabel domains:
 
  
 
  CREATE TABLE domains (
 
  CREATE TABLE domains (
id INT auto_increment,
+
  id                   INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
+
  name                 VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
+
  master               VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
+
  last_check           INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
+
  type                 VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
+
  notified_serial       INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
+
  account               VARCHAR(40) DEFAULT NULL,
primary key (id)
+
  PRIMARY KEY (id)
  );
+
  ) Engine=InnoDB;
 +
 
  CREATE UNIQUE INDEX name_index ON domains(name);
 
  CREATE UNIQUE INDEX name_index ON domains(name);
 
+
Buat tabel records:
+
 
 
 
  CREATE TABLE records (
 
  CREATE TABLE records (
id INT auto_increment,
+
  id                   INT AUTO_INCREMENT,
domain_id INT DEFAULT NULL,
+
  domain_id             INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
+
  name                 VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
+
  type                 VARCHAR(10) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
+
  content               VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
+
  ttl                   INT DEFAULT NULL,
prio INT DEFAULT NULL,
+
  prio                 INT DEFAULT NULL,
change_date INT DEFAULT NULL,
+
  change_date           INT DEFAULT NULL,
primary key(id)
+
  disabled              TINYINT(1) DEFAULT 0,
 +
  ordername            VARCHAR(255) BINARY DEFAULT NULL,
 +
  auth                  TINYINT(1) DEFAULT 1,
 +
  PRIMARY KEY (id)
 
  );
 
  );
 
+
   
  CREATE INDEX rec_name_index ON records(name);
 
 
  CREATE INDEX nametype_index ON records(name,type);
 
  CREATE INDEX nametype_index ON records(name,type);
 
  CREATE INDEX domain_id ON records(domain_id);
 
  CREATE INDEX domain_id ON records(domain_id);
 
+
CREATE INDEX recordorder ON records (domain_id, ordername);
Buat tabel supermasters:
+
 
   
 
   
 
  CREATE TABLE supermasters (
 
  CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
+
  ip                   VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
+
  nameserver           VARCHAR(255) NOT NULL,
  account VARCHAR(40) DEFAULT NULL
+
  account              VARCHAR(40) NOT NULL,
 +
  PRIMARY KEY (ip, nameserver)
 +
);
 +
 +
 +
  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)
 +
);
 +
 +
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)
 +
);
 +
 +
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)
 +
);
 +
 +
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)
 
  );
 
  );
 +
 +
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
  
 
Keluar dari MySQL menggunakan perintah:
 
Keluar dari MySQL menggunakan perintah:

Latest revision as of 09:13, 1 June 2015

Install PowerDNS di Ubuntu

Operating system: Ubuntu 14.04 LTS server
IP Address: 192.168.0.100/24
Hostname: refserver


Update apps

sudo apt-get update
sudo apt-get upgrade -y


Instalasi & Setup MySQL

sudo apt-get install mysql-server mysql-client

Jika sedang belajar dapat menggunakan password root 123456. Untuk operasional sebaiknya jangan menggunakan password root 123456.

Edit /etc/mysql/my.cnf agar MySQL mendengarkan semua interfaces.

sudo vi /etc/mysql/my.cnf

Cari kalimat berikut, dan di beri pagar (#).

[...]
#bind-address           = 127.0.0.1
[...]

Simpan dan tutup file. Restart MySQL service.

sudo service mysql restart

Selesai sudah proses instalasi MySQL. Selanjutnya kita akan menginstalasi PowerDNS.


Install PowerDNS

Instalasi

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

Lakukan:

  • Tekan 'Yes' untuk Configure database for pdns-backend-mysql with dbconfig-common?
  • Masukan password root MySQL (dalam contoh ini 123456).
  • Masukan password untuk pdns-backend-mysql untuk register ke database server. Untuk memudahkan gunakan password 123456
  • Ulangi masukan password untuk pdns-backend-mysql untuk register ke database server.

Sekarang PowerDNS sudah di instalasi.


Create PowerDNS Database dan User di MySQL

Masuk ke MySQL

sudo mysql -u root -p

untuk password root 123456 dapat menggunakan

sudo mysql -u root -p123456

Buat database ‘powerdns’. Database user 'poweruser'. Atau kita dapat membuat sendiri juga

CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'poweruser'@'localhost' IDENTIFIED BY 'ubuntu';

Disini,

  • powerdns – adalah database;
  • poweruser – adalah database user,
  • ubuntu – adalah password for the ‘poweruser’ user.

Sebaiknya menggunakan password yang lebih baik agar security lebih aman.

Tulis perintah berikut untuk update user settings.

FLUSH PRIVILEGES;

Gunakan powerdns database, menggunakan perintah:

USE powerdns;

Buat tabel dan record yang dibutuhkan:

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

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


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

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

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

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

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

Keluar dari MySQL menggunakan perintah:

quit;

Konfigurasi PowerDNS

Konfigurasi PowerDNS untuk menggunakan MySQL sebagai backend untuk menyimpan file Zone dan records.

Buang file konfigurasi PowerDNS yang ada.

sudo rm /etc/powerdns/pdns.d/*.*

Buat file /etc/powerdns/pdns.d/pdns.local.gmysql.conf ;

sudo vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf

Tambahkan kalimat berikut, yang sesuai dengan konfigurasi yang kita lakukan sebelumnya:

# MySQL Configuration
#
# Launch gmysql backend
launch=gmysql

# gmysql parameters
gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=poweruser
gmysql-password=ubuntu

Restart powerdns service.

sudo service pdns restart

Test PowerDNS

Edit file /ect/resolv.conf ,

sudo vi /etc/resolv.conf

isi

nameserver 192.168.0.100

sesuai dengan IP address server

Set the name server IP address:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.223
dns-nameservers 192.168.0.223
dns-search home

Kita selesai dengan semua bagian instalasi dan konfigurasi. Selanjutnya, kita perlu cek apakah PowerDNS dapat berjalan dengan baik atau tidak.

Pertama-tama, cek apakah PowerDNS mendengarkan:

sudo netstat -tap | grep pdns

contoh output:

tcp        0      0 *:domain                *:*                     LISTEN      4845/pdns_server-in

Sekarang, masukan perintah berikut, untuk mencek apakah PowerDNS berjalan dengan baik:

sudo dig @127.0.0.1

atau,

sudo dig @localhost

Contoh output:

; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16025
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available 

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;.				IN	NS

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jun 01 09:00:26 WIB 2015
;; MSG SIZE  rcvd: 29

Or,

sudo dig @192.168.0.100

Dimana, 192.168.0.100 adalah IP address dari PowerDNS server

Contoh output:

; <<>> DiG 9.9.5-3-Ubuntu <<>> @192.168.0.100
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7241
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;.				IN	NS

;; Query time: 4 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Mon Jun 01 09:01:43 WIB 2015
;; MSG SIZE  rcvd: 29

Selesai sudah. PowerDNS siap digunakan.

Referensi