Kali ini ane mau share cara sinkronisasi *primary DNS***ispCP** ke *secondary DNS server*. Tapi sebelumnya, apa itu **ispCP**?
<!--more-->
> _**isp Control Panel (ispCP)** is an open source project founded to build a Multi Server Control and Administration Panel. This Control Panel is usable by any Internet Service Provider (ISP)._
Nah [ispCP](http://isp-control.net/) sendiri mengemas aplikasi2 hosting seperti **Apache**, **Bind9**, **Courier**, **Postfix**, **ProFTP**, dan **Awstats**. dan sampai saat ini support untuk beberapa *linux distro* seperti **Debian** (**Etch**, **Lenny**, **Squeeze**), **Ubuntu**, dan **FreeBSD**.
Kalau dibandingkan dengan **cPanel** secara pribadi jelas lebih nyaman cPanel. Tp krn ini open source dan gratis, worth bgt buat dicoba dan digunakan.
Yuk, langsung aja... Ane asumsikan temen2 udah pada berhasil install ispCP ini.
Yang diperlukan :
2 buah server ( 1 untuk **primary DNS** di ispCP itu sendiri dan 1 lagi buat **secondary DNS** nya )
_Tested with ispCP Version_ : `1.7` on **Debian Lenny**
## ispCP server (Primary)
1. Edit `/etc/ispcp/ispcp.conf` dan tambahkan *IP server secondary DNS* pada bagian **"# BIND data section".**
2. masuk ke folder `/var/www/ispcp/gui/domain` ( buat folder tersebut jika belum ada )
3. Buat file `index.php` dan masukan script berikut :
```php
<?php
require '../include/ispcp-lib.php';
$cfg = ispCP_Registry::get('Config');
$sql = ispCP_Registry::get('Db');
$count_query = "SELECT COUNT(`domain_id`) AS cnt FROM `domain`";
$start_index = 0;
$rows_per_page = 100;
$query = "SELECT `domain_name` FROM `domain`
ORDER BY `domain_id` ASC
LIMIT $start_index, $rows_per_page";
$rs = exec_query($sql, $count_query);
$records_count = $rs->fields['cnt'];
$rs = exec_query($sql, $query);
$count_query1 = "SELECT COUNT(`alias_id`) AS cnt1 FROM `domain_aliasses`";
$start_index1 = 0;
$rows_per_page1 = 100;
$query1 = "SELECT `alias_name` FROM `domain_aliasses`
7.*Generate key* untuk **secure zone transfer (TSIG)**
```bash
cd /etc/bind; dnssec-keygen -a hmac-md5 -b 128 -n HOST TRANSFER
```
Hasil *key* ada pada file `transfer.+[bla-bla-bla].private`. Didalamnya ada kode yang nantinya digunakan untuk sinkron *auth*. Misal : Key: `6alK9JEHMqH/ZDpFHtlstg==`
Masukan kode tersebut pada konfigurasi **BIND**
```bash
vi /etc/bind/named.conf.options
```
```bind
//
//SECONDARY NS
//
key "TRANSFER" {
algorithm hmac-md5;
secret "6alK9JEHMqH/ZDpFHtlstg==";
};
server [IP.SECONDARY.DNS.SERVERMU] {
keys {
TRANSFER;
};
};
```
Konfigurasi pada *primary DNS server* sudah selesai. Lalu kita masuk ke tahap berikutnya, yaitu :
## konfigurasi pada secondary DNS server
> _Saya asumsikan BIND sudah terinstall di server Secondary DNS ini._
1. Edit konfiurasi BIND (`/etc/bind/named.conf`) dan tambahkan `include "/etc/bind/named.conf.backup"`.
2. Buat keys zone transfer
```bash
vi /etc/bind/named.conf.options
```
dan tambahkan konfigurasi berikut :
```bind
//
//SECONDARY NS
//
key "TRANSFER" {
algorithm hmac-md5;
secret "6alK9JEHMqH/ZDpFHtlstg==";
};
server [IP.ISPCP.SERVER] {
keys {
TRANSFER;
};
};
```
3. Buat script untuk cronjob: `vi /etc/cron.d/dnsupdate`