Domain Name System
The
Domain Name System
(
DNS
) is a hierarchical distributed naming system for computers, services, or any resource connected to the
Internet
or a
private network
. It associates various information with
domain names
assigned to each of the participating entities.
域名系统
(
DNS
)是一个分层分布式计算机,服务,或连接到任何资源命名系统
互联网
或
专用网络
。它与
域名
分配给每个参与实体的各种信息。
DNS端口号用来标示某个特定的应用,而IP地址是用来标示某个特定主机的。
域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和
转发服务器
。在Internet上域名与
IP地址
之间是一对一(或者多对一)的,也可采用DNS轮循实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为
域名解析
,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
DNS工作在应用层,是一个服务。简单的工作流程为:客户端(Client,以下简写为C)的某个程序发起名称解析的请求道DNS服务器(以下简写S),S返回其相应的IP地址,C再将解析的请求改为此IP,到路由表中查找其所对应的服务器。而C端的程序(gethostname)生成一个本地解析文件hosts,将IP地址与解析的地址对应起来,形成本地解析。
域名系统是由IANA(因特网编号管理局)进行管理的,世界上有13个根域服务器,亚洲的好想是在日本,而我国则没有,因为那时我国还不发达,还没有如今的号召力和震撼力……嘻嘻
DNS的查询分为
迭代查询
和
递归查询
2种。
客户端发起的请求若是直接由他所附属的DNS服务器返回权威答案,则说明是递归查询;
若是客户端发起的请求不在其所附属的DNS服务器记录内,(1)则有DNS服务器向上询问根服务器,而根服务器根据其所请求的顶级域告知其询问哪个DNS服务器;(2)此顶级DNS服务器根据其下一级域,告知应该查询 的下一个DNS服务器;(3)以此类推,直至找到真正的能够解析的DNS服务器,并将结果直接返回给发起请求的客户端,这种查询模式就是迭代查询。
DNS的解析分为正向和反向的,但是这是两种独立的工作机制,并不是谁离开谁就不能正常工作了,就像是地球没有了你,仍然照常转动。正向就是A: FQDN——> IP(完全现定域名到IP地址的解析过程);反向的就是PTR: IP——> FQDN。
每一个对应关系的条目,叫做记录(record),类型叫做type。记录类型有以下几种:
A :
正向地址。
PTR :
反向地址。
SOA:
Start of Authority 起始授权记录,是授控DNS的最高长官。
NS:
Name Server 名称服务器,可以有多个,专门用于区域解析,说明区域解析的是谁。
MX :
Mail eXchanger 邮件交换器 ,有priority(优先级),0~99,数值越小,优先级越高
CNAME:
正式名称,也叫别名记录。如x 的别名是y,则 y 的正式名称是x.
x CNAME y :说明y 是正式名称。一个主机可以有多个别名,可以有多个FQDN,一个FQDN也可以有多个IP地址。
DNS服务器的类型:
主服务器:就是经常工作的服务器,当有新数据时,就是用通知机制,让辅助服务器来此获取新的数据,不论其规定的刷新时间到达与否。
辅助服务器:不能自此生成数据,而应保持与主服务器相同的数据,(也可以只有一半,正向或反向的。)
缓存服务器:不负责解析任何区域(除了localhost),只缓存内部的查询请求。
转发服务器:不解析任何数据,只将所有请求转发出去。
区域传送(zone transfer): 分为完全区域传送和增量区域传送。
完全区域传送(axfr):将主DNS上的文件传送到一个新建的辅助DNS服务器上的过程,叫完全区域传送。
增量区域传送(ixfr):只传送更新的数据的过程。
注意: 当主DNS服务器过期或者不能工作了,便不能在提供解析服务,此时,辅助DNS服务器也就死了,不能提供解析服务(是个很严重的事情,就像殉情一样)。
如何在 RedHat 5.4 上实现DNS服务器的配置:
(1)
先配置好yum源,装软件,bind是Linux上提供的DNS软件,进程名字是named,提供的协议是dns,使用的端口为53。
# yum install bind
(2)建立配置文件,告诉其根域名所在的地方,本地hosts文件。
配置文件在/etc/named.conf ,属主为root,属组为naemd。区域文件默认放在/var/named/下与之相对应的文件名(区域数据目录或工作目录)。
#
vim /etc/named.conf
options { #
options 用于指定BIND服务参数
directory "/var/named"; #
指定其工作目为"/var/named"
};
zone "." IN {
#定义
"."
管辖的区域
type hint;
#类型为hint
file "named.ca";
#指定
根
区域配置文件名,此处的"named.ca"为固定写法,
};
zone "localhost" IN {
#定义localhost区域
type master;
#类型为master
主
DNS
file "localhost.zone;
#区域文件名
,
redhat中通常将其命名为localhost.zone
};
zone "0.0.127.in-addr-arpa" IN {
#定义反向区域,将IP地址的所在的网段倒置写
,
其 中".in-addr-arpa"是固定写法
type master;
#类型为master
file "named.local";
#区域文件名
,
redhat中通常将其命名 为named.local
};
(
3
)
区域配置文件:/
var/
named/
#cd /var/named
切换到bind工作目录
#dig -t NS . > named.ca
查询根服务器并且存入named.ca文件中
#chown :named named.ca
(
4
)本地
hosts
解析文件:
#
vim /
var
/named/named.local
$TTL 600
生存时间,可任意指定
@ IN SOA localhost. admin.localhost. (
2012030601 #配置文件版本号,最多十位
20M #定义从服务器到主服务器上检查 数据的刷新
5M #重试时时间 不得超过刷新时间
5D #超时时间
1D ) #否定回答,让对方缓存时间
@ IN NS localhost.
1 IN PTR localhost.
这里的.一定不能少
(
5
)本地正向解析文件:
#
vim /var/named/magedu.com.zone
$TTL 600
@ IN SOA
ling
.magedu.com. admin.magedu.com. (
2012030701
20M
5m
5D
1D )
IN NS
ling
IN NS ns
IN MX 10 mail
ling
IN A 172.16.
7.23
ns IN A 172.16.
7
.2
mail IN A 172.16.0.1
(
6
)
反向解析区域文件:
#
vim /var/named/172.16.zone
$TTL 600
@ IN SOA
ling
.magedu.com. admin.magedu.com. (
2012030701
1H
10M
7D
1D )
IN NS
ling
.magedu.com.
IN NS ns.magedu.com.
23.7
IN PTR
ling
.magedu.com.
2.7
IN PTR ns.magedu.com.
0.1 IN PTR mail.magedu.com.
#
chown :named /etc/named.conf /var/named/*
改变配置文件的属组为:named
BIND 服务启动与暂停:
service named start 启动
service named stop 停止
service named restart 重新启动
service named reload 重新加载
service named status 查看当前启动状态
此时一个简单的dbs服务器就搭建好了。启动后就可以试一试了,如: dig -t A ling.magedu.com看看解析是否成功,是否准确。