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 # 测试反向解析是否正常