智能DNS --BIND DLZ+MYSQL

一.概念介绍:


1.智能DNS


智能DNS就是根据用户的来路,自动智能化判断来路IP返回给用户,而不需要用户进行选择。


智能DNS与普通DNS区别:


普通的DNS服务器只负责为用户解析出IP记录,而不去判断用户从哪里来,这样会造成所有用户都只能解析到固定的IP地址上。智能DNS颠覆了这个概念。智能DNS会判断用户的来路,而做出一些智能化的处理,然后把智能化判断后的IP返回给用户。


2.Bind dlz:
Bind-DLZ主页:http://bind-dlz.sourceforge.net/
DLZ(Dynamically Loadable Zones)与传统的BIND9不同,BIND的不足之处课归纳为下面几点:
   1 BIND从文本文件中获取数据,这样容易因为编辑错误出现问题。
   2 BIND需要将数据加载到内存中,如果域或者记录较多,会消耗大量的内存。
   3 BIND启动时解析Zone文件,对于一个记录较多的DNS来说,会耽误更多的时间。
   4 如果近修改一条记录,那么要重新加载或者重启BIND才能生效,那么需要时间,可能会影响客          户端查询。
而Bind-dlz 即将帮你解决这些问题, 对Zone文件操作也更方便了,直接对数据库操作,可以很方
便扩充及开发管理程序。



二.具体案例:

1).拓扑:

实验要求:


wKioL1LX2z6yU13-AAMvOA8aD08360.png

试验要求:

1.LAN 内的主机能通过dns服务器能解析到web服务器的地址为web服务器地址192.168.2.100;

2.WAN 内的主机能通过LAN 内的dns服务器解析到web的地址为广域网接口的地址61.130.130.1;

(试验环境,dns服务器为CentOS 6.0 32位系统搭建;防火墙为H3C )


2).具体配置过程:



1.准备配置:

   1.1配置dns服务器IP地址:如图;


wKioL1LX1-6R6p-FAAA77xNm5oM056.png


   [root@centos ~]# service network restart    重启网络服务



   1.2 安装源代码前,我们要先安装开发环境;


   [root@centos ~]# mount /dev/cdrom /media/cdrom  挂载光盘

   [root@centos ~]# yum --disablerepo=* --enablerepo=c6-media groupinstall "Development Tools"  安装开发工具



   1.3拖包:把bind和mysql的源代码拖进服务器主机;


wKiom1LX1_uzMRwqAAD4MkrgdBQ713.png



2.Mysql的安装:


[root@centos local]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/    拆包到/usr/local/目录;



[root@centos local]# ln -s mysql-5.5.15-linux2.6-i686 mysql                        为了管理方便(便于输入)做一个连接;



[root@centos ~]# groupadd mysql                                                    增加一个mysql组;


[root@centos ~]#  useradd -r -g mysql mysql                                        增加一个mysql用户;        

[root@centos mysql]# chown -R mysql .                                              更给主属;

[root@centos mysql]# chgrp -R mysql .                                              更给组属;

[root@centos mysql]#  scripts/mysql_install_db --user=mysql                        以mysql身份执行 scripts/mysql_install_db;


[root@centos mysql]# chown -R root .                                               把当下的所有文件更改所有者为root;

[root@centos mysql]# chown -R mysql data                                           更改mysql data主属;


[root@centos mysql]# cp support-files/my-medium.cnf /etc/my.cnf                    拷贝文件;


[root@centos mysql]# cp support-files/mysql.server /etc/init.d/mysqld              拷贝文件;


[root@centos mysql]# chmod a+x /etc/init.d/mysqld                                  给上一步拷贝的/etc/init.d/mysqld文件可执行权限;

[root@centos mysql]# service mysqld start                                          开启mysqld服务;


Starting MySQL... SUCCESS!


(出现上面这行显示说明成功启动mysqld服务,如果有错误,则重复下面几个操作:


[root@centos mysql]# chown -R mysql .


[root@centos mysql]# chgrp -R mysql .


[root@centos mysql]#  scripts/mysql_install_db --user=mysql


[root@centos mysql]#  chown -R root .


[root@centos mysql]# chown -R mysql data


[root@centos mysql]# service mysqld start   )




[root@centos mysql]# chkconfig --add mysqld         把mysql服务加入到开机启动;


[root@centos mysql]# chkconfig mysqld on            设置mysql为开机启动;


   2.1安装完成后要做一些必要的设置,方便以后的管理和使用:



1.为了使用各种工具的方便要把/usr/local/mysql/bin加入到系统中;


编辑文件[root@centos bin]# vim /etc/profile


在里面加入一行bin的路径:PATH=$PATH:/usr/local/mysqld/bin


[root@centos bin]# . /etc/profile    由于修改了该文件,要重新加载一下文件;


2.为了增加数据库的安全性,建立账号和密码:

[root@centos ~]# mysqladmin -u root -p password '123'     建立mysql管理员为root 密码为123;


Enter password:    (直接回车即可)



进入数据库的操作如下:


[root@centos ~]# mysql -u  root -p  (回车,表示以管理员身份登录需要输入密码);

Enter password:  (输入密码123



3.Bind的安装:

1.拆包:

[root@centos ~]# tar -zxvf bind-9.8.6-P1.tar.gz -C /usr/local/src/



2.执行预编译环境的检测工具 configure


./configure --prefix=/usr/local/bind9 --with-dlz-mysql=/usr/local/mysql --enable-threads=no --disable-openssl-version-check


然后执行生成文件的make命令:make && make install



3.为了要方便dns的管理需要做下面配置;

[root@centos bind-9.8.6-P1]# cd /usr/local/bind9/sbin/   切换到rndc-confgen的主目录;

执行:


[root@centos sbin]# ./rndc-confgen -a                   产生钥匙和写入到钥匙文件/usr/local/bind9/etc/rndc.key


[root@centos sbin]# ./rndc-confgen >../etc/named.conf   把生成的文件写入到named.conf配置中


编辑named.conf配置文件:


[root@centos etc]# vim named.conf


做如下修改和添加:

wKiom1LX5w2TEVqIAAFmJGagVkI623.jpg

加入视图:

wKioL1LX5wDhMenBAAQ5ckEThwc343.jpg


.测试,运行dns


[root@centos sbin]# /usr/local/bind9/sbin/named -g -d 1 -c /usr/local/bind9/etc/named.conf


查看dns运行:


[root@centos mysql]# netstat -tupln |grep 53查看53端口运行;


我们常用的检测dns工具dig命令在/usr/local/bind9/bin下,所以要把该工具加入到/etc/profile


wKiom1LX6XvBvflkAAApce_HemQ832.png

[root@centos bin]# . /etc/profile   重新加载文件


4.进入mysql数据库添加数据库:


进入数据库;

mysql> show databases;    查看数据库信息


mysql> create database mydata;    创建名为mydata的数据库


mysql> use mydata;    选中mydata数据库


mysql> create table lan_dns_records (


   -> zone varchar (255),


   -> host varchar (255),


   -> type varchar (255),


   -> data varchar (255),


   -> ttl int(11),


   -> mx_priority varchar (255),


   -> refresh int(11),


   -> retry int(11),


   -> expire int(11),


   -> minimum int(11),


   -> serial bigint(20),


   -> resp_person varchar (255),


   -> primary_ns varchar (255)


-> );


上面这几行是在mydata数据库中创建lan_dns_records的表,里面的行为表的各字段。


查看创建的表和表内字段;

wKioL1LX1-7y0lblAABmm0Pu7hk603.png

插入相应记录:

mysql>insert into lan_dns_records (zone,host,type,data,ttl,retry) values ('abc.com','www','A','192.168.2.100','86400','15');

mysql>insert into wan_dns_records (zone,host,type,data,ttl,retry) values ('abc.com','www','A','61.130.130.1','86400','15');

查找表内容:

wKiom1LX1_uAk66lAABCE3WfRTo535.png

添加关于wan的dns记录到数据库:

mysql> create table wan_dns_records (


   -> zone varchar (255),


   -> host varchar (255),


   -> type varchar (255),


   -> data varchar (255),


   -> ttl int(11),


   -> mx_priority varchar (255),


   -> refresh int(11),


   -> retry int(11),


   -> expire int(11),


   -> minimum int(11),


   -> serial bigint(20),


   -> resp_person varchar (255),


   -> primary_ns varchar (255)


-> );


.此时我们mysql的库文件还不能被系统调用,要把库加入到系统中:

[root@centos mysql]# vim /etc/ld.so.conf.d/mysql.conf    在特定目录创建mysql.conf并编辑文件,添加下面的mysql的库路径:


wKiom1LX6XvBvflkAAApce_HemQ832.png

保存退出;

[root@centos mysql]# ldconfig  更新缓存;




.lan内查看dns解析:发现解析的地址为2.100;

wKiom1LX6XuhibmnAABj8Yk3Bv8973.png


5.配置防火墙:

1.ip地址配置:


[H3C]int eth0/0


[H3C-Ethernet0/0]ip add 192.168.2.254 24


[H3C]int eth0/1


[H3C-Ethernet0/1]ip add 61.130.130.1 24


2,把端口加入到区域;

3,配置DNAT;

[H3C]dns server 192.168.2.200


[H3C]dns resolve


[H3C]int eth0/1


[H3C-Ethernet0/1]nat server protocol udp global 61.130.130.1 53 inside 192.168.2.200 53



6.wan内pc配置ip为61.130.130.10,查看dns:

wKiom1LX7CGSSqCIAAEUq_GNARo981.jpg

实验结束。