DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,是因特网的一项核心服务。它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定只对应一个域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。在Internet上域名与IP地址之间是一对一(或者多对一)的,也可采用DNS轮询实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

   DNS命名用于Internet的TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。因为,你在上网时输入的网址,是通过域名析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。


DNS客户端的查询过程如下:

1.客户端检查自己/etc/hosts文件,如果有则直接结束,如果没有则下一步;
2.客户端检查自己的DNS缓存信息,如果有则结束,如果没有则下一步;
3.客户端发送递归查询请求给首选DNS服务器,进行下一步,如果首选DNS无响应,则发送解析请求给备用DNS服务器;
4.DNS服务器接受到请求后,先检查是否是自己负责的区域,如果是则查找对应的记录并返回给客户端,结束查询,如果不是则进行下一步;
5.DNS服务器检查自己的DNS缓存,如果有则返回给客户端结束查询,如果没有则向根DNS服务器发送迭代查询请求;
6.DNS服务器经过迭代查询,把最终查询结果返回给客户端,结束查询。

安装DNS服务器:下边以redhat5.8系统安装光盘中bind97为例介绍安装过程,事先已配置好yum源为本地的光盘。

rmp -qa | grep bind           # 查看系统已安装bind软件包
rpm -e bind-libs bind-utils       # 如果安装的有旧版本的先卸载
yum install bind97 bind97-libs bind97-utils  # 安装这三个基本包
service named start            # 启动下测试是否安装成功
netstat -tunlp               # 查看53端口
chkconfig --add named           # 添加到服务列表
chkconfig named on             # 开机自动启动
cp /etc/named.conf /etc/named.conf.bak  # 备份旧的配置文件

创建并编辑新的配置文件

cat /etc/named.conf
options {
directory       "/var/named/"; # 全局配置,定义区域文件存放路径
dump-file     "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
};

zone "." IN {            # 定义根节点
type hint;              # 定义线索区域,注意类型为hint!!!
file "named.ca";           # 全世界13台dns的地址
};

zone "baidu.com" IN {         # 定义baidu.com区域
type master;             # 定义主DNS服务域,注意类型为master!!!
file "baidu.com.zone
};

创建并编辑区域配置文件/var/named/baidu.com.zone

cat /var/named/baidu.com.zone
$TTL 600                          // dns解析结果缓存时间
$ORIGIN baidu.com.               // 定义区域
@       IN      SOA     ns.baidu.com.       admin.localhost.    // @表示本区域       
(
0              // 更新序列号
30M                     // 更新时间
10M                     // 失败重试时间
2D                      // 过期时间
1D                      // 否定回答时间
)          
        IN      NS     ns
        IN      MX     10         mail
ns      IN      A      192.168.56.101
www     IN      A      192.168.56.1
mail    IN      A      192.168.56.1
smtp    IN      A      192.168.56.1
imap    IN      CNAME  smtp
ftp     IN      A      192.168.56.101
chown :named /var/named/baidu.com.zone  # 更改文件的属组为named
chmod 640 /var/named/baidu.com.zone    # 更改文件权限为640
service named resatr            # 重新启动服务
dig -t A www.baidu.com @127.0.0.1    # 测试解析是否正常

创建并编辑反向区域文件      /var/named/in-addr.baidu.com.zone

cat /var/named/in-addr.baidu.com.zone
$TTL 600
@   IN  SOA     ns.baidu.com    admin.localhost.com (
2012062101
30M
10M
3D
1D )
IN  NS  ns.baidu.com.
101 IN  PTR ns.baidu.com.
IN  PTR ftp.baidu.com.
1   IN  PTR www.baidu.com.
IN  PTR smtp.baidu.com.

此时也要改变文件的权限

chown :named /var/named/in-addr.baidu.com.zone   # 更改属组
chmod 640 /var/named/in-addr.baidu.com.zone    # 更改权限
service named reload                # 重新加载
dig -x 192.168.56.1 @127.0.0.1          # 测试反向解析是否正常