Linux网络服务—DNS


一、DNS简介

1.1 DNS名词介绍

  域名管理系统DNS(Domain Name System)是域名解析服务器的意思,应用层协议,是互联网的一项服务。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。 种由文字组成的名称,显而易见要更容易记忆。
  实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)。

1.2 DNS系统的作用

正向解析:根据域名查找对应的IP地址

反向解析:根据IP地址查找对应的域名

DNS系统的分布式数据结构:

在这里插入图片描述
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1

IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从

1.3 DNS查询类型及原理

一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区):

一级域名
.com 工商企业
.net 网络供应商
.edu 教育机构
.cn 中国国家域名
.org 团体组织
.gov 政府部门

二级DNS服务器:专门负责二级域名的解析:

二级域名
二级域名
.net.cn
.edu.cn
.com.cn

子域名DNS服务器:专门负责子域名的解析也称为三级域名:

三级域名
ina.com.cn
.pku.edu.cn

主机站点:

主机名
tts9
tts6
mail
www

1.3DNS系统类型

**缓存域名服务器:**只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,

但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定

其他 DNS 服务器作为解析来源。

**主域名服务器:**管理和维护所负责解析的域内解析库的服务器

从域名服务器:

从主服务器或从服务器"复制"(区域传输)解析库副本

序列号:解析库版本号,主服务器解析库变化时,其序列递增

刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔

重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔

过期时长:从服务器联系不到主服务器时,多久后停止服务

通知机制:主服务器解析库发生变化时,会主动通知从服务器

1.4本地名称解析配置文件

	Linux: /etc/hosts

	windows : c/windows/system32/drivers/etc/hosts

在这里插入图片描述

	[root@localhost ~]#vim /etc/nsswitch.conf
	#修改dns的优先级
	hosts:      files dns myhostname
	#修改 files和 dns的先后  优先级就不同。如果files在前面,那么file优先级就比较高

在这里插入图片描述
JvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAVGFuc2lycnI=,size_20,color_FFFFFF,t_70,g_se,x_16)
在这里插入图片描述

在这里插入图片描述

1.5 DNS查询方式

递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)

迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对 方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起 进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询。(需要自己动手)

1.6 DNS正向解析查询原理过程

①先查本机的缓存记录

②查询hosts文件

③查询dns域名服务器,交给dns域名服务器处理以上过程成为递归查询:我要一个答案你直接会给我结果

④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步

⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器

⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器

⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器

⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端

二、正向解析资源记录及配置实例

1.各种资源记录

区域解析库:由众多资源记录RR(Resource Record)组成

记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解

析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。

A(internet Address):作用,域名解析成IP地址

AAAA(FQDN): --> IPV6

PTR(PoinTeR):反向解析,ip地址解析成域名

NS(Name Server):专用于标明当前区域的DNS服务器,服务器类型为域名服务器

CNAME : Canonical Name,别名记录

**MX(Mail eXchanger)**邮件交换器

TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮

件)记录,https验证等

SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。

1.1.1 SOA记录

name: 当前区域的名字,例如"kgc.com."

value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字

  2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换

例如:admin.kgc.com

  1. 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

$TTL 1D
@       IN SOA  master.ttt.com. admin.ttt.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

1.1.2 NS记录

name: 当前区域的名字

value: 当前区域的某DNS服务器的名字,例如: ns.kgc.org.

注意:

  1. 相邻的两个资源记录的name相同时,后续的可省略

  2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

  3. 一个区域可以有多个NS记录

范例

master IN NS ttt.com.

master IN NS ttt.com.

1.1.3 MX记录

name: 当前区域的名字

value: 当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的

优先级;数字越小优先级越高

  1. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

范例:

mail  IN MX 10 mx1.ttt.org.
      IN MX 20 mx2.ttt.org.
mx1 A   192.168.91.10
mx2 A   192.168.91.10

1.1.4 A记录

name: 某主机的域名解析,例如:www.ttt.com

value:主机名对应主机的IP地址

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

范例:

www.ttt.com. IN A 1.1.1.1
www.ttt.com. IN A 2.2.2.2
www.ttt.com. IN   A 3.3.3.3
www.ttt.com. IN   A 4.4.4.4
* IN A 5.5.5.5
#代表泛域名
@   IN   A 6.6.6.6
#代表不需要名字

1.1.5PTR记录

name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:inaddr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN

例如:

3.2.1.in-addr.arpa. IN PTR www.kgc.org.
#如1.2.3为网络地址,可简写成:
4 IN PTR www.ttt.com

1.1.6 CNAME别名记录

name: 别名的FQDN
value: 真正名字的FQDN

ftp.ttt.com.  IN CNAME www.ttt.com
#固定格式
name    [TTL]       IN              rr_type         value
        缓存时间     internet记录     区域解析库        值


$TTL 1D
@       IN SOA  master.ttt.com. admin.ttt.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.ttt.com.
master  A       192.168.187.150
www     A       192.168.187.151
db      A       192.168.187.152
IN      MX 10   mail.ttt.com.
mail    A       192.168.187.10
ftp     CNAME   www



$TTL 1D                                            #有效解析记录的生存周期
@   in SOA benet.com. admin.benet.com. (   #“@"符号表示当前的DNS区域名
                     0   ; serial              #更新序列号,可以是10位以内的整数
                    1D   ; refresh             #刷新时间,重新下载地址数据的间隔
                    1H   ; retry               #重试延时,下载失败后的重试间隔
                    1W   ; expire              #失效时间,超过该时间仍无法下载则放弃#
					3H)  ; minimum             #无效解析记录的生存周期,
        NS      benet.com.                     #记录当前区域的DNS服务器的名称
        A     192.168.80.10                   #记录主机IP地址
IN   MX 10    mail.benet.com.            #MX为邮件交换记录,数字越大优先级越低
www  IN A     192.168.80.10              #记录正向解析www.benet.com对应的IP
mail IN A     192.168.80.11              #MX为邮件交换记录,数字越大优先级低 
ftp  IN CNAME  www                       #CNAME使用别名,ftp 是www的别名
*    IN A   192.168.80.100               #泛域名解析,“*"代表任意主机名

注意:

  1. TTL可从全局继承

  2. 使用 “@” 符号可用于引用当前区域的域名

  3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应

  4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通

过多个不同的名字可以找到同一个主机

1.2 正向解析安装配置方法

	[root@localhost ~]#yum  install bind bind-utils -y
	#主软件 和 配置包管理软件

在这里插入图片描述

	[root@localhost ~]#systemctl stop firewalld.service
	[root@localhost ~]#setenforce 0
	[root@localhost ~]#systemctl start named
	#开启服务

在这里插入图片描述

	[root@localhost ~]#netstat -ntap |grep named

在这里插入图片描述

	[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 

	DNS1=127.0.0.1

在这里插入图片描述

	[root@localhost ~]#systemctl restart network
	[root@localhost ~]#ping www.baidu.com
	[root@localhost ~]#rpm -qc bind
	#配置文件包
	/etc/logrotate.d/named
	/etc/named.conf
	/etc/named.iscdlv.key
	/etc/named.rfc1912.zones
	/etc/named.root.key
	/etc/rndc.conf
	/etc/rndc.key
	/etc/sysconfig/named
	/var/named/named.ca
	/var/named/named.empty
	/var/named/named.localhost
	/var/named/named.loopback

在这里插入图片描述

	[root@localhost ~]#vim /etc/named.conf 
	#可以修改配置,注释,或者删除这两行
	listen-on port 53 { any; };
	allow-query     { any; };

在这里插入图片描述

	[root@localhost ~]#rndc reload
	#重新加载DNS服务
	server reload successful

在这里插入图片描述

	[root@localhost named]#vim /etc/named.rfc1912.zones 
	#编写域名
	zone "ttt.com" {
	   type master;
	  file "ttt.com.zone";
	};

在这里插入图片描述

	[root@localhost named]#cd /var/named/
	#切换目录
	[root@localhost named]#ls
	data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
	[root@localhost named]#cp named.localhost ./ttt.com.zone -p
	#保留权限复制
	[root@localhost named]#ls
	data  dynamic  kgc.com.zone  named.ca  named.empty  named.localhost  named.loopback  slaves
	[root@localhost named]#vim ttt.com.zone
	#编辑数据库文件,解析记录对应关系
	$TTL 1D
	@       IN SOA  master. admin.ttt.com. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
    NS      master
	master  A       192.168.187.150
	www     A       192.168.91.151

在这里插入图片描述

在这里插入图片描述
wq 保存退出

host www.ttt.com 验证一下

	[root@kgc ~]# cd /var/www/html/
	[root@kgc html]# ls
	[root@kgc html]# vim index.html
	www.ttt.com
	#检查启动文件格式
	named-checkconf 
	named-checkzone kgc.com /var/named/kgc.com.zone

	要开启httpd服务
	systemctl start httpd
	没有httpd就要下载
	yum -y install httpd

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.反向解析

	[root@localhost named]#vim /etc/named.rfc1912.zones 
	#先修改区域配置文件
	zone "91.168.192.in-addr.arpa" IN {
    type master;
    file "ky15.com.zone";
	};

在这里插入图片描述

	[root@localhost named]#cp -p named.localhost ttt.com.zone
	#复制正向解析文件
	[root@localhost named]#vim ky15.com.zone  
	#编辑文件
	TTL 1D
	@       IN SOA  master admin.ttt.com. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
    NS              master
	master   A      192.168.187.150
	100 IN  PTR      www.ttt.com.
	88   IN  PTR      ftp.ttt.com.

在这里插入图片描述

3.主从复制

实验环境:

主服务器地址:192.168.91.100

从服务器地址:192.168.91.103

3.1 主服务器的配置

3.1.1 关闭主服务器的防火墙和selinux

	systemctl stop firewalld.service
	setenforce 0

在这里插入图片描述

3.1.2 安装bind bind-utils.x86_64

	yum -y install bind bind-utils.x86_64

在这里插入图片描述

3.1.3 修改配置文件

	vim /etc/named.conf

在这里插入图片描述

在这里插入图片描述

	vim /etc/named.rfc1912.zones

在这里插入图片描述
在这里插入图片描述

	[root@localhost ~]# cd /var/named/
	[root@localhost named]# ls
	data     named.ca     named.localhost  slaves  dynamic  named.empty  named.loopback
	[root@localhost named]# cp -p named.localhost ttt.com.zone
	[root@localhost named]# vim ttt.com.zone

在这里插入图片描述
在这里插入图片描述

3.1.4 启动服务

	systemctl start named    启动服务
	
	注
	如果发生错误就
	systemctl status named  #查看一下错在哪,修改配置文件

在这里插入图片描述
这个时候主就搭好了,下面来搭从服务器

3.2 从服务器的配置

3.2.1 关闭主服务器的防火墙和selinux

	systemctl stop firewalld.service
	setenforce 0

在这里插入图片描述

3.2.2 安装bind bind-utils.x86_64

	yum -y install bind bind-utils.x86_64

在这里插入图片描述

3.2.3 修改配置文件

	vim /ect/named.conf

在这里插入图片描述

	 vim /etc/named.rfc1912.zones 

在这里插入图片描述

3.2.4 启动服务

	systemctl start named

	注
	如果发生错误就
	systemctl status named  #查看一下错在哪,修改配置文件

在这里插入图片描述

3.2.5 验证操作

	ls /var/named/slaves
	ttt.com.zone

在这里插入图片描述

	dig www.ttt.com @192.168.187.160
	解析命令      域名       @你的dns服务器地址

在这里插入图片描述

4.分离解析

实验环境:
将linux服务器配置两块网卡,都为仅主机模式
ens33:192.168.100.1
ens37:12.0.0.1
win7作为外网:12.0.0.12 255.0.0.0
win10作为内网:192.168.100.100

4.1 关闭主服务器的防火墙和selinux

	systemctl stop firewalld.service
	setenforce 0

![在这里插入图片描述](https://img-blog.csdnimg.cn/38f446594cda4fd18

4.2 安装bind bind-utils.x86_64

	yum -y install bind bind-utils.x86_64 

在这里插入图片描述

4.3 网卡设置

给linux服务器添加一块网卡,两块网卡都设置为仅主机

在这里插入图片描述

	cd /etc/sysconfig/network-scripts
	vim ifcfg-ens33   #先修改ens33的网卡

在这里插入图片描述

	先ifconfig查看一下自己第二块网卡的名字我的是ens37

在这里插入图片描述

	cp ifcfg-ens33 ifcfg-ens37
	vim ifcfg-ens37

在这里插入图片描述
在这里插入图片描述

	systemctl restart network  #重启网卡

在这里插入图片描述

4.4 两台windows设置

一台win7 和 一台win10
都设置为仅主机模式

win7作为外网 ipv4手动改为:12.0.0.12 255.0.0.0

在这里插入图片描述

win10作为内网:192.168.100.100

在这里插入图片描述

4.5 更改配置文件

	vim /etc/named.conf

在这里插入图片描述

	vim /etc/named.rfc1912.zone

在这里插入图片描述

	cd /var/named
	cp -p named.localhost ttt.com.lan
	 vim ttt.com.lan

在这里插入图片描述

	cp -p ttt.com.lan ttt.com.wan

在这里插入图片描述

vim ttt.com.wan

在这里插入图片描述

	systemctl start named

	注
	如果发生错误就
	systemctl status named  #查看一下错在哪,修改配置文件

在这里插入图片描述

4.6 验证操作

nslookup www.ttt.com

在这里插入图片描述

Guess you like

Origin blog.csdn.net/a568911/article/details/120624172