Membangun DNS Server dengan MySQL dan Bind

February 26 | Posted by Muhammad Yusuf E. | Linux Software Tags: , , ,

DNS server yang paling terkenal di dunia saat ini mungkin adalah bind. Dengan semakin banyaknya user yang menggunakannya semakin banyak fungsi-fungsi yang ada dalam Bind. Satu lagi, versi updatenya pun cepat sekali mengalami perubahan-perubahan, termasuk dalam perbaikan bug dan security hole.
Bind biasanya akan jalan dengan service sendirian tanpa service pendukung lainnya.

Dalam kesempatan ini, saya akan sampaikan bagaimana membuat DNS server dengan pendukung MySQL sebagai data penyimpan zone file. Caranya tidak serumit yang kita bayangkan, asal anda menguasai BIND dan MySQL dengan baik.
Keunggulan dengan menggunakan MySQL, setiap ada perubahan di zone, tidak perlu melakukan restart service BIND di server. Dan semua setting zone dapat dilakukan dengan panel dari dnSQLpanel.

Dalam percobaan ini, penulis membuat 1 server DNS master dan 2 DNS slave. DNS Slave dapat juga kita pasang satu saja kita sesuaikan dengan kondisi masing-masing.
Yang perlu diperhatikan bahwa DNS slave kita setting seperti biasa, dengan MySQL atau tidak. Sedangkan DNS master, karena kita gabungkan dengan MySQL, maka akan sedikit lain dalam penginstallannya.

1. Ambil source SDB driver dari sourceforge.net

Cek versi terakhir di halaman ini http://sourceforge.net/projects/mysql-bind/, dan ekstrak filenya seperti berikut ini,

tar xzvf mysql-bind.tar.gz

2. Donwload BIND versi terbaru
Demi keamanan, pakailah versi terbaru BIND. Ambil file terbaru di http://www.isc.org
Ekstrak seperti berikut ini,

tar xzvf bind-9.2.4.tar.gz

3. Kopi file mysqldb.h dan mysqldb.c
File ini ada di paker SDB driver, direktori mysql-bind. Kopikan file ini ke direktori bind-9.2.4/bin/named/include dan bind-9.2.4/bin/named.

$ cp mysql-bind/mysqldb.h bind-9.2.4/bin/named/include/
$ cp mysql-bind/mysqldb.c bind-9.2.4/bin/named/

4. Edit file bind-9.2.4/bin/named/Makefile.in
Edi file seperti berikut ini, di baris 26

#
# Add database drivers here.
#
DBDRIVER_OBJS = mysqldb.@O@
DBDRIVER_SRCS = mysqldb.c
DBDRIVER_INCLUDES = -I/usr/local/mysql/include/mysql
DBDRIVER_LIBS = -L/usr/local/mysql/lib/mysql -lmysqlclient

5. Edit file bind-9.2.3/bin/named/main.c

Edit tiga tempat di bagian ini,

/* #include "xxdb.h" */

#include "mysqldb.h"

/* xxdb_init(); */

mysqldb_init();

/* xxdb_clear(); */

mysqldb_clear();

6. Install bind-9.2.4
Install seperti berikut ini,

$ cd bind-9.2.4
$ ./configure
$ make
$ su -c "make install"

7. Setting mysql

Buat table di mysql seperti berikut ini

name[varchar(255)]
ttl[ttl(11)]
rdtype[varchar(255)]
rdata[varchar(255)]

Masukkan data di table seperti berikut ini,

name ttl rdtype rdata
example.com 86400 SOA example.com. administrator.example.com. 2005011501 3H 2M 1W 1D
example.com 86400 ns ns.example.com
example.com 86400 A 192.168.1.1
example.com 86400 MX 10 example.com
www.example.com 86400 CNAME example.com

8. Setting zone
Setting zone file di /etc/named.conf seperti berikut ini,

zone "example.jp" {
  type master;
  database "mysqldb DB_Name Table_Name DB_Server User Pass";
};

DB_Name adalah nama database yang anda pakai, Table_Name adalah nama table, sedangkan DB_Server User Pass adalah server, id mysql dan password.

9. Restart BIND
Restart process bind dan anda akan mendapatkan Bind yang bekerja sama dengan MySQL.

Cara di atas bisa jadi akan berubah, tergantung dengan versi bind atau SDB driver yang anda pakai. Hati-hati membaca manual atau readmenya, sebelum melakukan installing.

Tags: , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>