一、原理

DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址。如访问者是网通用户,DNS策略解析服务器会把你的域名对应的网通IP地址解析给这个访问者。DNS策略解析服务器会把您域名对应的电信IP地址解析给这个访问者。

二、设计案例:

1、案例环境

    dns服务器搭建在vmware10虚拟机下CentOS6.4-32(最小化安装)操作系统下,一台防火墙(H3C secpath F100C)。注意:在我们当前最小化安装的操作系统下,会在安装配置过程中出现一些错误,请注意!

拓扑结构

智能DNS解析_mysql

配置命令

数据库mysql的安装配置:

        [root@ahao ~]#tar zxvf mysql-5.5.15-linux2.6-i686.tar.gz –C /usr/local

[root@ahaolocal]# ln -s mysql-5.5.15-linux2.6-i686 mysql

[root@ahaolocal]# cd mysql

[root@ahaomysql]# groupadd mysql

[root@ahaomysql]# useradd -r -g mysql mysql

[root@ahaomysql]# chown -R mysql .

[root@ahaomysql]# chgrp -R mysql.

[root@ahao mysql]# scripts/mysql_install_db --user=mysql //执行之后会发现有错误缺少libaio文件,解决方法:我们在在光盘上找到这个库文件,安装就可以了

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

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

[root@ahao mysql]# cp support-files/my-medium.cnf /etc/my.cnf

                [root@ahao mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld      

[root@ahao mysql]# chmod a+x /etc/init.d/mysqld

[root@ahao mysql]# service mysqld start

Starting MySQL.. SUCCESS!

[root@ahao mysql]# chkconfig --add mysqld //mysql添加到chkconfig的管理中

[root@ahao mysql]# chkconfig mysqld on // 系统开机mysql自动启动

[root@ahao mysql]# vim /etc/profile

//在文件中添加PATH=$PATH:/usr/local/mysql/bin/  重写环境变量将mysql的库文件添加上去

[root@ahaomysql]# . /etc/profile  //重新加载文件,才能让mysql库文件生效,或者重启系统

[root@ahao ~]#mysqladmin -u root -p password '123' //配置mysql的管理员密码

                 Bind安装配置:

                  [root@ahao~]tar zxvf bind-9.8.6-P1.tar.gz –C /usr/local

                  [root@ahao~]# cd /usr/local/bind-9.8.6-P1/

[root@ahaobind-9.8.6-P1]#./configure--prefix=/usr/local/bind9--with-dlz-mysql=/usr/local/mysql--enable-threads=no --disable-openssl-version-check//到这里出现错误:OpenSSLwas not found ,所以我们还需要安装这个openssl

[root@ahaobind-9.8.6-P1]#mak&&make install

[root@ahaobind-9.8.6-P1]# cd /usr/local/bind9/sbin/

[root@ahaosbin]# ./rndc-confgen –a  //会产生密钥文件和dns配置文件

[root@ahao sbin]# cd ../etc

[root@ahao etc]#ll

total 8

-rw-r--r--. 1root root 2389 Jan 16 23:21 bind.keys

-rw-------. 1root root   77 Jan 16 23:25 rndc.key

[root@ahao sbin]#./rndc-confgen > named.conf

//named.conf文件中添加相应语句

options {

directory"/usr/local/bind9/etc/";

pid-file "/usr/local/bind9/var/run/named.pid";

allow-query {any; };

recursion no;

version"gaint-d1";

allow-query-cache{ any; };

};

应用以下语句:

controls {

     inet 127.0.0.1 port 953

            allow { 127.0.0.1; } keys {"rndc-key"; };

 };


view "lan-view"{   //添加域

        match-clients {lan;};

        dlz "Mysql zone" {

database "mysql

{host=127.0.0.1 dbname=mydata ssl=false user=root pass=123}

{select zone from lan_dns_records where zone='$zone$'}

{select ttl,type, mx_priority, case when lower(type)='txt' then concat('\"', data,'\"')

when lower(type)= 'soa' then concat_ws(' ', data, resp_person, serial, refresh, retry, expire,minimum)

                          elsedata end from lan_dns_records where zone='$zone$' and host='$record$'}";

                  };

                  };


//登录mysql数据库创建相关信息

ysql> createdatabase mydata;//创建数据库

mysql> usemydata;

mysql> createtable 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)

   -> );

mysql> createtable 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> insertinto lan_dns_records (zone,host,type,data,ttl,retry) values('abc.com','www','A','192.168.1.159','86400','15');  //插入记录

Query OK, 1 rowaffected (0.01 sec)

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


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

//启动

防火墙配置:

[H3C]int eth0/0

[H3C-Ethernet0/0]ipadd 192.168.1.0 24

[H3C]int eth0/4

                  [H3C-Ethernet0/4]ipadd 61.130.130.1 24

[H3C-Ethernet0/4]nat server protocol udp global 61.130.130.1 53inside 192.168.1.159 53

[H3C]firewallzone untrust

[H3C]addinterface eth0/4

实验结果

本地用户验证:

智能DNS解析_dns _02

  外网用户验证:

智能DNS解析_bind_03