分类: LINUXhtml
原文地址:DNS智能解析的搭建与配置 做者:十年梦生linux
DNS智能解析简单的来讲就是根据DNS服务器根据客户端请求IP的不一样来给客户端返回不一样的服务器地址,好比说电信用户访问www.linuxpad.cn的时候DNS服务器会返回给用户电信服务器,网通用户访问www.linuxpad.cn的时候DNS服务器会返回给用户网通服务器,这样就解决了南北用户访问过慢或电信用户访问网通服务器过慢的问题,国内著名的DNSpod实现的也是这样的一个功能,而BIND9自带的VIEW视图功能就能够彻底实现这个功能。VIEW视图能够说是BIND9一个最强大的功能之一,他能够彻底按照你要求来实现DNS服务器对不一样IP、不一样网段的智能解析工做。本文以centos5.6 i386系统及系统自带的BIND9和Webmin为例讲述BIND9的安装以及VIEW视图的配置功能。Webmin是一个图形化的服务器管理工具,因为DNS配置文件比较复杂,因此建议采用这款图形化配置工做来进行DNS配置。ios
阅读本文你须要了解一些DNS基础,如知道为何会有DNS,什么是A记录、CNAME记录、DNS的正向解析/逆向解析,本文不会涉及这些基础知识。web
本文采用VMware虚拟机来模拟DNS服务器,虚拟机须配置双网卡来模拟DNS对两个不一样的网段作出不一样的解析,其中一块网卡配置为Bridged模式,直接链接到局域网内网(192.168.0.0/24)上,另外一块网卡配置为host-only,仅与本机进行通讯(192.168.136.0/24)。centos
IP配置以下:安全
本地:物理网卡(本地链接)192.168.0.100/24,DNS为192.168.0.101服务器
虚拟网卡(VMware Network Adapter VMnet1)192.168.136.1/24,网络
DNS为192.168.136.128dom
虚拟机:eth0(Bridged) 192.168.0.101/24工具
eth1(host-only)192.168.136.128/24
DNS配置:以www.linuxpad.cn为例,若是客户端为192.168.0.0/24段,则将www.linuxpad.cn解析到192.168.0.200;若是客户端为192.168.136.0/24段,则将www.linuxpad.cn解析到192.168.136.200。
测试方案:先禁用本地链接,使用nslookup工具查看www.linuxpad.cn,返回192.168.136.128则正确;再禁用虚拟网卡,使用nslookup工具查看www.linuxpad.cn,返回192.168.0.101则正确。
1. 安装bind
咱们须要安装如下rpm包:
bind DNS服务器主程序
bind-libs 程序库
bind-utils 客户端命令工具
bind-chroot chroot运行模式
bind的chroot功能是一个颇有用的安全设置,使bind能够在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并非系统真正的/(根)目录,只是系统中的一个子目录而已.这样作的目的是为了提升安全性.由于在chroot的模式下,bind能够访问的范围仅限于这个子目录的范围里,没法进一步提高,进入到系统的其余目录中。
使用yum install命令来安装,
[root@localhost soft]# yum install bind
[root@localhost soft]# yum install bind-libs
[root@localhost soft]# yum install bind-utils
[root@localhost soft]# yum install bind-chroot
使用如下命令查看rpm包是否正确安装
[root@localhost soft]# rpm -qa | grep bind
ypbind-1.19-12.el5
kdebindings-3.5.4-6.el5
bind-chroot-9.3.6-16.P1.el5
bind-utils-9.3.6-16.P1.el5
bind-9.3.6-16.P1.el5
bind-libs-9.3.6-16.P1.el5
若是安装正确,你会看到咱们所安装的rpm包。
设置DNS服务开机自启动
[root@localhost soft]# chkconfig named on
启动命令为:
[root@localhost soft]# service ntamed start
2. 安装webmin
webmin是一个可视化的linux服务器管理工具,能够帮助咱们实现不少功能,从官方网站http://www.webmin.com/下载webmin的最新rpm包,目前最新的为1.560,下载后安装
[root@localhost soft]# rpm -ivh webmin-1.560-1.noarch.rpm
warning: webmin-1.560-1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 11f63c51
Preparing... ########################################### [100%]
Operating system is CentOS Linux
1:webmin ########################################### [100%]
Webmin install complete. You can now login to http://localhost.localdomain:10000/
as root with your root password.
安装完成以后,默认的访问端口是10000,默认用户名位root,密码为系统root密码。访问时请确认系统防火墙已经开放10000端口。启动命令为
[root@localhost soft]# service webmin start
访问界面以下图1/图2:
图1
图2
更改界面语言,选择WebMin下的Change Language and Theme,在语言栏选择”Simplified Chinese(ZH_CN.UTF-8)”。
3. 配置DNS
a.启动DNS服务器
打开Webmin界面,选择Servers下的BIND DNS Server,点击建立配置文件并启动dns服务器,这里只是内网测试,因此只选择第一个便可,若是你的DNS用与外网解析,请选择第二个,如图3。
图3
启动成功后会自动跳转至DNS配置页面,如图4。
图4
图中标出的便是咱们须要使用的功能。
建立新的主区域:建立一个新的DNS配置文件,有正向和逆向之分,稍后介绍;
建立新的视图:这就是咱们实现DNS智能解析的视图功能。
b.建立视图
因为咱们须要对两个不一样的IP段来实现分别解析,所以咱们这里须要建立两个不一样的视图。须要注意的是,一旦建立了视图,全部的域名记录(建立的主区域)都必须属于某个视图,不容许没有视图的主区域存在。建立过程如图5/图6
这里建立两个视图分别为:
名称:view_192.168.0.0 对192.168.0.0/24的客户端请求进行解析
名称:view_192.168.136.0 对192.168.136.0/24的客户端请求进行解析
图5
图6
c.建立正向主区域
建立主区域就至关于建立每一个域名在DNS上的配置文件,以linuxpad.cn为例,咱们须要首先在DNS服务器上建立一个将linuxpad.cn解析到192.168.0.200的主记录(先不考虑192.168.136.0段,只介绍主区域的建立方法),这个记录咱们称之为正向记录,即域名到IP;而后须要再建立一个将192.168.0.200解析到linuxpad.cn的主记录,这个记录咱们称之为逆向记录,即IP到域名。这样一个域名的配置文件就成功了。
对于属于同一段IP的服务器来讲,每一个域名必须建立一个正向主区域,可是全部域名能够共用一个逆向主区域。
咱们点击图4上的建立新的主区域,建立过程如图7
图7
区域类型选择”正向”,域名/网络填写域名”linuxpad.cn”,在视图建立选择此主区域所属的视图,这里选择”view_192.168.0.0”,E-mail地址须写上,不然会报错。
点击建立若是没有错误即建立成功,会自动跳转到编辑主区域的界面,这里咱们为”linuxpad.cn”这个区域来添加A记录。选择”地址”选项(地址选项就至关于A记录),如图8
图8
在名称中填写二级域名,在地址中填写域名所对应的服务器地址,这里名称填写”@”,即表示linuxpad.cn,没有二级域名,固然你也能够填写www/ftp/mail之类的,如图9
值得一提的是这里能够配置泛域名解析,即在名称处填写”*”,这样全部在地址列表中没有的名称所有会匹配到名称”*”所对应的IP地址,如aaa.linuxpad.cn,aaa这个名称不存在于地址记录中,则aaa.linuxpad.cn就会匹配名称为”*”的这个地址记录,注意这条规则的位置,请确认”*”规则位于最末尾,不然位于”*”以后的地址记录将得不到解析。
图9
d.建立逆向主区域
咱们在上一步建立了linuxpad.cn正向解析,可是DNS解析只有正向是不行的,还必须有逆向解析,即将IP解析为域名,只有这样服务器才能将数据经过对应的域名返回给客户端。
建立逆向主区域过程如图10
图10
区域类型选择”逆向”,域名/网络填写”192.168.0.0”,在视图中建立选择”view_192.168.0.0”,一样填入E-mail,而后点击建立,建立成功后会自动跳转到编辑主区域的界面。
接下来,选择”逆向地址”,进行逆向地址的建立,如图11/图12。
图11
图12
在地址中填写服务IP地址,主机名中填写IP所对应的域名。
到此刻为止linuxpad.cn的解析就彻底建立成功了,咱们的DNS服务器就能解析linuxpad.cn这个域名了。可是不要着急,咱们来完成最后一步的配置。
e.另外一个视图中域名解析的配置
在上面的建立主区域的时候,”在视图中建立”这个选项,咱们选择的是view_192.168.0.0,这样的话,咱们所建立的linuxpad.cn这个域名解析只能对192.168.0.0/24这个段内的客户进行解析,若是我使用192.168.136.0段对linuxpad.cn进行访问的时候DNS就找不到服务器了,由于咱们尚未在view_192.168.136.0这个视图中添加规则呢。
按照上一步,咱们再来建立两个规则,区域类型为”正向”,域名/网络为linuxpad.cn,视图属于”view_192.168.136.0”,在”linuxpad.cn”主区域添加地址,名称为”@”,地址为”192.168.136.200”,这里有人会疑惑主区域的名称linuxpad.cn不是与上一步的重复了,不冲突嘛,其实是不冲突的,在不一样的视图中能够存在同名的主区域,可是在相同的视图中不能存在同名的主区域。
咱们再建立一个逆向的主区域,区域类型为逆向,域名/网络为”192.168.136.0”,视图属于”view_192.168.136.0”。在”192.168.136.0”主区域添加逆向地址,地址为”192.168.136.200”,主机名为”linuxpad.cn”。
这样咱们就完成了全部的DNS配置工做。
建立完成以后,返回到区域列表,咱们发现配置完成以后主界面会显示出大概的配置信息。如图13。
图13
4. 测试
配置完成后,首先咱们须重启DNS服务,你能够经过Webmin图像界面来应用配置(
Apply Configuraion),如图14,也能够经过服务器使用命令service named restart来重启DNS服务。
图14
测试192.168.0.0段:
禁用虚拟网卡,以本地链接的192.168.0.0/24段来测试。如图15/图16
图15
图16
禁用本地链接,以虚拟网卡的192.168.136.0/24段来测试。如图17/图18
图17
图18
这样就利用BIND9的VIEW视图功能完美的解决了DNS智能解析的问题。
延伸:
一、 这个实验中咱们完成了DNS服务器对不一样网段的IP进行智能解析,这在内网和外网同时访问公司网站是颇有效的,咱们只须要在公司DNS服务器上配置双网卡,判断若是请求IP是外网则返回外网地址,若是请求IP是内网则返回内网地址,有效的解决了公司内部电脑访问公司网站速度过慢的问题(由于常规状况下,内部电脑访问网站须要先通过互联网DNS服务器进行解析,而后再将服务器返回的数据经过外网返回给内网用户,等于在外面绕了一大圈)。
二、 如何让电信用户解析到电信服务器,网通用户解析到网通服务器。
这个能够在DNS服务器上建立两个视图,一个电信视图一个网通视图,而且把电信和网通的IP分别写到两个视图内(电信和网通的IP列表以及南方和北方的IP列表这个网上均可以查到),而后再针对不一样的客户端分别在两个视图内实现DNS智能解析。