IPv6: Instalasi PowerDNS dengan Percona Database di Ubuntu
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 Percona
Percona memanage repo-nya sendiri. Kemungkinan besar tidak ada di distribusi Ubuntu / Debian anda. kita perlu menambahkan secara manual ke repo kita.
Untuk Debian dan Ubuntu, kita perlu mengambil key menggunakan perintah
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
Akan keluar
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.BDLjYrSFYy --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A gpg: requesting key CD2EFD2A from hkp server keys.gnupg.net gpg: key CD2EFD2A: public key "Percona MySQL Development Team <mysql-dev@percona.com>" imported gpg: Total number processed: 1 gpg: imported: 1
Untuk Ubuntu dan Debian, cek versi-nya menggunakan perintah
lsb_release -c
misalnya keluar
Codename: trusty
Edit sources.list
vi /etc/apt/sources.list
Tambahkan kalimat berikut dibagian bawah file, pastikan DIST kita ganti dengan nama distribusi yang kita gunakan (dalam hal ini trusty)
deb http://repo.percona.com/apt DIST main deb-src http://repo.percona.com/apt DIST main
Dalam hal ini
deb http://repo.percona.com/apt trusty main deb-src http://repo.percona.com/apt trusty main
Selanjutnya kita perlu mengatur agar packages dari Percona di utamakan daripada packages yang lain. Caranya,
touch /etc/apt/preferences.d/00percona.pref vi /etc/apt/preferences.d/00percona.pref
Tambahkan kalimat,
Package: * Pin: release o=Percona Development Team Pin-Priority: 1001
(New) kita dapat menginstalasi,
apt-get update apt-get install percona-server-server
Akan men-Download sekitar 15Mbyte data dan akan menggunakan space sekitar 150Mbyte.
(Replacement) Tergantung versi MySQL atau MariaDB yang kita gunakan. Untuk mengganti versi 5.5 gunakan percona-server-server-5.5 package dan percona-server-server-5.6 untuk 5.6. MariaDB 10.0 digantikan dengan Percona Server 5.6.
apt-get update apt-get install percona-server-server-5.6
Jika perintah ini berhasil diselesaikan tanpa error, Percona server dapat di instalasi dan berjalan dengan baik. Akan tetapi, jika kita memperoleh error saat instalasi, pastikan kita mempunyai memory yang cukup. Informasi lebih lanjut tentang error saat menjalankan Percona dapat dilihat di log file
/var/log/mysqld.log.
Percona server di distribusikan dengan beberapa UDF (User Defined Function) UDF yang bermanfaat dari Percona Toolkit. Jalankan perintah berikut:
mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'" mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'" mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"
atau
mysql -u root -p123456 -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'" mysql -u root -p123456 -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'" mysql -u root -p123456 -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"
(New Only) Jika menginstalasi fresh system, kita akan ditanya untuk men-set root database password. Sebaiknya kita menjalankan mysqlsecureinstallation untuk memastikan tidak ada masalah security yang tertinggal,
/usr/bin/mysql_secure_installation
Setelah semua package di instalasi, langkah terakhir yang perlu kita lakukan adalah menjalankan server,
service mysql start
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 -p123456
Akan keluar
Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 66 Server version: 5.6.24-72.2 Percona Server (GPL), Release 72.2, Revision 8d0f85b Copyright (c) 2009-2015 Percona LLC and/or its affiliates Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
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'; FLUSH PRIVILEGES; USE powerdns; 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) ); 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); 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
Konfigurasi PowerDNS agar dapat menangani IPv6.
Edit /etc/powerdns/pdns.conf
vi /etc/powerdns/pdns.conf
Pastikan:
do-ipv6-additional-processing=yes local-address=0.0.0.0 local-ipv6=::
Agar semua mesin di Internet bisa me-recurse (HATI-HATI akan membuat mesin anda lemot), dapat di tambahkan:
allow-recursion=0.0.0.0/0,::/0
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
iface eth0 inet6 static address 2001:470:36:ab6::100 netmask 64 gateway 2001:470:36:ab6::1 dns-nameservers 2001:470:36:ab6::100
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 (harus ada tcp6 untuk memastikan DNS IPv6 bekerja dengan baik):
tcp 0 0 *:domain *:* LISTEN 5388/pdns_server-in tcp6 0 0 [::]:domain [::]:* LISTEN 5388/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
Cek menggunakan
dig @::1
Pastikan keluar misalnya
; <<>> DiG 9.9.5-3-Ubuntu <<>> @::1 ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33955 ;; 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: 1 msec ;; SERVER: ::1#53(::1) ;; WHEN: Tue Jun 30 09:40:36 WIB 2015 ;; MSG SIZE rcvd: 29
Juga dengan (asumsi IPv6 server adalah 2001:470:36:ab6::100)
dig @2001:470:36:ab6::100
Keluar kira-kira:
; <<>> DiG 9.9.5-3-Ubuntu <<>> @2001:470:36:ab6::100 ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60637 ;; 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: 0 msec ;; SERVER: 2001:470:36:ab6::100#53(2001:470:36:ab6::100) ;; WHEN: Tue Jun 30 09:41:27 WIB 2015 ;; MSG SIZE rcvd: 29
Selesai sudah. PowerDNS siap digunakan.
Referensi