域名系统DNS服务

1.名字解析介绍的DNS

当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的,但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是很难完成的。那么如何解决这一难题呢?我们可以给每个网络设别起一个友好的名称,如www.ybwen.cn,这种由文字组成的名称,显而易见更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称 转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。除此之外还有一个重要 功能,利用名称解析服务可以实现主机和IP的解耦,即:当主机IP变化时,只需要修改名称服务即可, 用户仍可以通过原有的名称进行访问而不受影响

本地名称解析配置文件:host

Linux: /etc/hosts
93.46.8.89   www.google.com.
122.10.117.2 www.ybwen.cn.

DNS:域名系统,应用层协议,是互联网的一项服务

 根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本

一级域名:Top Level Domain: tld 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域 com, edu, mil, gov, net, org, int,arpa

二级域名:ybwen.cn

三级域名:www.ybwen.com

最多可达到127级域名

2.DNS服务工作原理

迭代:根域名服务器不知道结果,但是给了DNS代理解析.com域名服务器的地址,.com域名服务器也不知道你所给出的地址,给你他的下级域地址,最终访问到目标,叫做递归查询。

递归:客户端发送请求给DNS代理解析服务器访问,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定 的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询

3.完整的查询请求经过的流程

Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion 递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名 DNS…

4.DNS服务相关概念和技术

DNS服务器类型

主DNS服务器

从DNS服务器

缓存DNS服务器(转发器)

主DNS服务器

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

从DNS服务器

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

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

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

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

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

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

解析形式

正向:FQDN( Fully Qualified Domain Name) --> IP

反向: IP --> FQDN

负责本地域名的正向和反向解析库

正向区域

反向区域

各种资源记录 在

作为DNS服务器必要的三种记录

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

NS:Name Server,专用于标明当前区域的DNS服务器

A:internet Address,作用,FQDN --> IP

其它记录

AAAA:FQDN --> IPv6

PTR:PoinTeR,IP --> FQDN

CNAME : Canonical Name,别名记录

MX:Mail eXchanger,邮件交换器

资源记录定义

name      [TTL]   IN      rr_type     value
注意:
1. TTL可从全局继承
2. 使用 “@” 符号可用于引用当前区域的名字
3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通
过多个不同的名字可以找到同一个主机

SOA记录

name: 当前区域的名字,例如“magedu.org.”

value: 有多部分组成

注意:

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

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

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

范例

$TTL 86400
    @         IN SOA  ns.magedu.org. nsadmin.magedu.org. ( 2021012011 2H 10M 1W 1D )
代表magedu.org ns为别名 (序列号 刷新时间 重试时间 过期时间 如果输入数据库没有的值会报错,并生成缓存,继续输入错误信息读取缓存)

 NS记录

 name: 当前区域的名字

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

注意:

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

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

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

范例

@             NS  ns
ns             A 10.0.0.6

A记录

name: 某主机的FQDN,例如:www.magedu.org.

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

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

范例

*           A 10.0.0.5   
.magedu.org前面可与输入任意字符例如:wwww,也可以解析
@           A 10.0.0.5
可以输入magedu.org就可以访问

CNAME别名记录

 name: 别名的FQDN

value: 真正名字的FQDN

www.magedu.org. IN CNAME   websrv.magedu.org.

5.DNS软件bind

相关包

bind:服务器

bind-libs:相关库

bind-utils: 客户端 有dig等工具

主配置文件:/etc/named.conf,/etc/named.rfc1912.zones, /etc/rndc.key

解析库文件:/var/named/ZONE_NAME.ZONE 名字由你在named.rfc1912.zones文件中定义的为准

6.实现主DNS服务器

1.在主配置文件中定义区域

vim /etc/named.conf            
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };

2添加库

vim /etc/named.rfc1912.zones

zone "magedu.org" IN {
type master;
file "magedu.org.zone";
};

3.定义区域解析库文件

内容包括 :
宏定义
资源记录
touch magedu.org.zone 创建与添加文件名字一样的库
vim /var/named/magedu.org.zone

$TTL 86400
@ IN SOA ns.magedu.org. nsadmin.magedu.org. ( 2021012011 2H 10M 1W 1D )
@ NS ns
ns A 10.0.0.6
* A 10.0.0.5
@ A 10.0.0.5

chmod 640 magedu.org.zone ;chgrp named magedu.org.zone

10.0.0.5提供web服务

主配置文件语法检查

named-checkconf

解析库文件语法检查

named-checkzone "magedu.org" /var/named/magedu.org.zone

配置生效

#三种方式
#rndc reload
#systemctl reload named
#service named reload

6.测试和管理工具

dig命令

dig只用于测试dns系统,不会查询hosts文件进行解析

[15:01:59 root@centos7 ~]$dig www.magedu.org

rndc命令

利用rndc工具可以实现管理DNS功能

rndc监听端口:953/tcp

rndc COMMAND
COMMAND:
   status: 查看状态
 reload: 重载主配置文件和区域解析库文件
 reload zonename: 重载区域解析库文件
 retransfer zonename: 手动启动区域传送,而不管序列号是否增加
 notify zonename: 重新对区域传送发通知
 reconfig: 重载主配置文件
 querylog: 开启或关闭查询日志文件/var/log/message
 trace: 递增debug一个级别
 trace LEVEL: 指定使用的级别
 notrace:将调试级别设置为 0
 flush:清空DNS服务器的所有缓存记录

7.实现从服务器

只有一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实 现DNS服务的容错机制。从服务器可以自动和主服务器进行单向的数据同步,从而和主DNS服务器一 样,也可以对外提供查询服务,但从服务器不提供数据更新服务。

DNS从服务器

1. 应该为一台独立的名称服务器

2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器

3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/ 目录中

4. 主服务器得允许从服务器作区域传送

5. 主从服务器时间应该同步,可通过ntp进行

6. bind程序的版本应该保持一致;否则,应该从高,主低

定义从区域

为防止从主节点抓取数控要在主服务器/etc/named.conf

allow-transfer { 从服务器IP;};

#只允许从服务器进行区域传输

yum -y install bind -y
vim /etc/named.conf            
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#不允许其它主机进行区域传输
allow-transfer { none;};
vim /etc/named.rfc1912.zones
zone "magedu.org" {
  type slave;
  masters {10.0.0.6;};    主服务器IP
  file "slaves/magedu.org.zone.slave";
};
systemctl start named          #第一次启动服务
rndc reload                    #不是第一次启动服务
ls /var/named/slaves/magedu.org.slave #查看区域数据库文件是否生成

客户端添加10.0.0.7DNS
DNS2=从服务器

实现推和拉
在主服务器上添加从服务器地址告诉主服务器谁是从服务器

        NS slave1
slave1 A 10.0.0.7

修改序列号比如:2021012012原来序列号  现在2021012011

rndc reload

-rw-r--r-- 1 named named 382 Jan 21 17:29 /var/named/slaves/magedu.org.zone.slave

-rw-r--r-- 1 named named 490 Jan 21 17:35 /var/named/slaves/magedu.org.zone.slave

时间发生变化完成推,拉时间是修改序列号后面的时间

 

tcp/53 是用来实现主和从的复制的

udp/53 是用来实现查询解析的,也可以影响主复制的

tcp/953 是为了rndc可以远程管理的,不影响服务 

 8.实现子域

将子域委派给其它主机管理,实现分布式DNS数据库

主DNS服务器

vim /var/named/magedu.org.zone
sz           NS slave2
slave2       A   10.0.0.4   子域地址

子域DNS服务器

yum install bind -y
vim /etc/named.conf            
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
allow-transfer { none;};
vim /etc/named.rfc1912.zones

zone "sz.magedu.org" {
type master;
file "sz.magedu.org.zone";

};

vim /var/named/sz.magedu.org.zone

$TTL 1D
@ IN SOA ns1.sz.magedu.org. admin.magedu.org. ( 1 1H 10M 1D 2H )
NS ns1
ns1 A 10.0.0.4
www A 10.0.0.8

systemctl start named          #第一次启动服务

rndc reload                    #不是第一次启动服务

9.实现DNS转发(缓存)服务器

利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务,而非默认的根DNS服务器,并将指定 服务器查询的返回结果进行缓存,提高效率。

注意:

1. 被转发的服务器需要能够为请求者做递归,否则转发请求不予进行

2. 在全局配置块中,关闭dnssec功能

在转发的DNS服务器上
vim /etc/named.conf
dnssec-enable no; dnssec-validation no;

forward first|only;
forwarders { ip;};需要转发到哪里

first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询
only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询
第一次访问过后会生成缓存

10智能DNS

GSLB:Global Server Load Balance全局负载均衡 GSLB是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务 质量的保证 GSLB主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域) GSLB分为基于DNS实现、基于重定向实现、基于路由协议实现,其中最通用的是基于DNS解析方式

CDN工作原理

1. 用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS 服务器请求 2. 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能 DNS负载均衡系统 3. 智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户; 4. 用户向该IP节点(CDN服务器)发出请求 5. 由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原 站点服务器发起请求,并在CDN服务器上缓存内容 6. 请求结果发给用户

  

原文地址:https://www.cnblogs.com/aiyoubucuo/p/14308537.html