DNS系统在网络中的作用是维护一个地址数据库,其中记录了各种主机域名与ip地址的对应关系,提供正向或反向的地址查询服务,即正向解析与反向解析。

  • 正向解析:根据域名查询IP地址,将指定的域名解析为相对应的IP地址,这是DNS服务器最基本也是最常用的功能。

  • 反向解析:根据IP地址查域名,将指定的IP地址解析为相应的域名,只在一些特殊场合用,不常用。

实验操作:以域名benet.com为例,使用Bind软件在Redhat6系统下配置DNS服务器,实现正向解析与反向解析。

安装Bind软件

  • bind: 提供了域名服务的主要程序及相关软件。
  • bind-utils: 提供了对DNS服务器的测试工具程序,如nslookup等。
  • bind-libs: 提供了bind、bind-utils需要使用的库函数。
  • bind-chroot: 为Bind服务提供一个伪装的根目录(将、var/named/chroot文件夹作为Bind的根目录),以提高安全性。

(1)默认已安装bind-utils和bind-libs,这里只是模拟实验环境,不是在真实的互联网环境中,不需要增强安全性,可以不安装bind-chroot,所以只需安装bind即可。

 [root@RedHat6-2 ~]# rpm -qa | grep "^bind"       #查询是否已安装与Bind相关的软件包
  bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64
  bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64

(2)配置yum源,使用yum命令安装bind服务程序

yum install bind -y    #安装Bind软件包

Bind包安装完毕会自动增加一个名为named的系统服务,还涉及三种类型的配置文件:主配置文件区域配置文件区域数据配置文件。这里需要注意的是每一条配置记录的行尾以“;”表示结束。

 [root@RedHat6-2 ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf            #主配置文件(named服务全局选项)
/etc/named.iscdlv.key
/etc/named.rfc1912.zones   #区域配置文件(保存域名与IP地址对应关系)
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost #区域数据配置文件模板(保存域名与IP解析规则)
/var/named/named.loopback

下面就针对正反向解析实验分别编辑Bind服务的配置文件

正向解析实验

1. 编辑主配置文件

vim /etc/named.conf

options {
listen-on port 53 { any; };
#设置监听的地址和端口
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
#允许使用DNS服务的网段
recursion yes;

2. 编辑区域配置文件——添加一个正向“benet.com”区域

vim /etc/named.rfc1912.zones 

zone "benet.com" IN {
#正向“benet.com”区域
type master; #服务类型为主区域
file "benet.com.zone"; #区域数据配置文件为benet.com.zone
allow-update { none; }; #允许哪些客户机动态更新解析信息

3. 编辑区域数据配置文件

从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写到benet.com.zone文件中并保存。

[root@RedHat6-2 ~]# cd /var/named/
[root@RedHat6-2 named]# ls -la named.localhost 
-rw-r-----. 1 root named 152 6月  21 2007 named.localhost
[root@RedHat6-2 named]# cp -p named.localhost benet.com.zone      #保留文件的属性
vim /var/named/benet.com.zone

 $TTL 1D
@       IN SOA  benet.com. admin.benet.com. (   #域名、域名管理员邮箱(不要用@符号)
                                        0       ; serial       #更新序列号
                                        1D      ; refresh      #更新时间
                                        1H      ; retry        #重试延时
                                        1W      ; expire       #失效时间
                                        3H )    ; minimum     #无效解析记录的缓存时间
        NS      benet.com.              #域名服务器记录
        A       192.168.10.50           #服务器IPv4地址
        AAAA    ::1                     #服务器IPv6地址
 IN MX  5       mail.benet.com.         #邮箱交换记录 
mail IN A       192.168.10.66           #正向解析条目(mail.benet.com.)
www IN  A       192.168.10.88           #正向解析条目(www.benet.com.)
ftp IN  CNAME   www                     #正向解析条目ftp.benet.com.是www.benet.com的别名
*   IN  A       8.8.8.8                 #泛域名解析记录

需要注意的是,当使用完整的FQDN地址时,务必记得地址末尾的点号“.”不能省略。

4.启动named服务程序

service named start

5. 检验解析结果

为了使用本机提供的DNS查询服务,需要在DNS配置文件(/etc/resolv.conf)指定DNS服务器的IP地址

vim /etc/resolv.conf 
 nameserver 192.168.10.50    #添加nameserver参数表示解析域名时使用该地址指定的主机为域名服务
[root@RedHat6-2 ~]# nslookup mail.benet.com     #解析邮箱地址mail.benet.com的IP
-bash: nslooup: command not found
Server:     192.168.10.50
Address:    192.168.10.50#53

Name:   mail.benet.com
Address: 192.168.10.66

[root@RedHat6-2 ~]# nslookup www.benet.com        #解析网址www.benet.com的IP  
Server:     192.168.10.50
Address:    192.168.10.50#53

Name:   www.benet.com
Address: 192.168.10.88

[root@RedHat6-2 ~]# nslookup ftp.benet.com       #解析别名地址ftp.benet.com的IP
Server:     192.168.10.50
Address:    192.168.10.50#53

ftp.benet.com   canonical name = www.benet.com.
Name:   www.benet.com
Address: 192.168.10.88
[root@RedHat6-2 ~]# nslookup abc.benet.com      #解析找不到域名解析记录abc.benet.com的IP
Server:     192.168.10.50
Address:    192.168.10.50#53

Name:   abc.benet.com
Address: 8.8.8.8

反向解析实验

1. 编辑主配置文件
同上正向解析实验。

2. 编辑区域配置文件-添加一个反向“10.168.192.in-addr.arpa"区域

vim /etc/named.rfc1912.zones 

zone "10.168.192.in-addr.arpa" IN {
#反向区域“10.168.192.in-addr.arpa”
type master; #服务类型是主区域
file "192.168.10.arpa"; #区域数据配置文件为192.168.10.arpa
allow-update { none; }; #允许哪些客户机动态更新解析信息

3. 编辑区域数据配置文件(与正向解析实验同理)

vim /var/named/192.168.10.arpa

 $TTL 1D
@       IN SOA  benet.com. admin.benet.com. (   #域名、域名管理员邮箱(不要用@符号)
                                        0       ; serial      #更新序列号
                                        1D      ; refresh     #更新时间
                                        1H      ; retry       #重试延时
                                        1W      ; expire      #失效时间
                                        3H )    ; minimum     #无效解析记录的缓存时间
        NS      benet.com.              #域名服务器记录
        A       192.168.10.50           #服务器IPv4地址
        AAAA    ::1                     #服务器IPv6地址
66     PTR     mail.benet.com.          #PTR为指针记录,仅用于反向解析
88     PTR     www.benet.com.

4. 重启named服务

service named restart

5. 检验解析结果

在前面的正向解析实验里面已经指定了DNS服务器的IP地址,故可以直接使用nslookup命令

[root@RedHat6-2 ~]# nslookup 192.168.10.66    #解析IP地址192.168.10.66
Server:     192.168.10.50
Address:    192.168.10.50#53

66.10.168.192.in-addr.arpa  name = mail.benet.com.

[root@RedHat6-2 ~]# nslookup 192.168.10.88   #解析IP地址192.168.10.88
Server:     192.168.10.50
Address:    192.168.10.50#53

88.10.168.192.in-addr.arpa  name = www.benet.com.