Difference between revisions of "PowerDNS: Instalasi di Ubuntu"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(17 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Install PowerDNS | + | Install PowerDNS di Ubuntu |
− | |||
− | Operating system: Ubuntu 14.04 LTS server | + | Operating system: Ubuntu 14.04 LTS server |
− | IP Address: 192.168. | + | IP Address: 192.168.0.100/24 |
− | Hostname: | + | Hostname: refserver |
− | |||
− | |||
− | + | ==Update apps== | |
− | |||
− | sudo apt-get | + | 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 | + | 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. | ||
− | PowerDNS | + | 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 | |
− | ubuntu | + | 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 INDEX | + | CREATE TABLE domains ( |
− | CREATE INDEX nametype_index ON records(name,type); | + | id INT AUTO_INCREMENT, |
− | CREATE INDEX domain_id ON records(domain_id); | + | 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; | + | 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 ; | |
− | |||
− | |||
− | |||
− | gmysql | ||
− | |||
− | sudo service pdns restart | + | sudo vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf |
− | Test PowerDNS | + | |
− | + | 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: | Set the name server IP address: | ||
− | auto lo | + | auto lo |
− | iface lo inet loopback | + | 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 | + | 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== | ==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.