Category Archives: Information Technology

Install PowerDNS & Poweradmin Pada Debian Squeeze

Artikel ini akan menunjukkan cara menginstall PowerDNS authoritative name server dengan backend MySQL sebagai record database, dan Poweradmin sebagai web interface atau control panel-nya. Dalam contoh ini, saya menggunakan Debian Squeeze sebagai server, dengan hostname ns1.ariw.net dan IP address 192.168.1.100. Saya hanya akan setup 1 server master aja, dan kalau Anda ingin menambahkan 1 server tambahan (sebagai slave) akan sangat mudah dengan melakukan replikasi database MySQL.

Install MySQL Server
Untuk menginstall MySQL, perintah di terminal:

apt-get install mysql-server mysql-client

Anda akan diminta memasukkan password baru untuk user root MySQL – password ini bukan password root system Linux.

New password for the MySQL "root" user:
Repeat password for the MySQL "root" user:

Kita akan membuat MySQL server listen di semua interface (bukan hanya localhost / 127.0.0.1), hal ini penting untuk database replication. Untuk itu edit file /etc/mysql/my.cnf dan beri komen (tanda #) pada baris bind-address = 127.0.0.1: vi /etc/mysql/my.cnf

#bind-address = 127.0.0.1

Selanjutnya restart MySQL:

/etc/init.d/mysql restart

Install PowerDNS
Untuk Install PowerDNS perintahnya adalah:

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

Konfigurasi PowerDNS berlokasi di direktori /etc/powerdns/. Tapi sebelumnya kita akan membuat user dan database dulu di MySQL:

mysql -u root -p

Masukkan root password, lalu di MySQL shell kita buat dabase untuk PowerDNS:

CREATE DATABASE powerdns;

Selanjutnya kita buat user (poweradmin) untuk PowerDNS:

GRANT ALL ON powerdns.* TO 'poweradmin'@'localhost' IDENTIFIED BY 'poweradminpassword';
GRANT ALL ON powerdns.* TO 'poweradmin'@'localhost.localdomain' IDENTIFIED BY 'poweradmin_password';
FLUSH PRIVILEGES;

(Ganti “poweradminpassword” dengan password yang diinginkan) Sekarang kita buat tables yang diperlukan PowerDNS

USE powerdns;
CREATE TABLE domains ( id INT autoincrement, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, lastcheck 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 autoincrement, domainid INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(6) DEFAULT NULL, content VARCHAR(255) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, primary key(id) );
CREATE INDEX recnameindex ON records(name); CREATE INDEX nametypeindex ON records(name,type); CREATE INDEX domainid ON records(domain_id);
CREATE TABLE supermasters ( ip VARCHAR(25) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) DEFAULT NULL );
quit;

Dan sekarang kita konfigurasi PowerDNS agar menggunakan backend MySQL:

vi /etc/powerdns/pdns.conf

Tambahkan direktif launch = gmysql di pdns.conf:

[...]
# # launch Which backends to launch and order to query them in # #
launch= launch=gmysql
[...]

Selanjutnya buka /etc/powerdns/pdns.d/pdns.local dan buat agar isinya seperti ini:

# Here come the local changes the user made, like configuration of # the several backends that exist.
gmysql-host=127.0.0.1
gmysql-user=poweradmin
gmysql-password=poweradmin_password
gmysql-dbname=powerdns

Restart servce pdns:

/etc/init.d/pdns restart

Sampai sini instalasi PowerDNS authoritative name server udah selesai dan bisa digunakan. Untuk belajar gimana cara menggunakannya tanpa bantuan control panel bisa merujuk ke halaman ini: http://downloads.powerdns.com/documentation/html/index/

Install Poweradmin
Sekarang mari install Poweradmin, control panel berbasis web untuk PowerDNS. Karena Poweradmin ditulis dalam PHP, jadi kita harus menginstall web server (dalam contoh ini Apache) dan PHP:

apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-ming php5-mysql php5-xmlrpc gettext php-db php-mdb2 php-mdb2-driver-mysql

Kemudian restart Apache web server:

/etc/init.d/apache2 restart

Semua persyaratan Poweradmin sudah terinstall, jadi kita bisa lanjut ke proses instalasi Poweradmin (saya akan install di direktori /var/www, /var/www adalah document root default web server Apache di Debian, kalau Anda ingin document root di lokasi lain silahkan disesuaikan aja). Kunjungi halaman http://www.poweradmin.org/trac/wiki/GettingPoweradmin dan download release terakhir Poweradmin:

cd /tmp/
wget http://www.poweradmin.org/download/poweradmin-2.1.5.tgz

Lalu install di direktori /var/www/poweradmin/ seperti ini:

tar xvfz poweradmin-2.1.5.tgz
mv poweradmin-2.1.5 /var/www/poweradmin
touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/

Sekarang menggunakan browser buka halaman Poweradmin installer (http://ns1.ariw.net/poweradmin/install/index.php atau http://192.168.1.100/poweradmin/install/index.php): dan isi detail database. Disarankan untuk menggunakan user root atau yang selevel dengan itu. Isikan juga password user admin yang akan kita gunakan untuk login ke web interface Poweradmin nanti.

Di halaman berikutnya, isi detail untuk MySQL user poweradmin yang udah kita buat di langkah sebelumnya. Dan juga isikan dua default nameserver yang akan digunakan ketika membuat zona domain. Lalu di halaman berikutnya kita akan diminta untuk meng-execute beberapa perintah MySQL. Langkah ini ngga perlu dilakukan lagi karena tadi udah kita lakukan.

Sekarang Anda bisa langsung membuka halaman http://ns1.ariw.net/poweradmin/ atau http://192.168.1.100/poweradmin/ dan login dengan username admin dan password yang tadi dibuat.

Setelah login kita bisa langsung membuat zona domain. Tentu harus udah ada pemahaman tentang DNS server sebelumnya, apa itu SOA, NS, A, PTR, dan sebagainya. Mungkin pemahaman tentang DNS akan saya jelaskan di posting berikutnya. Happy exploring!

Google Geotargeting

Beberapa waktu yang lalu, saya mengganti alamat blog ini dari yang tadinya koole.web.id menjadi ariw.net. Proses perpindahan domain ini sebenernya ngga sulit, cuma memang ada beberapa langkah yang sedikit “techie” semisal melakukan “search and replace” di database, dan langkah yang paling penting adalah memberikan “301 redirect” pada domain yang lama. 301 redirect gunanya supaya search engine seperti Google ngga meng-index lagi domain yang lama, tapi mulai meng-index domain baru tanpa mengorbankan “score SEO” yang dimiliki domain lama.

Ah tapi saya ngga akan terlalu jauh ngebahas soal itu. Yang mau saya bahas kali ini adalah tentang Google Geotargeting. Sebenernya saya tau tentang istilah ini juga baru beberapa jam yang lalu. Yaitu ketika saya mulai penasaran, kok pengunjung yang datang dari Google ke blog ini sekarang NGGA ADA? Dari yang tadinya ~50-60 hits per hari (yang datang dari Google) sekarang cuma 0 atau paling banyak 1. Setelah Googling ternyata dugaan saya bener, Google memberikan hasil pencarian berdasarkan Country Code Top Level Domain, selain juga berdasarkan bahasa yang digunakan di website, IP address, dan beberapa faktor lainnya.

Jadi misalnya gini, domain saya sebelumnya adalah koole.web.id yang merupakan Country Code Top Level Domain (ccTLD) Indonesia (.id), sehingga website saya nantinya akan (lebih sering) muncul pada hasil pencarian user yang berasal dari Indonesia atau berbahasa Indonesia. Nah berhubung domainnya sekarang menggunakan TLD .net maka website ini pun ngga lagi dikhususkan untuk user yang berbahasa atau berlokasi di Indonesia. Tapi bukan berarti domain .net ini ngga muncul sama sekali di Indonesia, cuma memang Google akan memberikan “weight / score” tersendiri.

Untungnya Google memberikan fasilitas “Geographic target” di Google Webmaster Tools. Kita harus daftar dulu dan verifikasi kepemilikan domain untuk menggunakan fasilitas ini. Jadi kalau kita udah mengeset Geographic target, misalnya ke Indonesia, walaupun domain yang digunakan TLD general atau negara lain, maka Google akan memberikan score lebih kepada domain tersebut untuk ditampilkan pada hasil pencarian user Indonesia. Untuk mengeset Geographic target di Google Webmaster Tools:

  1. Di Home Page Webmaster Tools, klik website yang diinginkan (kita bisa menambahkan banyak site / domain di Webmaster Tools)
  2. Pada Site Configuration, klik Settings
  3. Di bagian Geographic target, pilih negara yang diinginkan. Kalau Anda ngga mau domainnya terasosiasi dengan negara atau region tertentu, maka pilih Unlisted

Untuk mengetahui lebih lengkap tentang Geotargeting, faktor-faktor yang digunakan, dan daftar domain International / General bisa merujuk ke halaman ini:http://support.google.com/webmasters/bin/answer.py?hl=en&answer=62399

Merubah Timezone CentOS / Red Hat

Untuk mengetahui waktu dan timezone di server:

[root@lifebit ~] date 
Sun Feb 19 21:42:06 CST 2012

Dari contoh di atas terlihat bahwa server menggunakan timezone CST, atau Central Standard Time (GMT -6). Untuk merubah timezone menjadi Indonesia / Jakarta (GMT +7), execute perintah ini:

[root@lifebit ~] ln -s /usr/share/zoneinfo/Asia/Jakarta /etc/localtime

Kalau kita lihat sekarang, waktu di server udah menggunakan timezone lokal Jakarta:

[root@lifebit ~] date Mon Feb 20 10:49:31 WIT 2012

Setting SSH Menggunakan Certificate (Debian – Mac)

ssh_rsaTutorial ini akan menunjukkan gimana caranya mengkonfigurasi SSH agar bisa login menggunakan certificate tanpa password, pada komputer client Mac dan server Debian. Harusnya juga bisa untuk OS lainnya tapi saya belum pernah coba. Alasan orang menggunakan certificate untuk SSH mereka rata-rata adalah demi keamanan, karena orang yang ngga punya private key ngga akan bisa login ke server sekalipun di-brute force attack. Tapi alasan saya pribadi adalah karena males mengetikkan password di terminal, ehehe..

Pertama, buka dulu program Terminal yang ada di Mac (⌘ + spasi dan ketik “terminal”) lalu ketikkan perintah ini untuk menggenerate key pair (private & public key):

ssh-keygen -t rsa -b 2048

Kita akan diberikan beberapa pertanyaan:

Enter file in which to save the key (/home/username/.ssh/id_rsa): (Tekan Enter) 
Enter passphrase (empty for no passphrase): (Tekan Enter) 
Enter same passphrase again: (Tekan Enter)

Sampai sini di komputer Mac kita udah ada pasangan key, yaitu private key (id_rsa) dan public key (id_rsa.pub) yang lokasinya ada di /Users/YOURUSERNAMEHERE/.ssh/. Private key (id_rsa) bisa diibaratkan anak kunci yang selalu kita bawa kemana-mana untuk membuka gembok server (public key / id_rsa.pub). Private key ada di sisi client, sedangkan public key kita letakkan di server. Masih di Terminal, ketikkan perintah ini:

cat /Users/YOURUSERNAMEHERE/.ssh/id_rsa.pub

Perintah cat fungsinya untuk melihat isi file id_rsa.pub. Kemudian copy isi file id_rsa.pub tadi (ctrl + c) dan nantinya akan kita paste di server. Berikutnya login ke server menggunakan SSH, lalu edit / paste isi file id_rsa.pub tadi kedalam file ini:

vi /home/YOURUSERNAMEHERE/.ssh/authorized_keys

Langkah terakhir, edit file /etc/ssh/sshd_config dan tambahkan / ubah sehingga jadi begini:

RSAAuthentication yes 
PubkeyAuthentication yes 
PasswordAuthentication no 
UsePAM no

Seperti contoh di atas, PasswordAuthentication dan UsePAM saya set menjadi no gunanya untuk mendisable login menggunakan username & password, sehingga certificate adalah satu-satunya cara untuk masuk ke server. Untuk login ke server caranya begini:

ssh [email protected]

Karena file id_rsa (private key) tadi lokasinya masih default, yaitu di /Users/YOURUSERNAMEHERE/.ssh/ jadi kita ngga perlu mendefinisikan lagi lokasinya, SSH akan mencari otomatis di lokasi tersebut.

Convert DMG ke ISO (Mac OS X)

Kadang kita perlu mengkonversi file DMG ke ISO entah karena program yang ngga support DMG, file tersebut akan di gunakan di MS Windows, atau karena alasan lain. Ngga perlu download program shareware yang katanya bisa mengkonversi DMG ke ISO, karena kita bisa melakukannya langsung di Terminal Mac OS X, menggunakan perintah hdiutil. Pertama buka dulu program Terminal (⌘ + spasi dan ketik “terminal”), kemudian;

hdiutil convert imagefile.dmg -format UDTO -o imagefile.iso

Perintah ini sebenarnya akan membuat file baru ber-extension .cdr, sehingga filenya menjadi imagefile.iso.cdr. Tapi kita tinggal rename aja jadi imagefile.iso dengan perintah ini;

mv imagefile.iso.cdr imagefile.iso

Selesai! Gampang, kan? 😀