查询配置
查询域名对应的ip地址常用两种方式:文件和dns服务器
- 文件
在/etc/hosts中可配置ip和域名对,该文件中默认有127.0.0.1对应localhost。 - DNS服务器
DNS服务器有多级查询,这个在后面会介绍。
除了上面两种方式外,还有不常用的方式,实际上可以控制ip地址的查询顺序,在/etx/nsswitch.conf文件中,默认是如下配置;
hosts: files mdns4_minimal [NOTFOUND=return] dns
DNS查询
有两种常见的命令查看DNS查询过程:dig和host。使用这两个命令时会自动跳过hosts文件。
host www.baidu.com
dig www.baidu.com
现在,将域名进行分解,以www.baidu.com
为例:
- com:类别
- baidu:域名
- www:主机
实际上后面还有一个'.'+根DNS服务器,默认不写,查询时从后往前查询。
使用'+trace'参数显示完整查询路径。
查询的方式有两种:迭代查询和递归查询。
- 迭代查询
在迭代查询中,首先发起请求的主机会请求本地DNS服务器,当无法解析域名是,本地DNS服务器请求根服务器。当根服务器也无法解析是,根服务器会把其它可以解析此域名的DNS服务器的ip地址返回给本地DNS服务器。本地DNS服务器再请求刚才返回的服务器,如果还是无法解析,则请求的服务器也会返回其它的服务器ip地址。当有服务器将解析的结果返回给本地DNS服务器,本地DNS服务器再将结果返回给发起请求的主机。
- 递归查询
与迭代查询不同的地方在于递归查询在DNS服务器无法解析域名时不会返回其它服务器的ip地址,而是自己向其它服务器发起请求。直到有主机可以解析该域名,然后逐级返回。
资源记录
在DNS服务器上,DNS信息通过一个叫作资源记录的格式进行保存。
常用的属性有:
- NAME
- CLASS
- TYPE
- DATA
NAME | CLASS | TYPE | DATA |
---|---|---|---|
www | IN | A | 192.168.1.1 |
IN | A | 192.168.1.2 | |
serverl | IN | CNAME | www |
serverl | IN | MX | mail.qq.com |
其中,CLASS主要是IN,表示Internet。
资源记录类型TYPE有多种类型,如下:
资源记录类型 | 表示内容 |
---|---|
A | IPv4地址 |
AAAA | IPv6地址 |
MX | 邮件记录 |
CNAME | 别名 |
PTR | 指针(逆向解析) |
SRV | 服务资源 |
服务器类型
- 主服务器
一个域的主服务器保存该域的zone配置文件,该域的所有的配置、更改都在该服务器上进行。 - 从服务器
从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,所有的修改与主服务器同步。 - 缓存服务器
DNS从服务器不存在任何zone文件,仅仅依靠缓存为客户端提供服务,通常用于负载均衡加速使用。
zone文件
一个域通过一个zone文件保存该域的相关信息。
常用如下几个命令获取相关信息:
// 查询对应的邮件服务器
dig -t MX mail.qq.com
// 逆向解析
dig -x mail.qq.com
// 获取soa信息
dig -t soa mail.qq.com