mirror of
https://github.com/ditatompel/insights.git
synced 2025-01-08 03:12:06 +07:00
Adding old content "IspCP Auto New Zone Transfer to Secondary Dns Server"
This commit is contained in:
parent
4dbc03baa2
commit
4f85d31f38
1 changed files with 204 additions and 0 deletions
|
@ -0,0 +1,204 @@
|
|||
---
|
||||
title: "IspCP Auto New Zone Transfer to Secondary Dns Server"
|
||||
description: Cara sinkronisasi primary DNS ispCP ke secondary DNS server.
|
||||
date: 2012-01-10T21:36:41+07:00
|
||||
lastmod:
|
||||
draft: false
|
||||
noindex: false
|
||||
featured: false
|
||||
pinned: false
|
||||
# comments: false
|
||||
series:
|
||||
# -
|
||||
categories:
|
||||
- SysAdmin
|
||||
tags:
|
||||
- IspCP
|
||||
- Bind
|
||||
- DNS
|
||||
- Apache
|
||||
images:
|
||||
# -
|
||||
# menu:
|
||||
# main:
|
||||
# weight: 100
|
||||
# params:
|
||||
# icon:
|
||||
# vendor: bs
|
||||
# name: book
|
||||
# color: '#e24d0e'
|
||||
authors:
|
||||
# - ditatompel
|
||||
---
|
||||
|
||||
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`
|
||||
ORDER BY `alias_id` ASC
|
||||
LIMIT $start_index1, $rows_per_page1";
|
||||
|
||||
$rs1 = exec_query($sql, $count_query1);
|
||||
|
||||
$records_count1 = $rs1->fields['cnt1'];
|
||||
$rs1 = exec_query($sql, $query1);
|
||||
$all_records_count=$records_count+$records_count1;
|
||||
if ($rs->rowCount() == 0) {
|
||||
echo "//NO DOMAINS LISTED";
|
||||
} else {
|
||||
echo "//$all_records_count DOMAINS LISTED ON $cfg->SERVER_HOSTNAME [$cfg->BASE_SERVER_IP]\n";
|
||||
while (!$rs->EOF){
|
||||
echo "zone \"".$rs->fields['domain_name']."\"{\n";
|
||||
echo "\ttype slave;\n";
|
||||
echo "\tfile \"/var/cache/bind/".$rs->fields['domain_name'].".db\";\n";
|
||||
echo "\tmasters { $cfg->BASE_SERVER_IP; };\n";
|
||||
echo "\tallow-notify { $cfg->BASE_SERVER_IP; };\n";
|
||||
echo "};\n";
|
||||
$rs->moveNext();
|
||||
}
|
||||
}
|
||||
|
||||
if ($rs1->rowCount() == 0) {
|
||||
echo "//END DOMAINS LIST\n";
|
||||
}
|
||||
else {
|
||||
while (!$rs1->EOF){
|
||||
echo "zone \"".$rs1->fields['alias_name']."\"{\n";
|
||||
echo "\ttype slave;\n";
|
||||
echo "\tfile \"/var/cache/bind/".$rs1->fields['alias_name'].".db\";\n";
|
||||
echo "\tmasters { $cfg->BASE_SERVER_IP; };\n";
|
||||
echo "\tallow-notify { $cfg->BASE_SERVER_IP; };\n";
|
||||
echo "};\n";
|
||||
$rs1->moveNext();
|
||||
}
|
||||
echo "//END DOMAINS LIST\n";
|
||||
}
|
||||
?>
|
||||
```
|
||||
|
||||
4. Buat file `.htaccess` supaya `index.php` tersebut hanya bisa diakses melalui IP secondary DNS server.
|
||||
|
||||
```apache
|
||||
Order Deny,Allow
|
||||
Deny from all
|
||||
Allow from [IP.SECONDARY.DNS.SERVERMU]
|
||||
```
|
||||
|
||||
5. Ubah konfigurasi `Apache AllowOverride None` menjadi `AllowOverride Limit` supaya `.htaccess` dapat berfungsi.
|
||||
|
||||
|
||||
```bash
|
||||
vi /etc/apache2/sites-enabled/00_master.conf
|
||||
```
|
||||
|
||||
6. Ubah kepemilikan file pada `/var/www/ispcp/gui/domain`
|
||||
```bash
|
||||
chown vu2000:www-data -R /var/www/ispcp/gui/domain
|
||||
```
|
||||
|
||||
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`
|
||||
dan tambahkan :
|
||||
```
|
||||
* */12 * * * root /usr/bin/wget http://[IP.ISPCP.SERVER]/domain/ -O /etc/bind/named.conf.backup && /etc/init.d/bind9 reload
|
||||
```
|
||||
4. Terakhir, coba reload cronjob untuk memastikan trik kita sukses.
|
||||
```bash
|
||||
/etc/init.d/cron reload
|
||||
```
|
Loading…
Reference in a new issue