DNS简介
- DNS--域名系统(Domain Name System)
- 用于查询域名对应的IP地址。
- 域名与目录树类似形成一个树状结构, 最右侧为顶级域, 向左域名级别降低。
- 所有域名都属于根域。根域由13组根域名服务器管理。
A.ROOT-SERVERS.NET - M.ROOT-SERVERS.NET
- 根域的下一级为顶级域 TLD (top level domain)
- 通用顶级域名:.com,.net,.gov
- 地区顶级域名:.cn,.jp
- 次级域名:cnblogs,baidu,google
- 最低级的为主机名:www,mail
DNS解析过程
- 查询本地hosts文件, unix系操作系统一般在/etc/hosts。
- 若hosts文件不存在相关记录, 则检查本地DNS缓存。
- 若本地DNS缓存不存在相关记录则查询首选名称服务器。
DNS功能分类
- 主DNS服务器:存储着原始资料的DNS服务器
- 从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器(辅助DNS服务器)
- 缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也就递归服务器。
- 转发器:发现非本机负责的查询请求时,不在向根域发起请求。而是直接转发给指定的一台或多台服务器。
DNS记录类型
- DNS是一个分布式的数据库, 主要是保存域名和IP之间的关系。
- 名称服务器使用区域文件保存自己的记录, 区域文件中除了DNS记录外还定义了一些环境变量。
- $ORIGIN:表示本NS管理的域, 如$ORIGIN example.com。
- $TTL:表示解析记录在缓存中的默认过期时间。
A记录和AAAA记录
A记录是IPv4主机记录;AAAA记录是IPv6主机记录
example.com. IN A 192.0.2.1 IN AAAA 2001:db8:10::1
- 表示主机example.com对应的IPv4地址为192.0.2.1, IPv6地址为2001:db8:10::1.
- 第二个字段IN表示Internet
- 最后加.表示采用绝对路径, 区域文件也可以用相对路径来配置
SOA记录
授权开始:SOA(Start of Authority)记录是区域文件的第一条记录, 用于记录为本服务器授权的上级名称服务器。
example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 ; serial number 1d ; refresh interval 2h ; retry interval 4w ; expiry period 1h ; negative TTL )
- 上述记录表示域example.com的主名称服务器为ns.example.com.
- username.example.com.表示管理员邮箱为username@example.com, 注意@被替换为.
- serial number:本服务器记录的版本号
- 每次修改版本号就会加1
- 通过比较本服务器版本号和上级服务器版本号已进行同步。
- refresh interval:向SOA服务器请求更新记录的间隔
- retry interval:向SOA服务器请求更新记录失败时的重试周期
- expiry period:SOA服务器若在此时间内不响应, 则不再将其作为SOA服务器
- negative ttl:当查询结果为无此记录时, 缓存该结果的时间
NS记录
用于表示某个域的名称服务器
example.com. IN NS ns example.com. IN NS ns2.example.com.
- 上述两条记录表示example.com域的名称服务器为ns.example.com, 备用名称服务器为ns2.example.com。
- 每个区域文件中至少定义两个名称服务器,以便在一个服务器出现问题时还能正确运行。
- 在自顶向下查询过程中, 父域的名称服务器根据自己的ns记录确定子域的名称服务器。
MX记录
MX记录用于表示某个域的邮件服务器
example.com. IN MX 10 mail.example.com.
- 上述记录表示mail.example.com是example.com域的邮件服务器。
- 也可以使用@表示根域, 使用相对路径表示邮件服务器。
@ IN MX 20 mail2.example.com. @ IN MX 50 mail3
- 记录中第4个字段的数字表示优先级, 数字越小优先级越高。
CNAME记录
CNAME记录用于记录域名别名:
www IN CNAME example.com. wwwtest IN CNAME www
- 上述记录表示www.example.com是example.com的一个别名。
- wwwtest.example.com又是www.example.com的一个别名。
DNS相关命令
host
常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
host 选项 参数 选项 -a:显示详细的DNS信息; -c<类型>:指定查询类型,默认值为“IN“; -C:查询指定主机的完整的SOA记录; -r:在查询域名时,不使用递归的查询方式; -t<类型>:指定查询的域名信息类型; -v:显示指令执行的详细信息; -w:如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答; -W<时间>:指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令; -4:使用IPv4; -6:使用IPv6.
实例
host www.baidu.com host -a www.baidu.com
nslookup
常用域名查询工具,就是查DNS信息用的命令。
- nslookup有两种工作模式,即“交互模式”和“非交互模式”。
- 在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。
- 在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
- 进入交互模式,直接输入命令,不加任何参数:(此时nslookup会连接到默认的域名服务器,即/etc/resolv.conf的第一个dns地址。)
nslookup
- 进入非交互模式,输入命令:
nslookup -nameserver/ip
- 选项:-sil:不显示任何警告信息。
dig
常用的域名查询工具,可以用来测试域名系统工作是否正常。
dig 选项 参数 选项 @<服务器地址>:指定进行域名解析的域名服务器; -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求; -f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息; -P:指定域名服务器所使用端口号; -t<类型>:指定要查询的DNS数据类型; -x<IP地址>:执行逆向域名查询; -4:使用IPv4; -6:使用IPv6; -h:显示指令帮助信息。 参数 主机:指定要查询域名主机; 查询类型:指定DNS查询的类型; 查询类:指定查询DNS的class; 查询选项:指定查询选项。
实例
dig www.baidu.com