mySQL destekli Bind kurulumu

BIND, IT dünyasında en çok kullanılan DNS sunucu ama yapılandırması ve sadece CLI ile yönetilebiliyor olması bazen sinir bozucu olabiliyor 🙂 Bu amaçla Bind’i mySQL destekli kullanıyoruz. İşte Ubuntu sunucuya nasıl kurulduğu ve yapılandırıldığı.

Öncelikle, Ubuntu ile gelen default bind9 mysql destekli gelmiyor bu yüzden biz kaynak koddan derleyerek kullanacağız.

mkdir -p /usr/local/src/bind9
cd /usr/local/src/bind9
tar -xvf mysql-bind.tar.gz

Ubuntu 11.10 Oneiric için güncelleme yapın.

apt-get update

Gerekli paketleri apt-get ile kurun.

apt-get install build-essential dpkg-dev mysql-server libmysqlclient15-dev
fakeroot bison libkrb5-dev libssl-dev libtool libdb-dev libldap2-dev libldap2-dev
libcap2-dev hardening-wrapper debhelper libxml2-dev insserv

Bind kaynak kodunu apt-get ile indirin.

apt-get source bind9

Kaynak kodu içerisindeki debian kurallarında değişiklik yaparak mysql desteği ekleyin.

cd /usr/local/src/bind9*

Kaynak kodunu derleyerek, derleme sonucu oluşan .deb paketlerini kurun.

dpkg-buildpackage -rfakeroot -b
dpkg -i /usr/local/src/bind9*.deb
perl -e “s/OPTIONS=”-u bind”/OPTIONS=”-u bind -n 1″/g;” -pi.save $(find /etc/default -name ‘bind9’)

Bind’in mySQL’e bağlanması ve veri alabilmesi için aşağıdaki satırları /etc/bind/named.conf.local dosyasına ekleyin.

dlz “Mysql zone” {
database “mysql
{host=127.0.0.1 dbname=bind port=3306 user=binduser pass=binduserpass}
{select zone from dns_records where zone = ‘$zone$’ and status=’1′}
{select ttl, type, case when lower(type)=’txt’ then concat(‘”‘, data, ‘”‘) else data end from dns_records where zone = ‘$zone$’ and host = ‘$record$’ and not (type = ‘SOA’ or type = ‘NS’) and status=’1′}
{select ttl, type, data, resp_person, serial, refresh, retry, expire, minimum from dns_records where zone = ‘$zone$’ and (type = ‘SOA’ or type=’NS’) and status=’1′}
{select ttl, type, host, data, resp_person, serial, refresh, retry, expire, minimum from dns_records where zone = ‘$zone$’ and not (type = ‘SOA’ or type = ‘NS’) and status=’1′}”;
};

Daha sonra mySQL ‘de veritabanı ve kullanıcı oluşturun.

echo “CREATE DATABASE bind” | mysql -u root -p
echo “GRANT SELECT, UPDATE, DELETE on bind.* to ‘binduser’@’localhost’ identified by ‘binduserpass'” |mysql -u root -p

mySQL için örnek tablo ve örnek veriler aşağıdaki gibidir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE dns_records (
  id int(11) NOT NULL AUTO_INCREMENT,
  zone varchar(64) DEFAULT NULL,
  host varchar(64) DEFAULT NULL,
  type varchar(8) DEFAULT NULL,
  data varchar(64) DEFAULT NULL,
  ttl int(11) NOT NULL DEFAULT '60',
  refresh int(11) NOT NULL DEFAULT '3600',
  retry int(11) NOT NULL DEFAULT '3600',
  expire int(11) NOT NULL DEFAULT '86400',
  minimum int(11) NOT NULL DEFAULT '1800',
  serial bigint(20) NOT NULL DEFAULT '2011111894',
  resp_person varchar(64) NOT NULL DEFAULT 'gurcan.ozturk@dns.local',
  primary_ns varchar(64) NOT NULL DEFAULT 'ns.mydomain.net',
  status enum('0','1') DEFAULT '1',
  PRIMARY KEY (id),
  KEY host (host),
  KEY zone (zone),
  KEY type (type)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;

INSERT INTO dns_records VALUES
(1,'mydomain.net','ns','A','1.2.3.4',60,3600,3600,86400,1800,2011111894,'gurcanozturk@dns.local','ns.mydomain.net','1'),
(2,'mydomain.net','@','NS','ns.mydomain.net.',60,3600,3600,86400,1800,2011111894,'gurcanozturk@dns.local','ns.mydomain.net','1'),
(3,'mydomain.net','testname','A','1.2.3.4',60,3600,3600,86400,1800,2011111894,'gurcanozturk@dns.local','ns.mydomain.net','0');

BIND’ ı restart ettiğinizde herhangi bir problem yoksa artık mySQL destekli bir DNS sunucunuz var demektir.

2 Responses

  1. İlker Derya says:

    Hocam selamlar,

    Yukarıdaki prosedür ile ilgili iki sorum var…
    1 – tar -xvf mysql-bind.tar.gz ile açtığımız mysql-bind dosyasını bir daha hiçbiryerde kullanmıyor(muy)uz.
    2- perl -e “s/OPTIONS=”-u bind”/OPTIONS=”-u bind -n 1″/g;” -pi.save $(find /etc/default -name ‘bind9′) komutunu çalıştırmayı başaramadık..

    yardımcı olursanız sevinirim..

    • gurcan says:

      Merhabalar,
      bind dlz ile bind SDB yapilandirmalarini birbirine karistirmisim yazarken, her iki asamayi da atlayabilirsiniz, ikisine de gerek yok.

      Bind-SDB driveri ile kurulum yaparken mysql-bind paketi gerekiyorken, bind9 zaten dlz destegi ile geldigi icin sorun cikmiyor.

Leave a Reply


*