一、 DNS服务器:
计算机网络系统只认识IP,但是,使用计算机时是否能记住网络上所有主机的IP呢?显然不可能。。。人脑对于数字组成的IP的记忆较差,相比起来,记住相应的主机名就容易的多。。这就发展成为现在的DNS服务器。
DNS,Domin Name System 域名系统。是由柏克莱大学发展的BIND软件所提供的。基本上DNS最主要的工作就是将Host Name与IP相对应。
二、 DNS的查询过程
1、DNS架构
一般最上层域名(Generic TLDs): .com、.org、.gov、.edu、.mil、.net等
国码或区码最上层域名(Country Code TLDs):.uk、.jp等
域名及其意义:
com 公司、行号、企业
org 组织、机构
edu 教育单位
gov 政府单位
net 网络、通信
mil 军事单位
全球有13个根DNS服务器:(可以用# dig -t NS . 命令查看)
b.root-servers.net. 603213 IN A 192.228.79.201
c.root-servers.net. 603214 IN A 192.33.4.12
d.root-servers.net. 603214 IN A 128.8.10.90
d.root-servers.net. 603214 IN AAAA 2001:500:2d::d
e.root-servers.net. 603216 IN A 192.203.230.10
f.root-servers.net. 603216 IN A 192.5.5.241
f.root-servers.net. 603216 IN AAAA 2001:500:2f::f
g.root-servers.net. 603218 IN A 192.112.36.4
h.root-servers.net. 603218 IN A 128.63.2.53
h.root-servers.net. 603218 IN AAAA 2001:500:1::803f:235
i.root-servers.net. 603220 IN A 192.36.148.17
i.root-servers.net. 603219 IN AAAA 2001:7fe::53
j.root-servers.net. 603221 IN A 192.58.128.30
j.root-servers.net. 603220 IN AAAA 2001:503:c27::2:30
2、DNS的搜索流程
(1)先查看本身有没有记录(查看本机Hosts文件)
(2)向最顶层(root)查询
(3)向第二层查询
(4)向下层持续查询
(5)记录暂存内存
本机缓存---本机hosts文件-----DNS服务器缓存-----DNS hosts文件-----DNS 所解析的主机--
3、DNS使用的端口号:
DNS使用的是网络查询,即开通监听状态的端口。
启动DNS的Named时,会同时启动TCP和UDP的53号端口。
# netstat -tunlp | grub :53 检查端口号
4、子域授权
设置方法:
上层DNS授权,自己设置DNS主机
直接请求上层DNS主机为自己设置DNS
三、DNS主机的详细设置
详细设置:
1、主要配置文件是/etc/named.conf
2、每个正向解析、反向解析都需要一个文件,而文件名是由/etc/named.conf设置的。其所在路径是由/etc/named.conf定义的。
3、目前的BIND程序可以进行chroot,其配置文件为/etc/sysconfig/named
4、当DNS查询时,若本身没数据库,则前往root(.)或Forwarders主机查询。
5、DNS服务器的架设需要上层DNS的授权才可以成为合法的DNS服务器。
6、判断named是否启动成功,一定要查阅/var/log/messages内的信息。
注:没有向上层ISP注册合法的域名,就没有权利架设合法的DNS服务器。
四、简单的案例
以RedHat系列主机上DNS的架设为例:
1、首先查看本机上是否有DNS服务(若无这项服务并安装DNS服务):
# lsmod
# yum list all bind*
# yum install bind
2、/etc/named.conf配置文件
/etc/named.conf配置文件是整个Linux上DNS的核心,其主要有三部分:
(1)规范DNS服务器的使用权限,包括能否查询、forward是否安装、Master/Slave架构等。
(2)设置Zone(子域)以及Zone File的所在。
(3)设置DNS本机管理接口以及其相关的金钥文件(Key File)。
具体设置为:
# vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpr" IN {
type master;
file "named.local";
};
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
3、最上层DNS(root)数据库文件的设置
一般此文件的最上层DNS为13个根DNS服务器。
# dig -t A NS . > named.ca
4、正向解析数据库的设置
# vim /var/named/localhost.zone
$TTL 600
@ IN SOA localhost. admin.localhost. (
2012030501
1H
10M
1W
1D)
IN NS localhost.
localhost. IN A 172.0.0.1
注:$TTL 用于设置当外部DNS服务器对自己的DNS领域进行查询时,记录会放置在对方DNS服务器内几秒钟。
$ORIGIN 重新指定Zone的定义。
@ 这个符号代表Zone的意思。
. 它代表一个完整的主机名称(FQDN),而不仅仅是Host Name。
SOA SOA是Start Of Authority的简称,代表Master/Slave相关的认证、授权资料
DNS自己的领域的名称解析器: A 正向解析标志
PTR 反向解析标志
NS 后面一定是主机名称,向后面的主机要求 Zone查询。
MX Mail eXchanger: 邮件交换器
(有优先级 0-99)
CNAME 正式名称。 建立主机别名
2012030501 版本号
1H 刷新时间为一个小时
10M 重试时间为10分钟
1W 超时时间为一个月
1D 否定时间为一天
4、反向解析配置文件设置
# vim /var/named/named.local
$TTL 600
@ IN SOA localhost. admin.localhost. (
2012030501
1H
10M
1W
1D)
IN NS localhost.
1 IN PTR localhost.
5、解析其它主机的配置文件的设置
# vim /var/named/magedu.com.zone
$TTL 600
$ORIGIN magedu.com
@ IN SOA ns.magedu.com. admin.magedu.com. (
2012030501
1H
10M
1W
1D)
IN NS NS
IN MX 10 mail
ns IN A 172.16.100.1
mail IN A 172.16.0.1
www IN A 1.1.1.1
ftp IN A 1.1.1.2
pop IN CNAME mail
www IN A 1.1.1.10
imap IN A 1.1.1.10
6、文件数组修改
把配置文件的数组修改为named。
# chown :named /etc/named
# chown :named /var/named/named.ca
# chown :named /var/named/localhost.zone
# chown :named /var/named/named.local
# chown :named /var/named/magedu.com.zone
7、DNS的启动与观察
测试配置文件是否有语法错误:
# service named configtest
DNS服务的启动:
# service named start
若修改了配置文件,添加DNS功能,可以重新载入数据文件:
# service named reload
五、DNS的查询指令:host、 nslookup、 dig。
host -a 列出主机的所有相关信息,包括IP、TTL等。
host -t 跟解析的标志。
nsloop 后可以跟上待查询的主机名称或IP等参数。
dig -t 跟解析的标志。
dig +trace -t A 正向解析时显示其解析过程
例如:
# dig -t localhost
# dig -x 127.0.0.1
# dig -t A www.baidu.com
# dig +trace -t A www.baidu.com
# dig -t A www.magedu.com @172.16.100.1
# host -t A www.magedu.com
# host -t NS magedu.com