jiang1799 发表于 2018-9-29 12:37:22

智能DNS --BIND DLZ+MYSQL

  智能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地址:如图;

  # service network restart    重启网络服务
  1.2 安装源代码前,我们要先安装开发环境;
  # mount /dev/cdrom /media/cdrom挂载光盘
  # yum --disablerepo=* --enablerepo=c6-media groupinstall "Development Tools"安装开发工具
  1.3拖包:把bind和mysql的源代码拖进服务器主机;

  2.Mysql的安装:
  # tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/    拆包到/usr/local/目录;
  # ln -s mysql-5.5.15-linux2.6-i686 mysql                        为了管理方便(便于输入)做一个连接;
  # groupadd mysql                                                    增加一个mysql组;
  #useradd -r -g mysql mysql                                        增加一个mysql用户;
  # chown -R mysql .                                              更给主属;
  # chgrp -R mysql .                                              更给组属;
  #scripts/mysql_install_db --user=mysql                        以mysql身份执行 scripts/mysql_install_db;
  # chown -R root .                                             把当下的所有文件更改所有者为root;
  # chown -R mysql data                                           更改mysql data主属;
  # cp support-files/my-medium.cnf /etc/my.cnf                  拷贝文件;
  # cp support-files/mysql.server /etc/init.d/mysqld            拷贝文件;
  # chmod a+x /etc/init.d/mysqld                                  给上一步拷贝的/etc/init.d/mysqld文件可执行权限;
  # service mysqld start                                          开启mysqld服务;
  Starting MySQL... SUCCESS!
  (出现上面这行显示说明成功启动mysqld服务,如果有错误,则重复下面几个操作:
  # chown -R mysql .
  # chgrp -R mysql .
  #scripts/mysql_install_db --user=mysql
  #chown -R root .
  # chown -R mysql data
  # service mysqld start   )
  # chkconfig --add mysqld         把mysql服务加入到开机启动;
  # chkconfig mysqld on            设置mysql为开机启动;
  2.1安装完成后要做一些必要的设置,方便以后的管理和使用:
  
  1.为了使用各种工具的方便要把/usr/local/mysql/bin加入到系统中;
  编辑文件# vim /etc/profile
  在里面加入一行bin的路径:PATH=$PATH:/usr/local/mysqld/bin
  # . /etc/profile    由于修改了该文件,要重新加载一下文件;
  2.为了增加数据库的安全性,建立账号和密码:
  # mysqladmin -u root -p password '123'   建立mysql管理员为root 密码为123;
  Enter password:    (直接回车即可)
  进入数据库的操作如下:
  # mysql -uroot -p(回车,表示以管理员身份登录需要输入密码);
  Enter password:(输入密码123)
  3.Bind的安装:
  1.拆包:
  # 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的管理需要做下面配置;
  # cd /usr/local/bind9/sbin/   切换到rndc-confgen的主目录;
  执行:
  # ./rndc-confgen -a                   产生钥匙和写入到钥匙文件/usr/local/bind9/etc/rndc.key
  # ./rndc-confgen >../etc/named.conf   把生成的文件写入到named.conf配置中
  编辑named.conf配置文件:
  # vim named.conf
  做如下修改和添加:

  加入视图:

  
  .测试,运行dns:
  # /usr/local/bind9/sbin/named -g -d 1 -c /usr/local/bind9/etc/named.conf
  查看dns运行:
  # netstat -tupln |grep 53查看53端口运行;
  我们常用的检测dns工具dig命令在/usr/local/bind9/bin下,所以要把该工具加入到/etc/profile;

  # . /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的库文件还不能被系统调用,要把库加入到系统中:
  # vim /etc/ld.so.conf.d/mysql.conf    在特定目录创建mysql.conf并编辑文件,添加下面的mysql的库路径:

  保存退出;
  # ldconfig   更新缓存;
  ;
  .lan内查看dns解析:发现解析的地址为2.100;

  5.配置防火墙:
  1.ip地址配置:
  int eth0/0
  ip add 192.168.2.254 24
  int eth0/1
  ip add 61.130.130.1 24
  2,把端口加入到区域;
  3,配置DNAT;
  dns server 192.168.2.200
  dns resolve
  int eth0/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:

  实验结束。

页: [1]
查看完整版本: 智能DNS --BIND DLZ+MYSQL