DNS singkatan dari Domain Name System, intinya DNS ini digunakan untuk mentranslate/menterjemahkan ip address ke nama domain, baik IPv4 maupun IPv6. Contoh ip 31.13.79.246 di translatekan oleh dns menjadi www.facebook.com.
Yang dibutuhkan :
- server ubuntu, saya menggunakan versi 12.04 32 bit dengan ip 192.168.1.1
Install mysql-server dan mysql-client
apt-get install mysql-server mysql-client
saya menggunakan password root untuk user root
Konfigure mysql
vi /etc/mysql/my.cnf
beri tanda pagar di depan bind-address=127.0.0.1
Install powerdns
apt-get install pdns-server pnds-backend-mysql
Configure Database yang akan digunakan oleh powerdns
mysql -u root -proot
masukan sql script berikut :
CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'poweruser'@'%' 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) ) 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); quit;
dapat dilihat bahwa untuk database powerdns user yang digunakan adalah 'poweruser' dengan password 'ubuntu'
Konfigurasi powerDNS
rm /etc/powerdns/pdns.d/*
vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf
isi
# MySQL Configuration # # Launch gmysql backend launch=gmysql # gmysql parameters gmysql-host=localhost gmysql-dbname=powerdns gmysql-user=poweruser gmysql-password=ubuntu
vi /etc/powerdns/pdns.conf, pastika configurasi nya seperti ini. Jika tidak ada, tambahkan ...
allow-recursion=0.0.0.0/0 config-dir=/etc/powerdns daemon=yes guardian=yes include=/etc/powerdns/pdns.d launch= setgid=pdns setuid=pdns version-string=powerdns local-address=192.168.0.100 local-port=53 log-dns-details=yes log-dns-queries=yes logging-facility=0 loglevel=6 recursor=8.8.8.8
bisa dilihat pada konfigurasi di atas, bahwa "recursor=8.8.8.8". Seperti yang kita ketahui bahwa 8.8.8.8 adalah ip dns nya google, artinya apa? artinya saya mememinta bantuan dns google jika ada user yang mengakses domain yang tidak diketahui oleh dns server yang saya buat. contoh :
dns server milik saya hanya bisa mentranslate ip 192.168.1.1 menjadi www.rizal.org, jika user ingin mengakses www.facebook.com ip dns saya akan meminta bantuan dns google untuk mencari ip www.facebook.com tersebut.
dns google tersebut bisa dibilang dns recursor yang fungsinya melakukan pencarian melalui DNS sebagai tanggapan permintaan dari resolver yaitu client.
Restart powerDNS
/etc/init.d/pdns restart
untuk cek apakah powerDNS sudah berfungsi dapat menggunakan perintah :
netstat -tap | grep pdns
Cek dns server
dig www.facebook.com @192.168.1.1
Install poweradmin, yang berfungsi untuk memenej powerdns :
apt-get install apache2-mpm-prefork php5-mysql libapache2-mod-php5 php-pear php-mdb2 php-mdb2-driver-mysql
cd /var/www
wget http://nchc.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
tar zxvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7 poweradmin
chown www-data.www-data -R poweradmin
cp /var/www/poweradmin/inc/config-me.inc.php /var/www/poweradmin/inc/config.inc.php
selanjutnya install poweradmin dari browser : 192.168.1.1/poweradmin/install
password nya = ubuntu
setelah itu delete/rename folder install agar tidak kembali pada proses install :
rm -rf /var/www/poweradmin/install
buka kembali di browser : 192.168.1.1/poweradmin, jika mengalami error seperti berikut, install php5-mycrypt : apt-get install php5-mcrypt
restart apache : /etc/init.d/apache2 restart, akses kembali poweradmin
jika mengalami error seperti ini :
configurasi file /var/www/poweradmin/inc/config.inc.php
session key didapat dengan cara :
ketik di terminal echo -n poweradmin | md5sum
jika sudah akses kembali poweradmin, username root password ubuntu :
jika sudah, sekarang kita akan membuat ip 192.168.1.1 dikenal sebagai www.rizal.org,
klik add master zone, isikan seperti berikut kemudia add zone :
setalah itu untuk melihat, klik list zone :
klik gambar "note", isikan sebagai berikut. Option A artinya memperkenalkan kan www.rizal.org menjadi ip 192.168.1.1 :
tes dengan cara : dig www.rizal.org @192.168.1.1
sekian tutorial kali ini, semoga bermanfaat. Mohon maaf apabila ada yang salah/kurang tepat dalam tutorial kali ini ...
referensi :
http://cyberlearning.web.id/wiki/index.php/PowerDNS:_Instalasi_Server_%26_Recursor_di_satu_mesin