今天,我所介绍的是一个互联网上非常基础的服务,是DNS服务器,以下将是我要介绍的内容:包括DNS的原理及工作过程、DNS服务器的搭建、DNS服务器正反向解析、DNS主从服务器、DNS服务器的子域授权、DNS服务器的转发、以及DNS的视图功能。
DNS的原理及工作过程:
DNS:Domain Name System,域名系统,是将域名和IP地址相互映射的分布式数据库,用户只要输入域名,就能转换成域名所对应的IP地址去访问,不需要记忆繁杂的IP地址串,DNS服务器监听在TCP和UDP的53号端口上。
上面,我们提到了DNS是一个分布式数据库,下面我们将通过一张图来了解DNS的结构
如上图所示,这是倒置的树状结构,它的各级域远多于这些,我只是列出部分,我们一次解释一下:
根域:是用来管理互联网的主目录,全球共有13台根服务器,9个在美国,2个在欧洲,1个在日本。
一级域:又称顶级域,刚开始有7个,后来又加了,具体多少大家可以上网了解一下。
com:商业组织,如:google.com
edu:教育机构,如:berkeley.edu
gov:政府部门,如:nasa.gov
mil:军事部门,如:army.mil
net:通常是提供网络基础设施的组织,如:uu.net
org:通常指非盈利性组织,如:linux.org
int:国家组织,如:nato.int
二级域:一般是公司、企业、学校各单位所申请的域名,如magedu
主机名:提供各种服务的主机,如:提供Web服务的www主机
上面,我们看到了DNS的结构图,但是,我们的DNS到底是如何工作的呢?我给出了一个图:
大家第一眼看上去,是不是觉得很乱啊,下面,我为大家一一解释一下:
比如说,我们局域网内的一台普通主机要访问www.google.com这个Web服务器
step1:本地主机会先查看自己的缓存情况,是否有对于的域名的IP,如果没有,则向这个域内
的DNS服务器发起请求。
step2:本地DNS服务器收到请求后,会先查看自己的缓存,如果缓存里没有对应域名的IP,则
本地DNS服务器会向我们的根服务器发起请求。
step3:根收到请求后,发现www.google.com这台主机的com在自己的子域中,根域查看自己查看
自己的数据库,查找对应的com的域的一台服务器的IP地址,返回给本地DNS服务器。
step4:本地DNS服务器得到com的服务器IP地址后,接着向com这台服务器发送这个域名请求。
step5:com域内的服务器收到请求后,发现google这个域在它的下面,然后,com服务器查找自己的
数据库,查找对应google域内的一台DNS服务器的IP地址,返回给本地DNS服务器。
step6:本地DNS服务器收到google的DNS服务器的IP地址后,就向这台google的DNS服务器
发起域名请求。
step7:google域内的这台DNS服务器收到请求后,发现对应的www这台主机的确在自己的域中,
向本地主机返回对应的www这台主机的IP地址。
step8:本地DNS服务器收到google的DNS服务器返回的www主机的IP地址后,将这个IP地址
响应给发起请求的本地主机。
step9:本地的主机收到本地DNS服务发回的响应后,利用得到的IP地址,直接去访问google.com
这台Web服务器。
step10:www这个主机接收到本地主机的请求后,提供响应的服务,并返回数据。
这个过程中,有两个有提到的概念,一个是递归,另一个是迭代:
递归:我们的本地主机将请求发给本地的DNS服务器后,它就一直等待本地DNS服务器给它发回应答,
这个过程就是一个递归地过程
迭代:本地主机发出请求后,我们的本地DNS服务器一次去根域、一级域、二级域发送请求,并返回数据
的这一过程就是迭代。
以上就是DNS的原理以及工作过程。
以下服务器的系统都为CentOS6.5
DNS服务器的搭建,实现正向反向解析
环境准备:以下实验在虚拟机上进行,一台装有linux的虚拟机,一台windows 2003的客户端
提示:如果本机能上网,以上两个主机最好使用nat方式连接,以下过程皆使用yum安装软件包
实验拓扑图如下所示:(及对应主机的IP如图所示)
实验要求:
为magedu这个域建立一台DNS服务器,并能够正反解析
实验过程:
一、正向解析
1、 在linux服务器上安装DNS服务,提供DNS服务的软件为bind
[root@localhost~]# yum install -y bind [root@localhost~]# rpm -qa | grep bind samba-winbind-3.6.9-164.el6.x86_64 bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64 bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64 rpcbind-0.2.0-11.el6.x86_64 PackageKit-device-rebind-0.5.8-21.el6.x86_64 samba-winbind-clients-3.6.9-164.el6.x86_64 bind-9.8.2-0.17.rc1.el6_4.6.x86_64 #bind已经安装了
2、编辑bind的主配置文件(/etc/named.conf),结果如下所示:
[root@localhost ~]# vim /etc/named.conf options { directory "/var/named"; #指定域文件所在的目录 recursion yes; #递归请求都允许 }; zone"." IN { type hint; file "named.ca"; }; include"/etc/named.rfc1912.zones";
3、编辑/etc/named.rfc1912.zones文件,添加我们所要解析的magedu这个域,结果如下所示:
[root@localhost~]# vim /etc/named.rfc1912.zones zone"magedu.com" IN { #添加magedu这个域 type master; #类型,这里是主DNS服务器 file "magedu.com.zone"; #对应的域文件及名称 };
4、 手动编辑并生成上面提到的域文件magedu.com.zone
[root@localhost~]# cd /var/named/ $TTL 3600 $ORIGIN magedu.com. @ IN SOA ns.magedu.com. admin.magedu.com. ( #其实授权记录,必须是第一条,且只有一个 2014080601 #解析库版本 2H #同步的时间间隔 10M #重试时间间隔 5D #过期时长 10H #否定答案的缓存时长 ) IN NS ns IN MX 10 mail ns IN A 172.16.30.10 mail IN A 172.16.30.50 www IN A 172.16.30.51 #记住这个地址,下面解析会出现
5、检查配置文件和域文件配置是否正确。
[root@localhostnamed]# named-checkconf #无结果返回,这就是最好的结果,配置正确 [root@localhostnamed]# named-checkzone "magedu.com" /var/named/magedu.com.zone zonemagedu.com/IN: loaded serial 2014080601 OK #这边也是没有问题的
6、 设置文件权限以及属主、属组。
[root@localhostnamed]# chmod 640 magedu.com.zone [root@localhostnamed]# chown root:named magedu.com.zone [root@localhostnamed]# ll magedu.com.zone -rw-r-----1 root named 206 Aug 5 20:39magedu.com.zone
7、 配置没有问题后,我们就可以启动服务了。
[root@localhostnamed]# service named start Generating/etc/rndc.key: [ OK ] Startingnamed: [ OK ] #这样,服务就启动成功了
8、利用windows客户端进行验证
先对windows的网络参数进行配置,将DNS服务器的地址指定到上面的DNS服务器改为172.16.30.10,
设置如下:
在windows下执行命令行程序,输入以下命令检测
从上面的结果看出,我们的windows客户端通过DNS服务器解析出来了对应www这台主机对应的IP地址,这是在上方的DNS服务器中定义过了的IP地址。
二、反向解析
1、编辑/etc/named.rfc1912.zones文件,添加我们所要解析的magedu这个域的反向解析域,添加如下:
zone"30.16.172.in-addr.arpa" IN { type master; file "172.16.30.zone"; };
2、在/var/named下建立172.16.30.zone域文件,配置如下:
$TTL 3600 @ IN SOA ns.magedu.com. admin.magedu.com. ( 2014080601 2H 10M 5D 10H ) IN NS ns.magedu.com. 10 IN PTR ns.magedu.com. #这里是反向解析记录 51 IN PTR www.magedu.com.
3、设置文件权限及属主、属组
[root@localhostnamed]# chmod 640 172.16.30.zone [root@localhostnamed]# chown root:named 172.16.30.zone
4、重新加载配置文件,并在windows客户端下检测
[root@localhostnamed]# service named reload Reloadingnamed: [ OK ]
在windows测试:
至此,我们的实验就完成了,实验过程中,一定要注意的是,花括号后面的分号,一定不能少,而且,配置介绍后要使用named-checkconf和named-checkzone验证配置文件和域文件是否正确。
主从DNS服务器搭建:
环境准备:
在上一个实验上进行扩展,添加一台linux虚拟机,作为从DNS服务器
拓扑图如下所示:从DNS服务器地址如图所示
实验过程:
1、为从DNS服务器上安装bind软件
[root@localhost~]# yum install -y bind
2、 配置从DNS服务器的主配置文件,跟主DNS服务器的一致,配置如下:
[root@localhost ~]#vim /etc/named.conf options { directory "/var/named"; recursion yes; }; zone"." IN { type hint; file "named.ca"; }; include"/etc/named.rfc1912.zones";
3、编辑主配置文件中include进来的文件,即/etc/named.rfc19212.zones,添加如下内容:
[root@localhost ~]#vim /etc/named.rfc19212.zones zone "magedu.com" IN { typeslave; #这个服务器是从DNS服务器 file"slaves/magedu.com.zone"; #域文件在slaves下,对于named这个用户,/var/named这个目录它没有写权限 masters{ 172.16.30.10; }; #指定主DNS服务器的IP地址 };
4、检查配置文件,启动从DNS服务器
[root@localhost~]# named-checkconf [root@localhost~]# service named start Startingnamed: [ OK ]
5、到主DNS服务器上,加入从服务器的地址,在域文件下配置,即/var/named/magedu.com.zone下
加入以下内容,然后改变解析库版本,一般在原有的基础上加1。
版本库改为:2014080602 添加内容: IN NS ns ns2 IN A 172.16.30.30
6、 检查配置文件和域文件,没问题后重启主DNS服务器
[root@localhostnamed]# named-checkconf [root@localhostnamed]# rndc reload serverreload successful
7、 检测从DNS是否生效,将windows的DNS选项指向从DNS服务器,如下所示:
通过nslookup工具查看,是否能解析www.magedu.com
8、另外,我们还可以检查从DNS服务器的/var/named/slaves目录
[root@localhost~]# ls /var/named/slaves/ magedu.com.zone #同步过来了主DNS服务器的域文件
DNS服务器的子域授权
实验背景:
假设,我们这个域(magedu.com)内有了一个新的市场部(mkt),它的IP为172.16.130.0/16这些地址,由于各种需求,他们需要建一台DNS服务器如何,能够让外网的主机可以访问到市场部的各种服务。
实验准备:
在上面的拓扑上进行扩展,添加一台linux服务器,作为市场部的DNS服务器
实验拓扑图形:地址如图所示
实验过程:
1、在子域的DNS服务器上安装DNS服务
[root@localhost~]# yum install -y bind
2、更改子域DNS服务器上的配置,添加如下的内容
#[root@localhost~]# vim /etc/named.rfc1912.zones zone"mkt.magedu.com" IN { type master; file "mkt.magedu.com.zone"; };
3、创建区域文件。
[root@localhostnamed]# vim /var/named/mkt.magedu.com.zone $TTL 3600 $ORIGIN mkt.magedu.com. #市场部的域名 @ IN SOA ns.mkt.magedu.com. admin.mkt.magedu.com. ( 2014080601 2H 10M 5D 1D ) IN NS ns IN MX 10 mail ns IN A 172.16.100.10 mail IN A 172.16.100.11 www IN A 172.16.100.12
4、 检查配置文件和区域文件,更改文件的权限及属主,并启动DNS服务。
[root@localhostnamed]# named-checkconf [root@localhostnamed]# named-checkzone "mkt.magedu.com"/var/named/mkt.magedu.com.zone zonemkt.magedu.com/IN: loaded serial 2014080601 OK [root@localhostnamed]#chmod 640 /var/named/mkt.magedu.com.zone [root@localhostnamed]#chown root:named /var/named/mkt.magedu.com.zone [root@localhostnamed]# service named start Startingnamed: [ OK ]
5、在父域中添加子域的DNS服务器的地址(172.16.130.10)
#vim/var/named/magedu.com.zone #版本库改为:2014080603 #且添加如下内容: IN MX 10 mail mkt IN NS ns.mkt
6、检查配置文件和区域文件,如果没有问题,加载它们
[root@localhostnamed]# named-checkconf [root@localhostnamed]# named-checkzone "magedu.com" /var/named/magedu.com.zone zonemagedu.com/IN: mkt.magedu.com/NS 'ns.mkt.magedu.com' (out of zone) has noaddresses records (A or AAAA) zonemagedu.com/IN: loaded serial 2014080602 OK [root@localhostnamed]# rndc reload serverreload successful
7、用windows客户端检测子域是否能被解析:
关于DNS转发和DNS视图功能请读者移步到:http://cshang.blog.51cto.com/6143980/1536591