一、DNS功能
DNS用于进行域名解析,说白了就是给出一个主机名,你给我找出该主机名对应的ip地址。例如:给你www.baidu.com主机名,你给 我查出对应的ip地址:163.177.151.109。一些主机名还会有别名,如www.baidu.com就有别名www.a.shifen.com,甚至不止一个别名,或一个别名有2个ip地址。在linux机子上,运行nslookup(name service lookup)就是进行域名解析。如下面:
nslookup www.baidu.com
Server: 172.17.0.1
Address: 172.17.0.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 111.13.100.91
Name: www.a.shifen.com
Address: 111.13.100.92
二、DNS的原理
服务器的ip地址(请求进行域名解析的地方);2、向dns服务器请求进行域名解析(dns
实质工作),3、缓存已经解析过的主机名与ip地址对应关系(这样已缓存的就不需要再向
dns服务器请求解析了)。
一个dns的解析过程如下:
1、 应用程序请求一个主机名解析,如:应用程序跟dns说,我需要知道www.baidu.com
的ip地址,你给我查一下;
2、 Dns先在本地缓存中查询,若查到,返回ip地址给应用,流程结束。若没查到, 进行
下一步;
3、 Dns把需要查询的主机名打包进dns数据包,然后把dns数据包发送到dns服务;
4、 DNS服务器返回查询的主机名的dns数据包;
5、 Dns解析数据包,把主机名对应的ip地址返回给应用程序;
下图为DNS运行流程:
资源记录
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
v SOA:Start Of Authority,起始授权记录;一个区域解析库有
且仅能有一个SOA记录,必须位于解析库的第一条记录
v A:internet Address,作用,FQDN --> IP
v AAAA: FQDN --> IPv6
v PTR: PoinTeR,IP --> FQDN
v NS: Name Server,专用于标明当前区域的DNS服务器
v CNAME:Canonical Name,别名记录
v MX: Mail eXchanger,邮件交换器
三、DNS的程序
BIND的安装与服务管理
yum -y install bind 就可以完成安装。安装后/etc/init.d/下启动脚本为named,服务名称也为named
BIND的配置文件说明
主配置文件:/etc/named.conf,里面至少有三个区域,根、localhost、127.0.0.1
区域数据库文件:/var/named/
运行用户和组:都是named
主配置文件named.conf
options全局选项
zone "zone name" 定义区域
logging定义日志系统
区域数据库文件的一些写法(假如这里的区域名称是a.com,主机名dns.a.com):
a.com. IN NS dns.a.com.
@ IN NS dns
IN NS dns
这三种写法是一样的
例如上面第二条dns后面不加. 会自动在后面补上区域自身名字,等于dns.a.com
如果要写全,必须把最后一个.写上,例www.a.com.
SOA记录(第一条记录):
name: 只能是区域名称,例:a.com. 通常可以用@简写
value: 必须是主DNS服务器的FQDN
SOA必须是区域数据库文件的第一条记录
例:
@(引用区域名称) 600 IN(关键字) SOA (类型) ns.a.com. (主DNS名字) dnsadmin.a.com. (邮箱地址,其中不用用@,用.代替) (
serial number ; 序列号,这里;为注释,十进制数字,不能超过10位,通常使用日期,例如2014031001
refresh time ;刷新时间,每隔多久到主服务器检查一次
retry time ;重试时间,应该小于refresh time
expire time ;过期时间
negative answer ttl ;否定答案的ttl,客户端缓存的时间,设定过长会导致无法立即生效,设定过短导致客户端频繁请求
)
四、测试命令
dig [-t type] name [@SERVER] [query options]
dig只用于测试dns系统,不会查询hosts文件进行解析
v 查询选项:
+[no]trace:跟踪解析过程 : dig +trace magedu.com
+[no]recurse:进行递归解析
测试反向解析:
dig -x IP = dig –t ptr reverseip.in-addr.arpa
模拟区域传送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr magedu.com @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig -t NS . @a.root-servers.net
28
测试命令
v host [-t type] name [SERVER]
host –t NS magedu.com 172.16.0.1
host –t soa magedu.com
host –t mx magedu.com
host –t axfr magedu.com
host 1.2.3.4
v nslookup命令: nslookup [-option] [name | -] [server]