DNS的简介
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
DNS的结构
通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区 。
DNS的区域库
在DNS中,有两个概念,对于一台DNS,它可以解析的域(domain),可以理解为一个逻辑的概念;而它用来解析的解析库文件(可以包含正向解析和反向解析),它是一个物理概念。
区域解析库文件的资源记录:rr(resource record)
有类型的概念:用于此记录解析的属性
SOA: Start Of Authority, 起始授权记录,一个区域文件只能有一个(SOA是用来指定这个区域这由谁来管理的); NS:Name Server 指定负责给定区域的名称服务器。 MX: Mail eXchange, 邮件交换器,MX记录有优先级属性(0-99); A:FQDN --> IP,专用于正向解析库 PTR: IP --> FQDN,专用于反向解析库 AAAA:FQDN --> IPv6,专用于正向解析库 CNAME: Canonical Name,正式名称
DNS查询
递归:客户端通过DNS服务器去解析来获取IP就是递归查询,DNS服务器必须给它答复
迭代: DNS服务器去公网上从根DNS服务器去依次查找解析的过程就是迭代
hosts --> local dns cache --> dns server (cache) --> 迭代
客户端上会有缓存:1、加速了解析速度;2、减轻了服务器的压力
权威应答:只要负责那个域名具体解析的服务器,就叫做权威服务器
非权威应答:利用缓存来作应答叫做非权威应答
DNS服务器类型
主DNS服务器
1、负责本地客户端地址解析的请求,并且会缓存下来
2、负责某个域名的解析(它就是这个域名的权威DNS服务器)
从DNS服务器
可以跟主DNS服务器完成一样的功能,但是它区别就是,对于域名解析的配置和修改,是在主DNS服务器上配置的,从DNS服务器只是去同步主DNS服务器的库文件,也就是说这个同步过程只能是单向的,并且可能只同步正向,或者同步反向,也可能同步两者。
缓存服务器
缓存DNS服务器就是只负责本地客户端地址解析的请求,去公网上迭代解析的过程,并且会把查询返回的结果缓存在服务器上;它并不对域名进行解析。(它不需要去互联网上注册)
转发DNS服务器
只会转发地址解析的请求,可以去互联网查询,但是并不会把查询的结果缓存在本地。一般这种情况还有另一台DNS服务器,这台服务器本身并不能上外网,它会把请求交给转发DNS服务器,由转发DNS服务器来给它查询结果,然后再缓存在本地。
BIND的安装和配置
BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
20世纪80年代,柏克莱加州大学计算机系统研究小组的四个研究生Douglas B Terry、Mark Painter、David W. Riggle和周松年(Songnian Zhou)一同编写了BIND的第一个版本,并随4.3BSD发布。
1、安装程序包 # yum install bind 2、修改主配置文件 (1)、/etc/named.conf options { directory "/var/named"; recursion yes; 是否允许递归 }; zone "ZONE_NAME" IN { ype {master|slave|hint|forward}; 指定服务器类型 file "mageedu.com.zone"; 指定解析库文件 }; logging { 日志 } 3、为每一个区域提供解析库 name [ttl] IN RRType value name:这里有个特殊的符号@(在dns中有特殊含义,表示当前区域) IN:固定值,表示internet [ttl] : 缓存时间,可以省略 任何解析库文件的第一个记录的类型必须是SOA SOA:Start Of Authority name: 区域名称,通常可以简写为@ value: 主DNS服务器的FQDN,也可以当前区域的区域名称; 例如:@ IN SOA ns.magedu.com. admin.magedu.com. ( serial number ;解析库的版本号,例如2014080401 refresh time ;周期性同步的时间间隔 retry time ;重试的时间间隔 expire time ;过期时长 negative answer ttl ;否定答案的统一缓存时长 ) 区域文件中,FQDN中最后的.是不可以省略的 [email protected] 跟的是区域管理员的邮箱地址,由于@有特殊含义,所以写成admin.mageedu.com. NS:name server name: 区域名称 value: DNS服务器的FQDN 例如:@ IN NS ns.magedu.com. 注意: 如果有多台NS服务器,每一个都必须有对应的NS记录; 对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录; MX:Mail eXchanger name: 区域名称 value: 邮件服务器的FQDN 优先级必须给 例如: @ IN MX 10 mail.magedu.com. @ IN MX 20 mail2.magedu.com. 注意: 如果有多台MX服务器,每一个都必须有对应的MX记录;但各MX记录还有优先级属性 对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录; A: Address name: FQDN value: IP 例如: www.magedu.com. IN A 1.1.1.1 www.magedu.com. IN A 1.1.1.2 pop3.magedu.com. IN A 1.1.1.3 imap.magedu.com. IN A 1.1.1.3 AAAA: ipv6 IP CNAME: Canonical Name name: FQDN value: FQDN 例如: www.magedu.com. IN A 1.1.1.5 web.magedu.com. IN CNAME www.magedu.com. PTR: pointer name: 逆向的主机IP地址加后缀in-addr.arpa,例如172.16.100.7/16, 网络地址为172.16, 主机地址为100.7,其name为7.100.in-addr.arpa. value: FQDN 例如: 7.100.in-addr.arpa. IN PTR 服务脚本:/etc/rc.d/init.d/named 主配置文件:/etc/named.conf, /etc/named.rfc1912.zones 区域解析库文件:/var/named/zone_name.zone(建立完这个文件一定要记得更改它的文件属组named和权限640) $TTL 3600 定义缓存时间,单位是s $ORIGIN mageedu.com. 不写完整格式,自动补全的内容 name段如果不写,表示和上一条一样的name值 /var/named/named.ca 放着13台根dns服务器的地址
正向解析示意图
客户端测试工具
1、host -t RRType NAME [SERVER]
例如:host -t NS mageedu.com 172.16.100.7
2、nslookup
nslookup>
server IP:
set type={A|SOA|NS|MX}
name
3、dig
dig -t TYPE name @server
类型可使用:AXFR
例如: dig -t AXFR mageedu.com @172.16.100.7
DNS的随谈