一、DNS
1、DNS:Domain Name System,是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式
数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名
长度的限制是63个字符,域名总长度则不能超过253个字符。
2、BIND (Berkeley Internet Name Domain),分布式的多层次的主机名IP对应系统,使用最广的DNS软 件。
目前流行的版本是BIND8和9。
所有的DNS服务器的其他软件开发默认兼容BIND服务器
3、FQDN: Fully qualified domain name,完全资格域名。能指定其在域名系统 (DNS) 树状图下的
一个确实位置。一个完全资格域名会包含所有域名级别,包括 顶级域名 和 根域名。它只
能用一种方式解析。因为其独立性和明确性,一个完全资格域名的唯一性可被识别。
主机名.域名. 注意最后以点结尾。
4、DNS组织结构
最上面是根域,全球13台根域服务器储存根域的解析信息。根域解析的是顶级域的解析服务器地
址。顶级域维护的是二级域的解析的服务器地址。
常见的顶级域服务器
net 网络域名
edu 教育域名
org 组织的域名
gov 政府域名
mil 军事域名
cn 中国地区
hk 香港地区
tw 台湾地区
int 国际组织
比如解析www.e-bai.com.,第一步,查询本地host文件和缓存有没有这个记录,有就直接解析,没有就访问DNS服务器,如果DNS服务器上没www.e-bai.com或者e-bai.com不在你访问的DNS服务器管理区域内,那么DNS服务器就会向根域名服务器发递归查询。
5、DNS域名解析基本过程
实际中不使用递归式查询,而是使用迭代式查询
我们日常的DNS查询是本地的DNS局端服务器。这个服务器本身不做任何解析,只维护缓存。实际的使用过程中不直接访问.域服务器,而是中间由本地DNS缓存服务器去处理。相应的DNS缓存服务分布在互联网用户当地的局端服务器。只有在局端服务器没有的记录和整个上级服务器没有的情况下,才会访问.域服务器。因此请求的压力被相应的缓存服务器分担,整个DNS构成了全球最大的分布式数据库。
带来的问题,例如域名如果发生改变,不会第一时间被网络客户端接受到。当域名发生变化后,需要等待当地DNS局端服务器的缓存失效后,才会发生变更。域名发生变化需要等待一段时间,等待更新传递到当地的缓存服务器,等待时间由几分钟到48小时不等。等待时间依据缓存服务器对应缓存时间的设置以及当前本地域记录缓存的有效时间。
因此做域名的变更或调整的时候,需要预留扩散的时间。
6、DNS的查询方向
1)正向解析
查询域名,询问DNS的服务器查询域名的IP地址
2)反向解析
通过查询IP地址得出域名的结果
例如邮件服务器通过反向查询判断用户的发信服务器是否是真实的服务器,如果不是就会判断为垃圾邮件。
如果需要把配置的DNS服务器给所有的互联网用户进行使用,还需要将DNS服务器的域名注册为合法的域名。
所谓注册域名是指向相应的根域和顶级域中加入域名的信息。
IANA(Internet Assigned Numbers Authority,互联网号码分配局)是一家互联网地址指派机构,管理国际互联网中使用的IP地址、域名和许多其它参数的机构。IP地址、自治系统成员以及许多顶级和二级域名分配的日常职责由国际互联网注册中心(IR)和地区注册中心承担。IANA是由ICANN管理的。
ICANN:(Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,是美国加利福尼亚的非营利社团,主要由互联网协会的成员组成,创建于1998年9月18日,目的是接管包括管理域名和IP地址的分配等与互联网相关的任务,这些任务曾由其它组织(特别是IANA)代表美国政府来执行。
CNIC(Computer Network Information Center×××计算机网络信息中心),成立于1995年4月,是×××下属的科研事业单位。主要从事×××信息化建设、运行与支撑服务,以及计算机网络技术、数据库技术和科学工程计算的研究与开发,并负责中国境内的域名注册和地址分配服务
7、DNS报文格式
8、主要的查询类型和响应
1)A记录: 对应的IP地址。 域名指向IP地址
2)NS: nameserver,表示这个域由哪个服务器负责进行解析
3)CNAME: 别名记录
假设三个网站的域名同时指向一个服务器
www.a.com IN A 1.2.3.4
book.a.com IN A 1.2.3.4
news.a.com IN A 1.2.3.4、
现在服务器发生变化,需要修改3条记录
如果设置为
www.a.com IN CNAME host1.a.com
book.a.com IN CNAME host1.a.com
news.a.com IN CNAME host1.a.com
host1.a.com IN A 1.2.3.4
现在服务器如果发生变更,只需要修改
host1.a.com IN A 1.2.3.4 一条记录即可
4)PTR:指针记录,专门做反向解析的。A记录的反义词。将IP地址指向域名
5)MX: 邮件交换记录。专门用来解释邮件服务器的。
因为在域中会有多种主机,邮件服务器发送邮件的时候是
用户名@域名,我们回信的时候再发给域,这个时候邮件服务器具体地址无法确定,所以需要一台专门的机器描述它,
确定域中的服务器具体地址。MX专门来做这种解释
9、如何安装Bind
1)执行yum install bind bind-chroot安装bind和bind-chroot
bind是主程序包,bind-chroot可以让bind服务器具有chroot
功能。
在rhel中装完这两个包,程序已经完整,但是相应的配置文件是空的,不能方便开始和操作。所以需要安装caching-nameserver
2)yum install caching-nameserver
3)由于已经安装bind-chroot包,所以bind在运行时把/var/named/chroot当成根目录使用,
bind-chroot会改变默认的root目录,而把/var/named/chroot当成根目录来进行使用。
chroot功能增强了安全性。用户使用DNS服务器的时候,相应程序的工作范围局限在/var/named/chroot目录。因此默认情况下,bind的配置文件应该是放在/etc/目录中,
现在bind的配置文件的真实保存目录是/var/named/chroot/etc,该目录下设置不同的子目录。不能把配置文件放在根目录下的/etc目录下,否则bind配置无法生效。
现在/var/named/chroot/etc/下已经安装了一些文件,这些文件是安装caching-nameserver包时安装的,主要是
named.caching-nameserver.conf named.rfc1912.zones这两个文件
(1)执行mv named.caching-nameserver.conf name.conf
因为bind服务器默认配置文件名为name.conf,改名之后表示已经启用
(2)bind调用的信息文件放置在
/var/named/chroot/var/named/
.zone文件是区域解析文件。描述多个域内的域名的解析配置
(3)bind服务器的日志默认输出到/var/log/messages
10、如何配置和使用bind
1)打开主配置文件name.conf
2) name.conf文件是一个配置的模板,该文件默认情况无法使用,需要修改
options部分
(1)options bind服务器的本身的参数设置
(2)大括号包括的内容是options这一块的配置项
注意:每一行配置最终都以分号;表示结尾
(3)listen-on port 53 表示当前bind服务器监听的是53号端口。
(4){ 127.0.0.1; } 相应的控制列表设置,bind的ACL访问控制列表,表示在{ }内写到的是可以访问的,没写到就不能访问。
默认127.0.0.1只能本机访问,如果设置成公开
的,可以修改为any
这个控制列表写法是
{ 开始,}结束,表示这个配置项;配置中间的内容左边和右边必须要有一个空格,切记!!
并且以分号;表示一个配置的结束
(5)listen-on-v6 port 53 { ::1; }; 表示对IPV6地址的设置,目前尚未使用IPV6,所以我们可以注释掉。
注意:在DNS配置文件中注释的符号是//
(6)directory "/var/named";表示当前DNS服务器域解
析记录的文件的保存位置
注意:我们的bind服务器运行在chroot环境中,所以这里的/var/named具体目录是
/var/named/chroot/var/named
(7)dump-file "/var/named/data/cache_dump.db";
当前DNS服务器的缓存信息保存的文件,同样是chroot
的地址
(8)statistics-file "/var/named/data/named_stats.txt";记录当前named服务器的一些信息的文件
(9)memstatistics-file "/var/named/data/named_mem_stats.txt";
记录内存状态文件
(10)allow-query { localhost; };
哪个来源主机可以访问。控制的是进入的数据包,
和listen-on port 53的区别:
listen-on port 53:表示控制监听端口绑定在哪个IP地址上,默认绑定在127.0.0.1只对本机服务,改成any表示本机所有网络接口都可以监听53端口。控制的是网络接口即确定在哪块网卡监听53号端口。
allow-query { localhost; };控制哪个用户来查询。控制的是访问者。默认是localhost,只有本机才能查询。
现在我们改成any
(11)allow-query-cache { localhost; };
谁能查询我的缓冲。如果把当前的DNS服务器配置成缓冲服务器,可以改成any
现在这台DNS服务器才能被外部访问。
logging 日志部分一般保持默认即可
view localhost_resolver view这是bind9的新功能,目前不需要视图功能
我们只需保留include "/etc/named.rfc1912.zones";其余删除
/etc/named.rfc1912.zones文件是bind服务器域的配置文件信息。
最终修改结果
至此bind主配置文件初步修改完毕。
3)再次提醒:name.rfc1912.zones所在的目录/var/named/chroot/etc,
name.rfc1912.zones文件是zone的配置即当前域的配置内容。
我们配置DNS服务器就是对相应的域进行解析。域在英文中称之为
zone,域中各个主机的解析记录就保存在zone文件中。DNS就
是依据zone部分的配置描述确定哪个域使用哪个zone文件。
在所有的描述中,第一个域叫.域即根域。
(1)现在我们vi name.rfc1912.zones
写法格式:
zone开始 “.” 引号当中写入要解析的域 IN 必须的组成部分
{ }大括号中是这个域的配置内容。
首先是type域的类型。如果描述的是.域,一定要写成hint。这是专门给.域使用的类型
file “named.ca” file语句指定这个域的zone的文件在哪里以
及名称。这个文件记录着那个域里的各项域名设置信息。
“named.ca” .域的解析记录信息,这里只写了一个文件名称,
它是以相对路径的方式来写的
这里直接写文件名称的原因:因为在.named.conf文件中已经
输入zone文件的目录是/var/named。
所以现在named.ca保存的位置实际上是/var/named/named.ca,又因为使用时chroot,所以完整目录
/var/named/chroot/var/named/named.ca
vi name.ca可以查看到各种各样的NS记录,即.域的记录,罗列着全球的.域服务器的地址