IT技术互动交流平台

Centos环境下实现DNS的智能解析

作者:路边  发布日期:2014-01-18 08:49:16

DNS智能解析的实质:基于不同的来源,dns服务器返回不同的结果

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

实验环境:dns服务器是在centos6.432位操作系统上实现的,中间用了一台H3C的防火墙。Internet用的是一台电脑pc模拟的。

实验中用到的mysql-5.5.15-linux2.6-i686.tar.gz可以到mysql的官方网站www.mysql.com下载,

也可以到http://pan.baidu.com/disk/home?frm=hao123下载,

bind-9.8.6-P1.tar.gz可以到http://pan.baidu.com/disk/home?frm=hao123下载。

网络拓扑图如下:

wKiom1LX25mANUuxAADOqY4FFdw103.jpg

试验结果预期:内网用户解析出来的地址是192.168.80.12,外网地址解析出来的地址是61.130.130.1.

[root@localhost~]#tar-zxvfmysql-5.5.15-linux2.6-i686.tar.gz-C/usr/local/

把源码解压到/usr/local/目录下

[root@localhost~]#cd/usr/local/

[root@localhostlocal]#ln-smysql-5.5.15-linux2.6-i686mysql

进入解压好的目录,为了方便访问给此目录创建一个快捷方式

[root@localhostlocal]#cdmysql

[root@localhostmysql]#vimINSTALL-BINARY

进入mysql目录,里边有一个INSTALL-BINARY文件,这是个安装帮助文档,可以看到如下步骤介绍:

wKioL1LX1yyDUAx6AAFiiX-nzr8610.jpg

[root@localhost~]#groupaddmysqlsts

[root@localhost~]#useradd-r-gmysqlmysql

创建一个mysql组并添加一个账号mysql

[root@localhostmysql]#chown-Rmysql.

[root@localhostmysql]#chgrp-Rmysql.

改变所有文件的所有者和所有组都改为mysql

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

以sql的身份来初始化数据库

[root@localhostmysql]#chown-Rroot.

[root@localhostmysql]#chown-Rmysqldata

再把所有者和所有组改回来

[root@localhostmysql]#cpsupport-files/my-medium.cnf/etc/my.cnf

将support-files/my-medium.cnf拷贝到/etc/my.cnf,是否覆盖选择y。

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

[root@localhostmysql]#chmoda+x/etc/init.d/mysqld

给mysqld执行权限

[root@localhostmysql]#servicemysqldstart

启动服务mysqld。

发现出现错误:

wKiom1LX10qh6IwzAABJIXXUaTM845.jpg

如果出现此错误的话,就把刚才做的命令重新执行一遍:

[root@localhostmysql]#chown-Rmysql.

[root@localhostmysql]#chgrp-Rmysql.

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

[root@localhostmysql]#chown-Rroot.

[root@localhostmysql]#chown-Rmysqldata

后边拷贝的那两步就不用重做了,然后再次开始mysqld服务,运行成功!

[root@localhostmysql]#netstat-tupln|grep3306

查看mysqld端口是否打开

wKioL1LX106y0qtcAABGJaXL-ik881.jpg

 

端口已经打开。

[root@localhostmysql]#chkconfig--addmysqld

[root@localhostmysql]#chkconfigmysqldon

将mysqld设为开机自动启动。

[root@localhostmysql]#vim/etc/profile

PATH=$PATH:/usr/local/mysql/bin

为了方便使用目录下的bin文件,将它加入到系统文件中:

[root@localhostmysql]#./etc/profile

重新读取profile文件:(重新登录也可以)

[root@localhostmysql]#mysqladmin-uroot-ppassword'123'然后直接回车

给mysql创建一个管理员用户,密码为123

到这里,mysql已经安装完毕。

 

接下里安装bind:

[root@localhost~]#tar-zxvfbind-9.8.6-P1.tar.gz-C/usr/local/src/

解压bind安装包

[root@localhost~]#cd/usr/local/src/

[root@localhostsrc]#ll

total4

drwxrwxr-x.1210132wheel4096Oct1608:09bind-9.8.6-P1

[root@localhostsrc]#cdbind-9.8.6-P1/

切换到bind目录

[root@localhostbind-9.8.6-P1]#./configure--prefix=/usr/local/bind9--with-dlz-mysql=/usr/local/mysql--enable-threads=no--disable-openssl-version-check

[root@localhostbind-9.8.6-P1]#make&&makeinstall执行make命令已经makeinstall

[root@localhostbin]#cd/usr/local/bind9/

进入此目录,此目录为bind的安装目录

[root@localhostbind9]#cdsbin/

[root@localhostsbin]#./rndc-confgen-a

wKiom1LX16aQbJ1KAABAXmZqGzA182.jpg

执行此命令会在/usr/local/bind9/etc/下产生一个rndc.key文件

[root@localhostsbin]#./rndc-confgen>../etc/named.conf

生成named.conf文件

以上两步最好不要在终端中做,因为在终端中做文件生的特别慢,最好是直接在系统中执行命令。

现在进入/usr/local/bind9/etc/目录会发现其中有三个文件:

wKioL1LX12uRTqadAACCZXQjAKk652.jpg

进入named.conf文件:

去掉第20行至23行前边的#:

QTNjZHhrQTlnMDk4LmpwZw==" src="http://www.it165.net/uploadfile/files/2014/0118/2014011808493512.jpg" title="7.jpg" />

修改option如下:

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

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

allow-query{any;};

recursionno;

version"gaint-d1"

wKioL1LX1_zh8oLcAAJUhmlpx8A847.jpg

在此文件中创建“lan”和“wan”两个访问控制链表:

wKiom1LX2GrCp6ubAAAnWTMQPXk843.jpg

并在此文件中添加以下内容:

view"lan-view"{

match-clients{lan;};

dlz"Mysqlzone"{

database"mysql

{host=127.0.0.1dbname=mydatassl=falseuser=rootpass=123}

{selectzonefromlan_dns_recordswherezone='$zone$'}

{selectttl,type,mx_priority,casewhenlower(type)='txt'thenconcat('\"',data,'\"')32whenlower(type)='soa'thenconcat_ws('',data,resp_person,serial,refresh,retry,expire,minimum)33elsedataendfromlan_dns_recordswherezone='$zone$'andhost='$record$'}";

};

};

view"wan-view"{

match-clients{wan;};

dlz"Mysqlzone"{

database"mysql

{host=127.0.0.1dbname=mydatassl=falseuser=rootpass=123}

{selectzonefromwan_dns_recordswherezone='$zone$'}

{selectttl,type,mx_priority,casewhenlower(type)='txt'thenconcat('\"',data,'\"')

whenlower(type)='soa'thenconcat_ws('',data,resp_person,serial,refresh,retry,expire,minimum)

elsedataendfromwan_dns_recordswherezone='$zone$'andhost='$record$'}";

};

到此处为止,bind也基本安装完成。

接下来给数据库中添加内容:

[root@localhostetc]#mysql-uroot-p

Enterpassword:

以管理员身份登录mysql

mysql>createdatabasemydata;

创建数据库mydate

mysql>usemydata;

打开mydate

创建lan表:

createtablelan_dns_records(

zonevarchar(255),

hostvarchar(255),

typevarchar(255),

datavarchar(255),

ttlint(11),

mx_priorityvarchar(255),

refreshint(11),

retryint(11),

expireint(11),

minimumint(11),

serialbigint(20),

resp_personvarchar(255),

primary_nsvarchar(255)

);

创建wan表:

createtablewan_dns_records(

zonevarchar(255),

hostvarchar(255),

typevarchar(255),

datavarchar(255),

ttlint(11),

mx_priorityvarchar(255),

refreshint(11),

retryint(11),

expireint(11),

minimumint(11),

serialbigint(20),

resp_personvarchar(255),

primary_nsvarchar(255)

);

可以看到现在数据库中有如下表:

wKioL1LX2LmTY7p6AABSHqvvPQs694.jpg

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

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

两表格中各插入一条记录。

此时可看到数据库中的两个表中有如下数据:

wKiom1LX2VPQFDFHAAI3WpgdTtk445.jpg

使用/usr/local/bind9/sbin/named-g-d1-c/usr/local/bind9/etc/named.conf指令测试:

发现出错,缺少一个libmysqlclient.so.18库文件

wKioL1LX2WrAHikYAABHuq4ZpvY910.jpg

其实这个文件时存在的,在/usr/local/mysql/lib/目录下,

[root@localhostsbin]#vim/etc/ld.so.conf.d/mysql.conf

在/etc/ld.so.conf.d/下随便建一个文件,比如叫做mysql.conf然后将此库文件的路径写入:

/usr/local/mysql/lib/

[root@localhostsbin]#ldconfig

执行ldconfig刷新缓存。

[root@localhostetc]#ifconfigeth0:061.130.130.10netmask255.255.255.0

给网卡eth0再加个地址61.130.130.0/24网段内的,以便测试之用。

[root@localhostetc]#digwww.abc.com@192.168.80.12

[root@localhostetc]#digwww.abc.com@61.130.130.10

测试结果如下:

wKiom1LX2Y7Abtj0AAFX_-2Yt94129.jpg

wKioL1LX2YHBHKB7AAFgXtWQWl8850.jpg

然后进入防火墙配置:

[H3C]inteth0/0

[H3C-Ethernet0/0]ipadd192.168.80.254255.255.255.0

[H3C-Ethernet0/0]inteth0/4

[H3C-Ethernet0/4]ipadd61.130.130.100255.255.255.0

[H3C-Ethernet0/0]quit

[H3C]firewallzonetrust

[H3C-zone-trust]addinteth0/4

[H3C-zone-trust]quit

[H3C]firewallzoneuntrust

[H3C-zone-untrust]addinteth0/0

[H3C-Ethernet0/4]natserverprotocoludpglobal61.130.130.153inside192.168.80.1253

配置完成后可以测试一下:

wKioL1LX2a7RBpvMAAEK-U84u-I187.jpg

测试成功!

Tag标签: DNS   智能解析  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规