Difference between revisions of "PowerDNS: Instalasi di Ubuntu"

From OnnoWiki
Jump to navigation Jump to search
 
(7 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:
Line 130: Line 181:
 
==Konfigurasi PowerDNS==
 
==Konfigurasi PowerDNS==
  
Now, we should configure PowerDNS to use MySQL as backend to store Zone files and records.
+
Konfigurasi PowerDNS untuk menggunakan MySQL sebagai backend untuk menyimpan file Zone dan records.
  
Remove the existing PowerDNS configuration files.
+
Buang file konfigurasi PowerDNS yang ada.
  
 
  sudo rm /etc/powerdns/pdns.d/*.*
 
  sudo rm /etc/powerdns/pdns.d/*.*
  
Then, create file /etc/powerdns/pdns.d/pdns.local.gmysql.conf file;
+
Buat file /etc/powerdns/pdns.d/pdns.local.gmysql.conf ;
  
 
  sudo vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf
 
  sudo vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf
  
Add the following lines. Set the correct database name and database user which we created earlier.
+
Tambahkan kalimat berikut, yang sesuai dengan konfigurasi yang kita lakukan sebelumnya:
  
 
  # MySQL Configuration
 
  # MySQL Configuration
Line 153: Line 204:
 
  gmysql-password=ubuntu
 
  gmysql-password=ubuntu
  
Finally restart powerdns service.
+
Restart powerdns service.
  
 
  sudo service pdns restart
 
  sudo service pdns restart
  
Test PowerDNS
+
==Test PowerDNS==
  
First, edit /ect/resolv.conf file,
+
Edit file /ect/resolv.conf ,
  
 
  sudo vi /etc/resolv.conf
 
  sudo vi /etc/resolv.conf
 +
 +
isi
 +
 +
nameserver 192.168.0.100
 +
 +
sesuai dengan IP address server
  
 
Set the name server IP address:
 
Set the name server IP address:
Line 171: Line 228:
 
  auto eth0
 
  auto eth0
 
  iface eth0 inet static
 
  iface eth0 inet static
  address 192.168.1.250
+
  address 192.168.0.100
 
  netmask 255.255.255.0
 
  netmask 255.255.255.0
  network 192.168.1.0
+
  network 192.168.0.0
  broadcast 192.168.1.255
+
  broadcast 192.168.0.255
  gateway 192.168.1.1
+
  gateway 192.168.0.223
  dns-nameservers 192.168.1.250
+
  dns-nameservers 192.168.0.223
 
  dns-search home
 
  dns-search home
  
We completed all installation and configuration parts. Now, we will check whether PowerDNS is really working or not.
+
Kita selesai dengan semua bagian instalasi dan konfigurasi.
 +
Selanjutnya, kita perlu cek apakah PowerDNS dapat berjalan dengan baik atau tidak.
  
First check if PowerDNS is listening:
+
Pertama-tama, cek apakah PowerDNS mendengarkan:
  
 
  sudo netstat -tap | grep pdns
 
  sudo netstat -tap | grep pdns
  
Sample output:
+
contoh output:
  
  tcp        0      0 *:domain                *:*                    LISTEN      1549/pdns_server-in
+
  tcp        0      0 *:domain                *:*                    LISTEN      4845/pdns_server-in
  
Now, enter the following command to check PowerDNS is working:
+
Sekarang, masukan perintah berikut, untuk mencek apakah PowerDNS berjalan dengan baik:
  
 
  sudo dig @127.0.0.1
 
  sudo dig @127.0.0.1
  
Or,
+
atau,
  
 
  sudo dig @localhost
 
  sudo dig @localhost
  
Sample output:
+
Contoh output:
  
 
  ; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1
 
  ; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1
Line 203: Line 261:
 
  ;; global options: +cmd
 
  ;; global options: +cmd
 
  ;; Got answer:
 
  ;; Got answer:
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65075
+
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16025
 
  ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
 
  ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
  ;; WARNING: recursion requested but not available
+
  ;; WARNING: recursion requested but not available  
 
   
 
   
 
  ;; OPT PSEUDOSECTION:
 
  ;; OPT PSEUDOSECTION:
 
  ; EDNS: version: 0, flags:; udp: 2800
 
  ; EDNS: version: 0, flags:; udp: 2800
 
  ;; QUESTION SECTION:
 
  ;; QUESTION SECTION:
  ;.               IN   NS
+
  ;. IN NS
 
   
 
   
 
  ;; Query time: 4 msec
 
  ;; Query time: 4 msec
 
  ;; SERVER: 127.0.0.1#53(127.0.0.1)
 
  ;; SERVER: 127.0.0.1#53(127.0.0.1)
  ;; WHEN: Mon Mar 30 14:38:58 IST 2015
+
  ;; WHEN: Mon Jun 01 09:00:26 WIB 2015
 
  ;; MSG SIZE  rcvd: 29
 
  ;; MSG SIZE  rcvd: 29
  
 
Or,
 
Or,
  
  sudo dig @192.168.1.250
+
  sudo dig @192.168.0.100
  
Where, 192.168.1.250 is my PowerDNS server’s IP address.
+
Dimana, 192.168.0.100 adalah IP address dari PowerDNS server
  
Sample output:
+
Contoh output:
  
  ; <<>> DiG 9.9.5-3-Ubuntu <<>> @192.168.1.250
+
  ; <<>> DiG 9.9.5-3-Ubuntu <<>> @192.168.0.100
 
  ; (1 server found)
 
  ; (1 server found)
 
  ;; global options: +cmd
 
  ;; global options: +cmd
 
  ;; Got answer:
 
  ;; Got answer:
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39576
+
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7241
 
  ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
 
  ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
 
  ;; WARNING: recursion requested but not available
 
  ;; WARNING: recursion requested but not available
Line 236: Line 294:
 
  ; EDNS: version: 0, flags:; udp: 2800
 
  ; EDNS: version: 0, flags:; udp: 2800
 
  ;; QUESTION SECTION:
 
  ;; QUESTION SECTION:
  ;.               IN   NS
+
  ;. IN NS
 
   
 
   
  ;; Query time: 0 msec
+
  ;; Query time: 4 msec
  ;; SERVER: 192.168.1.250#53(192.168.1.250)
+
  ;; SERVER: 192.168.0.100#53(192.168.0.100)
  ;; WHEN: Mon Mar 30 14:39:49 IST 2015
+
  ;; WHEN: Mon Jun 01 09:01:43 WIB 2015
 
  ;; MSG SIZE  rcvd: 29
 
  ;; MSG SIZE  rcvd: 29
  
That’s it. PowerDNS is ready to use.
+
Selesai sudah. PowerDNS siap digunakan.
 
 
I have successfully installed and configured PowerDNS, now what? It is time to manage PowerDNS using Poweradmin administration tool.
 
  
 
==Referensi==
 
==Referensi==
  
 
* http://www.unixmen.com/how-to-install-powerdns-on-ubuntu-14-04/
 
* http://www.unixmen.com/how-to-install-powerdns-on-ubuntu-14-04/

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