借助mysql和DNS view实现智能DNS(centos6.3 x64环境)

简介:

上次的博文简单使用了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 <named/mysqldb.h>

修改为

#include <bin/named/mysqldb.h>

编译安装

./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');


完毕....



本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/1227582,如需转载请自行联系原作者

相关文章
|
6月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
1268 16
|
6月前
|
人工智能 关系型数据库 Java
当MySQL遇见AI:使用Vector扩展实现智能语义搜索
传统数据库的关键词搜索已无法满足现代应用对智能语义查询的需求。本文介绍如何通过MySQL的向量扩展(Vector Extension),将大模型产生的文本嵌入向量存储在MySQL中,并实现高效的语义相似度搜索。我们将完整演示从环境准备、数据库表设计、Java应用集成到性能优化的全流程,让您的传统关系型数据库瞬间具备AI智能检索能力,为构建下一代智能应用提供核心数据支撑。
656 3
|
7月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
542 10
|
8月前
|
Linux 编译器 开发工具
在CentOS环境下升级GCC编译器的指南
总结:本文提供了一种方法来升级CentOS的GCC编译器,通过使用CentOS的软件集合和开发者工具集工具,可以比较平滑地进行升级。在整个过程中无需从源代码编译,这样既省去了复杂的编译过程,也避免了可能出现的与系统库不兼容的风险。请注意,使用第三方仓库可能会带来系统稳定性和安全性上的潜在影响。所有操作都应谨慎进行,并确保有相应的数据备份。
1029 19
|
11月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
2632 26
|
安全 关系型数据库 MySQL
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
1221 16
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
2704 5
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
574 1
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
730 3

相关产品

  • 云解析DNS