mysql与dns_借助mysql和DNS view实现智能DNS(centos6.3 x64环境)
開篇說明
關于智能DNS和CDN的東西可以看我之前的一篇博文
上次的博文簡單使用了BIND的視圖功能實現了簡單的智能dns,此篇博文結合了mysql實現真正意義上的智能DNS系統
需要準備東西
首先yum安裝mysql。。。yum install mysql mysql-server mysql-devel
下載bind主程序源碼:
ftp://ftp.isc.org/isc/bind9/9.8.5-P1/bind-9.8.5-P1.tar.gz
下載bind-sdb驅動:
http://nchc.dl.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz
解壓:
tar xfbind-9.8.5-P1.tar.gz
tar xfmysql-bind.tar.gz
編譯安裝bind
將mysql-sdb的補丁文件拷貝到bind安裝源文件目錄下cp mysql-bind/mysqldb.c bind-9.8.5-P1/bin/named/
cp mysql-bind/mysqldb.h bind-9.8.5-P1/bin/named/
修改bind源碼目錄下的bin/named/Makefile.in修改以下幾行,其中DBDRIVER_LIBS后的參數可以使用/usr/bin/mysql_config --libs獲取DBDRIVER_OBJS= mysqldb.@O@
DBDRIVER_SRCS= mysqldb.c
DBDRIVER_INCLUDES= -I'/usr/include/mysql'
DBDRIVER_LIBS=-rdynamic -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl-lcrypto
修改bind源碼目錄下的bin/named/main.c,添加以下幾行/*#include "xxdb.h" */
后面添加
#include "mysqldb.h"
/*xxdb_init();*/在后面添加
mysqldb_init();
再找到
/*xxdb_clear();*/在后面添加
mysqldb_clear();
修改bin/named/mysqldb.c將
#include
修改為
#include
編譯安裝./configure--prefix=/usr --sysconfdir=/etc
make&& make install
下載電信和聯通的地址列表ACL,存放在/etc/named目錄下http://www.centos.bz/wp-content/uploads/2012/02/CHINANET.acl
http://www.centos.bz/wp-content/uploads/2012/02/CNC.acl
在/etc/named.conf添加2條,從而將電信和聯通的ACL地址列表包含進來include"/etc/named/CHINANET.acl"
include"/etc/named/CNC.acl"
然后在主配置文件中定義2個視圖:
CNC是聯通的視圖 ,CHINANET是電信的視圖view CNC{
match-clients { CNC; };
recursion no;
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
};
zone "lustlost.com" IN {
type master;
notify no;
database "mysqldb smartdns CNClocalhost root 123456"; #這里定義的數據庫相關的配置,字段分別為:SQLtype ?DataBase Table Host User Password
};
};
view CHINANET {
match-clients { CHINANET; };
recursion no;
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
};
zone "lustlost.com" IN {
type master;
notify no;
database "mysqldb smartdnsCHINANET localhost root 123456";
};
};
然后創建數據庫:create database smartdns;
use smartdns;
創建聯通表CREATE TABLE CNC(name varchar(255) default NULL,ttl int(11) default NULL,rdtypevarchar(255) default NULL,rdata varchar(255) default NULL) TYPE=MyISAM;
插入SOA其實授權信息
INSERTINTO CNC VALUES('lustlost.com',259200,'SOA','lustlost.com.www.lustlost.com.20130617 28800 720086400 28800');
插入NS記錄(實驗環境,地址皆為內網IP)
INSERT INTO CNC VALUES ('lustlost.com', 259200, 'NS','ns1.lustlost.com.'),('lustlost.com', 259200, 'NS', 'ns2.lustlost.com.'),('lustlost.com', 259200, 'MX', '10 mail.lustlost.com.'),('ns1.lustlost.com',259200, 'A', '192.168.1.1'),('ns2.lustlost.com', 259200, 'A','192.168.1.2'),('mail.lustlost.com', 259200, 'A','192.168.1.3'),('www.lustlost.com', 259200, 'A', '192.168.1.4');
創建電信表CREATE TABLE CHINANET (name varchar(255) default NULL,ttl int(11) default NULL,rdtypevarchar(255) default NULL,rdata varchar(255) default NULL) TYPE=MyISAM;
插入SOA其實授權信息
INSERT INTO CHINANET VALUES ('lustlost.com',259200,'SOA','lustlost.com.www.lustlost.com.2013061728800 7200 86400 28800');
插入NS記錄(實驗環境,地址皆為內網IP)
INSERT INTO CHINANET VALUES ('lustlost.com', 259200, 'NS','ns1.lustlost.com.'),('lustlost.com', 259200, 'NS', 'ns2.lustlost.com.'),('lustlost.com', 259200, 'MX', '10 mail.lustlost.com.'),('ns1.lustlost.com',259200, 'A', '192.168.2.1'),('ns2.lustlost.com', 259200, 'A', '192.168.2.2'),('mail.lustlost.com',259200, 'A', '192.168.2.3'),('www.lustlost.com', 259200, 'A', '192.168.2.4');
完畢....
總結
以上是生活随笔為你收集整理的mysql与dns_借助mysql和DNS view实现智能DNS(centos6.3 x64环境)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自动发邮件富文本_djang
- 下一篇: mysql show slave sta