目录
一、DNS基本概念
1、DNS简介
DNS(Domain Name System)是域名解析服务器的意思,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS。每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
2、DNS的作用
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查看对应的域名
3、DNS的域名结构
1)根域
位于树状结构最顶层,用"."表示
2)顶级域
一般代表一种类型的组织机构或国家地区
.com | 工商企业 |
.net | 网络供应商 |
.edu | 教育机构 |
.cn | 中国国家域名 |
.org | 团体组织 |
.gov | 政府部门 |
3)二级域
用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
例如:.net.cn
.edu.cn
.com.cn
4)子域/三级域
二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
5)主机
主机位于域名空间最下层,就是一台具体的计算机
主机名:www
域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
4、DNS服务器类型
1)主域名服务器
负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
2)从域名服务器
当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
3)缓存域名服务器
只提供域名解析结果的缓存功能 目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
4)转发域名服务器
负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
5、DNS查询过程
客户端发出请求后,首先找到根域服务器,根域服务器会委派给顶级域服务器,顶级域服务器再委派给二级域服务器,二级域服务器再委派给子域服务器,子域服务器根据主机名的映射解析,解析出对应的IP地址,返还给客户端,客户端再使用IP地址进行访问
1)递归查询
“递归解析”是最常见也是默认的一种解析方式。在这种解析方式中,如果客户端配置的本地域名服务器(Local DNS服务器)不能解析的话,则后面的查询过程全部由本地域名服务器代替DNS客户端进行查询,直到本地域名服务器从权威域名服务器得到了正确的解析结果,然后由本地域名服务器告诉DNS客户端查询的结果。
在整个递归查询过程中,除一开始客户端向本地域名服务器发起查询请求外,其余各个环节均是以本地域名服务器为中心进行迭代查询,DNS客户端一直处于等待状态,直到本地域名服务器发回最终查询结果。相当于,在整个查询环节中本地域名服务器承担了中介代理的角色。
1.客户端向本机配置的本地域名服务器发起DNS域名查询请求
2.本地域名服务器收到请求后,会先查询本地缓存,如果有记录值会直接返回给客户端;如果没有记录,则本地域名服务器会向根域名服务器发起请求
3.根域名服务器收到请求后,会根据所要查询域名中的后缀将所对应的顶级域名服务器(如.com、.cn等)返回给本地域名服务器
4.本地域名服务器根据返回结果向所对应的顶级域名服务器发起查询请求
5.对应的顶级域名服务器在收到DNS查询请求后,也是先查询自己的缓存,如果有所请求域名的解析记录,则会直接将记录返回给本地域名服务器,然后本地域名服务器再将记录返回给客户端,完成整个DNS解析过程
6.如果顶级域名服务器没有记录值,就会将二级域名对应的服务器地址返回给本地域名服务器,本地域名服务器再次对二级域名服务器发起请求,如此类推,直到最终对应区域的权威域名服务器返回结果给本地域名服务器。然后本地域名服务器将记录值返回给DNS客户端,同时缓存本地查询记录,以便在TTL值内用户再次查询时直接将记录返回给客户端
2)迭代查询
DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。迭代查询则是指所有查询工作全部由客户端自己进行
首先客户端向本地域名服务器发起请求,如果本地域名服务器没有缓存记录,客户端便会依次对根域名服务器、顶级域名服务器和二级域名服务器等发起迭代查询,直到获得最终的查询结果
在以下条件之一满足时,就会采用迭代解析方式:
1.在查询本地域名服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报文中的RD字段没有设置为1
2.客户端在DNS请求报文中申请使用递归查询,但所配置的本地域名服务器禁止使用递归查询,即在应答DNS报文头部的RA字段设置为0
二、构建DNS域名解析服务器过程
1、正向解析
安装bind软件包
yum install bind bind-utils -y
查询配置文件
rpm -qc bind
修改主配置文件
vim /etc/named.conf
修改区域配置文件
配置正向数据文件
将数据配置文件复制到之前所创文件中
修改复制文件
vim jhy.com.zone
修改后
修改域名地址
vim /etc/resolv.conf
启动服务关闭防火墙
DNS域名解析验证
2、反向解析
修改/etc/named.rfc1912.zones配置文件,添加反向区域配置
vim /etc/named.rfc1912.zones
复制配置文件到指定区域,然后编辑指定区域数据配置文件
[root@localhost named]# cp -p jhy.com.zone jdp.com.zone
[root@localhost named]# vim jdp.com.zone
关闭防火墙,Linux安全机制,打开DNS域名解析服务
修改DNS地址
重启服务后解析测试
3、配置主从服务器
实验环境:接上述实验继续进行配置,需再开启一台虚拟机当作服务器
1)主服务器配置
延用上述实验那台
添加从服务器IP地址
vim /etc/resolv.conf
2)从服务器配置
新打开虚拟机,安装bind
编辑主配置文件
编辑区域配置文件
查看从服务器中是否备份主服务器中区域数据配置文件
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start named
[root@localhost ~]# cd /var/named
[root@localhost named]# ls
重启DNS域名解析服务,进行DNS测试