基础知识-DNS-DNS详解

摘要:
无论本地DNS服务器使用转发还是根提示,最终都会将结果返回到本地DNS服务器,然后DNS服务器返回到客户端。

DNS简介

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。

基础知识-DNS-DNS详解第1张

DNS工作过程

DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址;

具体过程如下:

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

DNS服务的体系架构

DNS使用分布式的层次数据库模式以及缓存方法来解决单点集中式的问题;

DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器;

基础知识-DNS-DNS详解第2张

DNS与的名称

完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,包含主机名及域名;

如im.qq.com中im即为主机名,qq.com即为域名,则完成的FQDN为im.qq.com;

DNS域名称空间的组织方式

基础知识-DNS-DNS详解第3张

DNS工作之迭代与递归查询

PC->Server间的查询为递归查询,一次即有结果,Server使用根查询方式,迭代查询,需要查询多次才有结果;

在这里插入图片描述

在这里插入图片描述

dig +trace www.163.com

从根获取到顶级服务器

image

从顶级服务器获取权威服务器

image

从权威服务器获取到具体的解析

image

DNS的记录

NS

NS记录及SOA记录是任何一个DNS区域都不可或缺的两条记录,NS记录即名称服务器记录,用于说明这个区域由哪些DNS服务器负责解析;NS记录,说明这个区域里,有多少个服务器来承载解析的任务;

格式:区域名 IN NS 完整主机名(FQDN)
SOA即起始授权机构记录,说明了在众多的NS记录里哪一台才是主要的服务器;

A

即主机记录,使用最广泛的DNS记录,A记录的基本作用就是说明一个一个FQDN对应的IP地址是多少;
即域内<比如qq.com域内>的主机名与IP地址的映射<如www IN A 12.12.12.12>;

可以针对一个域名创建多个A记录,指向不同的物理服务器的IP,实现基本的流量均衡;<因,dns解析时会随机排序>

格式:完整主机名(FQDN) IN A IP地址

MX

邮件交换记录,使用邮件服务器时不可或缺的,比如A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS在定位到了B的MX记录后反馈给A用户,然后A用户把邮件投递到B用户的MX记录服务器里!

格式:区域名 IN MX 优先级(数字) 邮件服务器名称(FQDN)

Cname

别名记录

格式:别名 IN CNAME 主机名

SRV

服务器资源记录,RFC2052中才对SRV记录进行了定义;说明了一个服务器能够提供什么样的服务;

SRV在Active Directory中有着重要的地位,client通过DNS得到SRV记录来定位域控制器;

—ldap._tcp.contoso.com 600 IN SRV 0 100 389 NS.contoso.com

ladp: 是一个服务,该标识说明把这台服务器当做响应LDAP请求的服务器
tcp:本服务使用的协议,可以是tcp,也可以是用户数据包协议《udp》
contoso.com:此记录所值的域名
600: 此记录默认生存时间(秒)
IN: 标准DNS Internet类
SRV:将这条记录标识为SRV记录
0: 优先级,如果相同的服务有多条SRV记录,用户会尝试先连接优先级最低的记录
100:负载平衡机制,多条SRV并且优先级也相同,那么用户会先尝试连接权重高的记录
389:此服务使用的端口
NS.contoso.com:提供此服务的主机

PTR

指针记录,PTR记录是A记录的你想记录,作用是把IP地址解析为域名;PTR记录只能在反向解析zone中创建;

格式:IP地址 IN PTR 主机名(FQDN)

DNS的通信

DNS只要使用TCP/UDP的53端口;

DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议;

区域传送使用TCP的原因:

①辅助DNS服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的书量比一个请求和应答的数据量要多得多。
②TCP是一种可靠的连接,保证了数据的准确性。

域名解析时使用的是UDP协议:

客户端向DNS服务器查询域名,一般返回内容都不超过512个字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包;

DNS的简单搭建

Centos7下的bind搭建

安装必要的包,其中安装bind-chroot后,可以启动named-chroot的服务,代替named,更加安全哦;

yum install bind bind-chroot bind-utils

补充解释

$ORIGIN schroder.net. # 补充一条,这个是说明这里面你不在域名后面加.就默认有这个后缀;

主DNS服务器

###### 配置/etc/name.conf
options {
        listen-on port 53 { 10.5.202.245; }; #这个是监听哪个端口;
        directory       "/var/named"; # 这个是配置zone的file在哪个文件夹;
        allow-transfer {10.5.202.246;}; # 这个是配置区域传送的,也就是备服务器;
    listen-on { 127.0.0.1; 10.11.12.0/24; }; # 这个配置只收哪些设备的dns请求,其他忽略的;
};

# 建一个名字叫baidu.com的域
zone "baidu.com" IN {
        type master;
        file "named.baidu.com";
};
# 反向区域按照这种格式建
zone "202.5.10.in-addr.arpa" IN {
        type master;
        file "named.0.202.5.10";
};

###### 配置named.baidu.com的文件##
$TTL 1D # 这个是设置全局的缓存超时时间,其他的一些设置不多说
# SOA的设置中,第一个是主域名服务器,第二个是域名联系人邮箱;
@       IN SOA  ns1.baidu.com. admin.admin.com (
                                        3       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns2.baidu.com. # 主nameserver
        IN      NS      ns1.baidu.com. # 备nameserver
ns1     IN      A       10.5.202.245 # A记录几条
ns2     IN      A       10.5.202.246
ns3     IN      A       10.5.202.247
www     IN      A       10.5.202.246
$GENERATE 1-3 1h$ 3600 IN CNAME www.baidu.com. # 这个是批量生成,$通配前面的1-3,也就是1h1,1h2,1h3等;
smc     IN      A       10.5.202.241 
*       IN      CNAME   www.baidu.com. # 这个是泛解析,也就是说只要在这个域下未匹配的主机名都走这个;

###### 配置named.0.202.5.10的文件##
$TTL 1D
@       IN SOA  ns1.baidu.com. admin.baidu.com (
                                        8       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns2.baidu.com. # 主nameserver
        IN      NS      ns1.baidu.com. # 辅助nameserver
245     IN      PTR     ns1.baidu.com. # 反向解析的记录
246     IN      PTR     ns2.baidu.com.
246     IN      PTR     www.baidu.com.
245     IN      PTR     www.baidu.com.
247     IN      PTR     ns3.baidu.com.

辅助DNS服务器

### name.conf的配置
options {
        listen-on port 53 { 10.5.202.246; }; 
        directory       "/var/named";
};

zone "baidu.com" IN {
        type slave; # 为备模式
        file "slaves/named.baidu.com"; # 这些文件不需要新建,会自动同步的
        masters {10.5.202.245;}; # 指向主dns服务器,也可以设置在options中
};

zone "202.5.10.in-addr.arpa" IN {
        type slave; # 为备模式
        file "slaves/named.10.5.202"; # 这些文件不需要新建,会自动同步的
        masters {10.5.202.245;};# 指向主dns服务器,也可以设置在options中
};

cache DNS服务器

options {
        listen-on port 53 { any; };
        directory       "/var/named";
        allow-query     { any; };
        forward only; # 配置转发
        forwarders {10.5.202.245;}; # 配置转发参考的服务器
        max-cache-ttl 100; # 配置正确的解析的缓存时间s
        max-ncache-ttl 100; # 配置错误的解析的缓存时间s
};

一般生效前可检查

named-checkconf /etc/named.conf # 检查配置有没有问题;
named-checkzone {zonename} {filename} # 检查zone的文件有没有问题;


end

参考:https://blog.csdn.net/yangyuCISCO/article/details/88957915?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1

参考:https://gist.github.com/Nilpo/1a70ebca988ad0743ea533d747445148

bind的option的参数设置可参考:http://www.ipamworldwide.com/ipam/bind-options.html

免责声明:文章转载自《基础知识-DNS-DNS详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Servlet异步处理和文件上传你所不知道的 CSS 负值技巧与细节下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux网络管理

1、Linux配置IP地址的方法 1.ifconfig命令临时配置IP地址 ifconfig命令:查看与配置网络状态命令 [root@AmorLei ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3E:08:C7:DD inet addr:172.17.190....

配置虚拟机的ip地址,dns地址以及hosts

静态ip地址 BOOTPROTO=static IPADDR=注意要和宿主机的ip前3部分保持一致,最后的地址进行修改即可 NETMASK=255.255.255.0--和宿主机保持一致 GATEWAY=网关要和宿主机保持一致 service network restart 重启网络 ip addr查看网路地址信息 配置DNS 检查NetManager的状...

容灾切换必备——全局流量管理介绍

如今人们对互联网服务的依赖越来越重,提供低延时高可用的服务成为越来越多互联网服务厂商的迫切需求。您是否也遇到过以下问题:1、需要降低网络耗时,却不知道怎么实现用户服务的就近访问?2、需要对服务进行灰度验证,却不知道如何控制各个节点的流量比重,不知道如何资源分配?3、知道保障服务的可用性非常重要,却在遇到故障时,不知道如何快速将流量引流到其他可用节点?您需要...

(100%成功超详细图文教程)虚拟机VM ware中centos7无法上网及Xshell配置正确但是连接不上本地虚拟机问题汇总

前言: 作为linux新手,想必一定会遇到各种各样的网络连接问题,菜鸟阶段总感觉自己的错误网上找不到,一度怀疑自己犯的错别人都没犯过,我晕,折腾一天后终于解决了,前来帮助小伙伴解决心中的疑惑。 如果你的目的是从Xshell连接本地的Linux虚拟机,那么请往下看,当然我会顺带着将虚拟机没网的问题说清楚: 前几天做了几个项目,然后不知为何,Xshell就莫名...

电脑网络诊断显示Win10无法与设备或资源(DNS)通信解决办法

最近是做多错多还是人有点儿衰神附体,软件,电脑系统,各种问题层出不穷,今天早上打开电脑发现不少软件都无法联网,神马百度商桥,腾讯浏览器,百度云。。。昨天百度商桥打不开还以为是软件出了问题,因为火狐浏览器可以上网,qq可以上网、微信可以上网,这种部分软件无法联网的事情还是第一次发生。今天把软件卸载重装,电脑重启,重复了n遍之后终于意识到不是软件的问题了,于是就...

ESP8266 mDNS

https://circuits4you.com/2017/12/31/esp8266-mdns/ 本教程介绍如何使用ESP8266进行多播DNS?在网络世界中,很难记住每个网站和计算机的IP地址,解决这个问题域名系统(DNS)用于制作人类可理解的名称。在ESP8266中使用ESP作为Web服务器时,很难记住ESP8266的IP地址,并且在DHCP模式下很...