智能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).拓扑:
实验要求:
试验要求:
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地址:如图;
[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的源代码拖进服务器主机;
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
做如下修改和添加:
加入视图:
.测试,运行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;
[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的表,里面的行为表的各字段。
查看创建的表和表内字段;
插入相应记录:
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');
查找表内容:
添加关于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的库路径:
保存退出;
[root@centos mysql]# ldconfig 更新缓存;
;
.lan内查看dns解析:发现解析的地址为2.100;
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:
实验结束。