DNS智能解析的搭建与配置
BIND9 VIEW功能实现DNS 智能解析编辑:LinuxPad 日期:2011/10/3 本人系LINUX 爱好者,关注开源、网络安全、自动化运维BLOG:linuxpad.blog.chin
BIND9 VIEW功能实现DNS 智能解析
编辑:LinuxPad 日期:2011/10/3 本人系LINUX 爱好者,关注开源、网络安全、自动化运维
BLOG:linuxpad.blog.chinaunix.net E-Mail:linuxpad.cn@gmail.com QQ 交流群:161230409 欢迎加群交流 共同探讨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 配置。
阅读本文你需要了解一些DNS 基础,如知道为什么会有DNS ,什么是A 记录、CNAME 记录、DNS 的正向解析/逆向解析,本文不会涉及这些基础知识。
本文采用VMware 虚拟机来模拟DNS 服务器,虚拟机须配置双网卡来模拟DNS 对两个不同的网段做出不同的解析,其中一块网卡配置为Bridged 模式,直接连接到局域网内网(192.168.0.0/24)上,另一块网卡配置为host-only ,仅与本机进行通信(192.168.136.0/24)。 IP 配置如下:
本地:物理网卡(本地连接)192.168.0.100/24,DNS 为192.168.0.101 虚拟网卡(VMware Network Adapter VMnet1)192.168.136.1/24,
DNS 为192.168.136.128
虚拟机: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

