目录
前言
在互联网的世界中,我们每天都依赖域名来访问各种网站和服务。想象一下,如果每次你想访问一个网站,都需要记住一串复杂的数字IP地址,那将会多么不方便。DNS(域名系统)就像互联网的电话簿,它将易记的域名转换为计算机能理解的IP地址,让我们可以通过简单的文字输入轻松访问所需的网络资源。本文将深入探讨DNS的作用及其对我们日常互联网体验的重要性。
一、DNS服务
1、DNS的概念
DNS,全称域名系统(Domain Name System),是互联网的重要基础服务之一。它的主要功能是将人类易记的域名(如www.example.com)转换成计算机可以识别的IP地址(如192.0.2.1)。这一转换过程被称为域名解析。简单来说,DNS就像互联网的电话簿,帮助我们找到并访问网络上的各种网站和服务。
2、DNS使用的协议以及端口
①、协议
- UDP(用户数据报协议):默认情况下,DNS查询和响应使用UDP协议。UDP协议传输速度快,适合短小的数据传输,因此被广泛用于DNS查询。
- TCP(传输控制协议):当DNS响应的数据包超过512字节时,或者进行区域传输(如主DNS服务器与辅助DNS服务器之间的数据同步)时,DNS会使用TCP协议进行传输。TCP协议提供可靠的连接,确保数据传输的完整性。
②、端口
- 端口53:DNS服务使用的标准端口号是53,无论是UDP协议还是TCP协议,DNS查询和响应都通过这个端口进行通信。
3、DNS的结构
- 主机名:主机名是指特定计算机或设备在网络中的名称,用于唯一标识这台设备。主机名通常放在域名的最左边,是域名的一部分。
- 二级域:二级域通常位于顶级域(TLD)之前,是用户注册的主要部分。它是用户可自定义和注册的部分,通常代表公司名称、品牌或组织。例如,在域名"www.baidu.com."中,"baidu"就是二级域名
- 一级域:一级域或顶级域是域名系统中最高级别的域,位于域名的最右边。例如,在域名
www.baidu.com.
中,com
就是顶级域。顶级域包括通用顶级域(如.com
,.org
,.net
)和国家代码顶级域(如.cn
,.us
)。 - 根域:根域是域名系统的最顶层,表示整个DNS系统的根。根域通常用一个点(
.
)表示,但在实际使用中,这个点通常省略不写。例如,www.example.com.
的最后一个点表示根域,不过通常在浏览器中不会显示这个点。
4、DNS解析方式
4.1、正向解析
根据域名查找对应的IP地址
4.2、反向解析
根据IP地址查找对应的域名
5、DNS服务的查询方式
5.1、递归查询
递归查询是一种 DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果 DNS 服务器本地没有存储查询 DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
5.2,迭代查询
DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止
6、DNS服务器的类型
6.1、缓存域名服务器
①、也称为DNS高速缓存服务器
②、通过向其他域名服务器查询获得域名 ->IP地址记录
③、将域名查询结果缓存到本地,提高重复查询时的速度
6.2、主域名服务器
①、特定DNS区域的权威服务器,具有唯一性
②、负责维护该区域内所有域名->IP地址的映射记录
③、需要自行建立所负责区域的地址数据文件
6.3、从域名服务器
①、也称为辅助域名服务器,是对主域名服务器的热备份
②、其维护的域名->IP地址记录来源于主域名服务器
③、需要从主域名服务器自动同步区域地址数据库
二、DNS服务配置与安装
1、BIND
1.1、BIND介绍
BIND(Berkeley Internet Name Daemon)
- BIND是应用最广泛的DNS服务程序
- 官方站点:https://www.isc.org/
相关软件包:
- bind-9.9.4-37.el7.x86 64.rpme
- bind-utils-9:9.4-37.el7.x86 64.rpme
- bind-libs-9.9.4-37.el7.x86 64.rpme
- bind-chroot-9.9.4-37.el7.x86 64.rpm
1.2、BIND服务器端程序
- 主要执行程序:/usr/sbin/named
- 默认监听端口:53
- 主配置文件:*/etc/named.conf
- 保存DNS解析记录的数据文件位于:*/var/named/
2、安装软件
mount /dev/sr0 /mnt/ #挂载
cd /etc/yum.repos.d/ #切换到yum.repos.d目录下
mkdir back #创建back目录
mv *.repo back/ #把所有.repo文件都移到back目录下
vim local.repo #vim编辑文件
[local]
name=local
baseurl=file:///mnt #编辑文件内容
enabled=1
gpgcheck=0
yum clean all && yum makecache #清楚yum并且重新加载
yum install -y bind* #安装bind软件
3、配置正向区域数据文件
rpm -q bind #查看 bind 的软件呢是否安装
vim /etc/named.conf #进入文件进行修改
- 进入vim编辑页面
cd /var/named/ #切换到named目录下
cp named.localhost benet.com.zone #复制源文件到benet
vim benet.com.zone #进入这个文件进行修改
- 进入vim编辑页面并进行添加
systemctl start named #开启
systemctl status named #查看状态是否开启
- 验证:
4、配置反向解析的配置
①、安装bind软件包
②、配置 vim /etc/named.conf 文件
③、进入 vim /etc/named.rfc1912.zones 修改区域配置文件
cp benet.com.zone benet.com.zone.local #复制
vim benet.com.zone.local #进入vim编辑
- vim编辑内容:
systemctl restart named #重启
- 验证: