DNS
域名解析提供,一个分布式数据系统,作用是将域名解析成IP地址;它能让用户使用名字来代替IP地址进行记忆,来访问Internet上的服务主机。
DNS是基于c/s模型设计的。
DNS系统组成
- 域名空间:表示一组数据并提供它们的有关信息的树结构的详细说明
- 域名服务器:保持和维护域名空间中的数据
- Stub解析器:简单的程序,它从服务器中获取信息来响应对域名空间中主机的查询,用于DNS客户端
DNS分层结构
www.baidu.com.
- 根域名:最后的.
- 顶级域名:.com
- 子域名:baidu.com
www.baidu.com—>主机名
DNS服务类型
权威性服务器
- 主域名服务器
- 辅助域名服务器:作为主域名服务器的冗余服务
- 主域名服务器和辅助域名服务器之间的数据同步使用的是TCP协议;其他情况下一般都是使用UDP协议。
- 残根域名服务器
- 秘密域名服务器
非权威服务器
-
高速缓存服务器
-
转发服务器
-
说明:
1. 所有的服务器均设置了缓存服务器来提供域名解析(提高解析效率)
2. 一些域的主域名服务器可以是另一些域名服务器
3. 一个域只能创建一个主机域名服务器,另外至少去创建两个辅助域名服务器(冗余和负载)
4. 转发服务器一般用于不希望用户直接访问域名服务器的情况下
DNS区域
-
方便根据实际情况来分散域名管理工作的负载,将DNS域名空间划分为多个区域进行管理。
- 区域是DNS服务器管理的范围
- DNS服务器以区域为单位来管理域名空间的
-
一台DNS服务器可以管理一个或多个区域,而一个区域也可以由多台DNS服务进行管理。
- 将DNS域名空间划分为几个zone,它存储着有关一个或多个DNS域的名称信息
- 在DNS服务器中必须先建立区域,再在区域中建立子域,然后去添加主机信息
域的委托管理:
管理:
- 管理是分布式,DNS将子域授权给其他组织进行管理
- 优点:
1. 工作负载减轻
2. 提高域名服务器的响应速率
3. 提高网络带宽的利用率
DNS记录类型
-
域名和IP地址之间的对应关系,称之为“记录”;根据使用场景可以将记录分为不同类型。
-
常见的记录类型:
- A:记录地址;返回域名所对应的IPv4地址
- NS:域名服务器记录;返回保存下一级域名信息的服务器地址,只记录是会有域名关系,不能设置为IP地址
- MX: 邮箱记录;返回接收电子邮箱的服务器地址
- CNAME:规范名称记录;返回另一个域名,即当前查询的域名是另一个域名的跳转
- PTR:逆查域名;只用于IP地址查询域名
扩展:
TXT: 主要用来SPF(发垃圾邮箱)
AAAA:ipv6和域名的对应关系
SRV:记录哪台计算机提供哪个服务;格式:…
显性URL: 从一个地址301重定向到另一个地址时候
隐性URL:类似显性URL,区别在于隐性URL不会修改地址中的域名
DNS查询类型
- 本地解析:通过以前查询获得到的缓存信息就地应答
- 递归查询:DNS服务代理请求客户端联系其他DNS服务器,以完全解析,返回给客户端
- 迭代查询:客户机自己不断请求DNS服务来解析名称,典型的DNS服务器之间的交互
DNS解析过程
1. 浏览器缓存
2. 系统缓存
3. 路由器缓存 -----> 客户端的使用
4. ISP DNS缓存
5. 根域名服务器
6. 顶级域名服务器
7. 主机名服务器
8. 保存结果(缓存)
- stub解析器:
[root@test network-scripts]# cat /etc/nsswitch.conf | grep hosts
#hosts: db files nisplus nis dns
hosts: files dns myhostname # 决定查询名称服务器的顺序
-
客户端解析工具: dig host nslookup
-
读取的配置文件:
控制文件: /etc/host.conf /etc/hosts
配置文件: /etc/resolv.conf
/etc/host.conf配置文件:
multi on
Order:指定使用不同的名称解析机制的顺序
hosts:/etc/hosts文件
bind:使用DNS服务器
nis:使用NIS服务
Alert:以off和on为参数。若为on,则任何试图骗取IP地址的行为都通过syslog工具进行记录
Nospoof :若在反向解析找出与指定的地址匹配的主机名,则对返回的地址进行解析以确认它确实与您的查询地址相匹配。
为了防止“骗取”IP地址,通过指定nospoof on来允许此功能
multi on :表示是否运行/etc/hosts文件允许主机指定多个地址 ,on表示运行
rccorder :如果被设置为on,那么所有查询将被重新排序。
/etc/resolv.conf配置文件:
search localdomain # 允许查询本地域名空间
nameserver 172.16.0.2 # 指定域名服务器
domain: 定义默认的域名(主机的本地域名)
options:
rotate: 打开客户端,进行轮询查询,多个nameserver的时候
nochecnames: 当需要使用到“_”的域名时,需要设置该选项