DNS服务相关知识
DNS服务概述
DNS是一个分布式名称管理与映射系统,它的主要工作就是IP地址与域名之间的相互翻译及其对域名地址映射数据库的管理。DNS采用树状结构对域名进行管理。域名的形成往往如下所示:
www.baidu.com |
其中,“com”称为顶级域名,“baidu”称为二级域名,“www”称为三级域名。每级之间可以用符号“.”相隔。从中可以看出域名采用逆序,即越靠后,域名等级越高,越靠前,域名等级越低。
DNS服务器分类
DNS服务器主要分成一下几类:
1、主DNS服务器
主DNS服务器为其所负责的区域提供DNS服务。
2、辅助DNS服务器
辅助DNS服务器分担主DNS服务器查询工作。
3、高速缓存DNS服务器
这种高速缓存DNS服务器使用缓存的DNS信息进行域名转换,因而速度比较快。
辅助DNS服务器和高速缓存DNS服务器可以在一定程度上减轻主DNS服务器的负荷,并且在主DNS服务器出现故障时,可以接替主服务器的工作。
DNS查询模式与域名解析
DNS查询模式主要分成递归查询和迭代查询两种。
1、递归查询
当DNS客户机向服务器发出DNS解析请求时,假设该DNS服务器在缓存或者区域数据库文件中无法解析该请求,那么如果由它向另一个DNS服务器发送该请求,则这种插叙模式被称为递归查询。
2、迭代查询
当DNS客户机向服务器发出DNS解析请求时,假设该DNS服务器在缓存或者区域数据库文件中无法解析该请求,那么如果由客户机向另一个DNS服务器发送该请求,则这种查询模式被称为迭代查询。
两种查询模式的区别主要在于当前DNS服务器无法解析域名时,又睡向另一台服务器发起新的解析请求。如果由当前服务器向另一台服务器发起新的解析请求,那么该查询请求称为递归查询。反之,如果由客户机向领一台服务器发起新的请求,则称为迭代查询。
另外,域名解析过程又分为正向解析过程和反向解析过程。正向解析过程指的是由域名向IP地址的解析过程。反向解析过程指的是由IP地址向域名解析的过程
资源记录
在DNS服务器的域名数据库文件中包含着许多的DNS域资源信息的记录被称为资源记录。资源记录主要包含以下几种类型:
1、SOA资源记录
SOA(Start of AUthority,起始授权)资源记录用于定义整个区域的全局设置,一个区域文件只允许存在一个SOA记录。
2、NS资源记录
NS(Name Server,名称服务器)资源记录用来指定某一个区域的权威DNS服务器,每个区域至少有一个NS记录。
3、A资源记录
A(Address,地址)资源记录用于FQDN(Fully Qualified Domain Name,全称域名)映射为IP地址。
4、PIR资源记录
PTR(Pointer,指针)资源记录用于将IP地址映射为FQDN。
5、CNAME资源记录
CNAME(Canonical Name,别名)资源记录用于为FQDN起别名。
6、MX资源记录
MX(Mail Exchange,邮件交换)资源记录用于为邮件服务器提供DNS解析。
hosts文件
当没有DNS服务器时,hosts文件可以用来处理当前主机的域名解析请求。hosts文件由一系列的域名-IP地址对组成。将常用的域名-IP地址对加入hosts 文件可以加快域名解析的速度。linux系统中,hosts文件位于/etc/ 目录下 ;windows系统中,hosts文件位于 C:\Windows\system32/drivers\etc 目录下。
实验环境:
物理机操作系统:windows 10
VMware版本:VMware Workstation16
镜像版本:CentOS-7-x86_64-DVD-1611
实验目的:
1、了解DNS服务相关知识
2、掌握DNS服务的安装
3、掌握DNS服务的配置
4、了解DNS服务常见故障排除方法
实验基本配置命令: 启动、停止、重启及自启DNS服务
1、查询DNS服务状态
查询DNS服务状态,可以使用以下命令:
[root@Dai ~]# systemctl status named |
上述命令有两种执行结果,分别表示DNS服务是启动还是停止状态
Active: inactive (dead) //未运行
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: inactive (dead) #未运行
Active: active (running) //运行中
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2021-05-11 07:25:10 CST; 5s ago #运行中
2、启动DNS服务
安装完毕后,可以通过以下命令启动DNS服务:
[root@Dai ~]# systemctl start named //启动named守护服务 |
3、停止DNS服务
启动后,可以通过以下命令停止DNS服务:
[root@Dai ~]# systemctl stop named //停止named守护进程 |
4、重启DNS服务
如果需要重启DNS服务,可以使用如下命令:
[root@Dai ~]# systemctl restart named //重启named守护进程 |
5、重新加载DNS服务配置
如果需要重新加载DNS服务配置,可以使用如下命令:
[root@Dai ~]# systemctl reload named |
6、查询DNS版本
如果要查询DHCP是否安装,那么可以用如下命令:
[root@localhost~]#rpm -qa|grep bind rpm 软件包的管理工具 -q 查看 -qa查看所有 |查看类似结果 grep :正则表达式匹配 |
[root@Dai ~]# rpm -qa|grep bind
bind-license-9.11.4-26.P2.el7_9.5.noarch
rpcbind-0.2.0-38.el7.x86_64
bind-libs-9.11.4-26.P2.el7_9.5.x86_64
bind-utils-9.11.4-26.P2.el7_9.5.x86_64
keybinder3-0.3.0-1.el7.x86_64
bind-9.11.4-26.P2.el7_9.5.x86_64
bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64
bind-libs-lite-9.11.4-26.P2.el7_9.5.x86_64
0x00:实验开始
拍摄快照
开始之前建议拍摄快照,这样即使虚拟机被玩坏了或者出现无法逆转的操作,可以还原到原始状态。
1、虚拟机→快照→拍摄快照 2、管理快照 "CTRL+M" 3、点击“拍摄快照"后,建议不要做任何操作,等待虚拟机左下角 “正在保存”完成后,即可 |
0x01 CentOS7 连接网络
1、先通过虚拟机的NAT模式或者桥接模式 ,连接网络安装DHCP服务
虚拟机→设置→网络适配器→NAT模式 |
2、正常来说现在应该可以ping通 外网了。
3、当然,也有很多不正常的情况,出现ping不同的情况。这个时候还原 “虚拟网络编辑器”,也许就O了。
编辑→设置→虚拟网络编辑器→还原默认设置 注:目前了解到windows 10,进入“虚拟网络编辑器”后,需要点击右下角“更改设置”,才能修改网络配置 |
0x02 安装DNS服务
1、yum方法
使用yum安装DNS服务可以使用命令:
[root@locahost~]#yum install bind -y //安装DHCP服务 |
如果成功安装,会有如下提示:
已安装:
bind.x86_64 32:9.11.4-26.P2.el7_9.5
完毕!
2、图形化方法
1、应用程序→ 系统工具→软件 2、在搜索框中 搜索“bind” 3、勾选“The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server”→应用更改 |
0x03 搭建DNS服务器
案例描述
授权DNS服务器管理JQE.com区域,并把该区域的文件命名为JQE.com.zone。DNS服务器是192.168.3.5,Mail服务器是 192.168.3.6,www 服务器是 192.168.3.7.
本例需要2台CentOS7 虚拟机,一台作为服务器,一台作为客户机
实训开始:
1、修改“虚拟网络编辑器中”
将Vmnet1 类型 修改为 自定义模式
编辑→虚拟网络编辑器→“VMnet2”→ □ 将主机虚拟适配器连接到此网络 □使用本地DHCP服务将IP地址分配给虚拟器→ 应用 |
如图所示:
2、修改网络连接
将 网络适配器 自定义 VMnet1
虚拟机→设置→网络适配器→自定义→Vmnet1→确定 |
3、配置DNS服务器网卡
地址(A) 地址:192.168.3.5 网络掩码:255.255.255.0 网关:192.168.3.5 DNS 服务器:192.168.3.5 |
4、修改DNS主配置文件,增加正向解析区域和反向解析区域
[root@Dai ~]# vim /etc/named.conf
listen-on port 53 { any; }; //“127.0.0.1” 改成 “any” allow-query { any; }; //“localhost” 改为 “any” dnssec-enable no; //“yes” 改为 “no” dnssec-validation no; //“yes” 改为 “no” |
尾部添加一下内容 zone "JQE.com" { type master; file "JQE.com.zone"; }; zone "3.168.192.in-addr.arpa" { type master; file "3.168.192.in-addr.arpa.zone"; }; |
具体如下
options {
listen-on port 53 { any; }; //“127.0.0.1” 改成 “any”
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //“localhost” 改为 “any”
recursion yes;
dnssec-enable no; //“yes” 改为 “no”
dnssec-validation no; //“yes” 改为 “no”
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "JQE.com" { //增加正向解析区域“JQE.com”
type master; //类型为 “master”
file "JQE.com.zone"; //区域解析文件为 “/var/named/JQE.com.zone”
};
zone "3.168.192.in-addr.arpa" { //增加反向解析区域 “3.168.192.in-addr.arpa”
type master; //类型为“master”
file "3.168.192.in-addr.arpa.zone"; //区域解析文件为 “/var/named/3.168.192.in-addr.arpa.zone”
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
5、添加正向区域
复制样例文件 并修改 文件名为 “JQE.com.zone”
[root@Dai ~]# cp -p /var/named/named.loopback /var/named/JQE.com.zone |
编写 文件
[root@Dai ~]# vim /var/named/JQE.com.zone |
修改内容如下:
$TTL 1D
@ IN SOA JQE.com.root.JQE.com (
20210511
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.JQE.com.
dns IN A 192.168.3.5
mail IN A 192.168.3.6
www IN A 192.168.3.7
@ IN MX 5 mail.JQE.com.
MX优先级数字越小,优先级越高。同一域名两个MX服务器,低优先级的作为高优先级的备份
6、添加反向区域
复制样例文件 并修改 文件名为 “JQE.com.zone”
[root@Dai ~]# cp -p /var/named/named.empty /var/named/3.168.192.in-addr.arpa.zone |
编写 文件
[root@Dai ~]# vim /var/named/3.168.192.in-addr.arpa.zone |
修改内容如下:
$TTL 3H
@ IN SOA 3.168.192.in-addr.arpa. root.JQE.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.JQE.com.
@ IN MX 5 mail.JQE.com.
5 IN PTR dns.JQE.com.
6 IN PTR mail.JQE.com.
7 IN PTR www.JQE.com.
在区域文件中,@代表区域。因此,邮件地址root.JQE.com不能写成 root@JQE.com。
7、修改相应文件所属组为 named
[root@Dai ~]# chgrp named /etc/named.conf [root@Dai ~]# chgrp named /var/named/JQE.com.zone [root@Dai ~]# chgrp named /var/named/3.168.192.in-addr.arpa.zone |
named 守护进程的默认属组是named,为了让进程能正常读取文件,因此需要修改文件的属组
8、开启DNS服务
[root@Dai ~]# systemctl start named |
9、关闭防火墙
[root@Dai ~]# systemctl stop firewalld.service |
检验配置结果:
步骤一:准备另一台 linux 虚拟机,将网络连接 修改为 “VMnet1”
步骤二:修改IP地址 ,一定要有 DNS服务器在同一个网段
步骤三:测试客户机是否与 DNS服务器 相通
步骤四:测试DNS服务器是否正常工作
nslookup 是一个程序的名字
是查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。
[dai@localhost ~]$ nslookup //域名查询
> server
Default server: 192.168.3.5
Address: 192.168.3.5#53
> 192.168.3.5
Server: 192.168.3.5
Address: 192.168.3.5#53
5.3.168.192.in-addr.arpa name = dns.JQE.com.
> mail.JQE.com
Server: 192.168.3.5
Address: 192.168.3.5#53
Name: mail.JQE.com
Address: 192.168.3.6
以上
由于博主目前还是大二学生,水平有限。文章中难免有疏漏或不当之处,敬请各位大神以及读者不吝赐教