DNS学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS学习相关的知识,希望对你有一定的参考价值。

DNS基础学习

DNS

DNS是工作在应用层上的一种协议 当我们在浏览器的文本框内输入一个网站时 其实访问的是一个服务器(可能是一台pc 或者其他类似的设备) 但是仅靠这个网站名 我们不知道他背后的ip地址 就无法建立http协议(建立前需三次握手 三次握手的建立是依靠ip的)从而就无法浏览网页 而dns协议可以帮我们把域名(所谓的网站名 例如www.baidu.com)解析为对应的ip 方便我们浏览网页

DNS解析

一次完整的DNS查询请求

step1:查询本地的hosts文件

windows 在 C:\Windows\System32\drivers\etc 下
技术分享图片
Linux在/etc/hosts中
技术分享图片
如果没有对应的匹配 就会进入下一个阶段寻找
step2:查询本地的dns local cache
step3:查询 dns server
如果是dns负责解析的域 查询数据库 返回请求
step4:如果不是dns server 负责的域 从根服务器开始递归查询

DNS服务器

主dns服务器:

维护负责解析域的数据库的那台服务器,读写操作均可进行

从dns服务器:

从主dns服务器复制的一份解析库,但只可进行读操作

复制的实施方式:

复制依据以下的几个参数进行
序列号:数据库的版本号;主服务器数据库内容发生变化时,版本号递增
刷新时间间隔:从服务器多久到主服务器查询一次序列号更新状况
重试时间间隔:retry,从主服务器请求同步解析失败时,再次发起尝试请求时间间隔
过期时长:从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据,停止提供服务
否定答案的缓存时长
    主服务器通知从服务器随时更新数据

区域和域

域名-->ip 
正向解析库
        正向解析库和正向解析功能结合起来就是一个正向解析区域
ip-->域名
反向解析库
        正向解析库和反向解析功能结合起来就是一个反向解析区域
        一个域至少包含这两个区域(正反向解析区域)
        但是域不一定比区域大 (三级域和顶级区域相比较)

区域数据库文件:

资源记录RR:
记录有类型:A.AAA.PTR.SOA.,NS,CNAME,.,MX
SOA:起始授权记录,一个区域解析库有且只能有一个,且须放在第一条
NS:域名服务记录,一个区域解析库可以有多个,其中一个为主
A:地址记录 域名-->IPV4
AAAA:地址记录 域名-->IPV6
CNAME:别名记录:
PTR:ip-->域名 反向解析
MX:邮件交换器
优先级:0-09 数字越小优先级越高

区域数据库文件:
资源记录RR:

    记录有类型:A.AAA.PTR.SOA.,NS,CNAME,.,MX
    SOA:起始授权记录,一个区域解析库有且只能有一个,且须放在第一条
    NS:域名服务记录,一个区域解析库可以有多个,其中一个为主
    A:地址记录 域名-->IPV4
    AAAA:地址记录 域名-->IPV6
    CNAME:别名记录:
    PTR:ip-->域名 反向解析
    MX:邮件交换器
    优先级:0-09 数字越小优先级越高

资源记录的定义格式

语法:name 【TTL】 IN RR—TYPE  value
·SOA:name:当前区域的名字:例如“xiaoyu.com” 
value:有多部分组成
1)当前区域的区域名称(也可以使用主DNS服务器名称)
2)当前区域管理员的邮箱地址:地址中的@一般用点号来代替
3)(主从服务协调属性的定义以及否定答案的TTL)
例如:xiaoyu.com  86600   IN   SOA   xiaoyu.com   admin.xiaoyu.com   (digit)

NS:

name:当前区域的区域名称
value:当前区域的某dns服务器的名字,例如:ns.xiaoyu.com
一个区域可以有多个ns记录
例如:
xiaoyu.com   86400   IN   NS   ns   xiaoyu.com

MX:

name:当前区域的区域名称
value:当前区域的某邮件交换器的主机名字,
MX记录可以有多个,但每个记录的value之前应该由一个数字表示优先级
例如:
xiaoyu.com    IN  MX   10   xiaoyu.com

A:

name:某域名
value:某个IP地址,
例如:www.xiaoyu.com         IN   A   1.1.1.1
        www.xiaoyu.com          IN        A         2.2.2.2

PTR

name:IP地址,有特定格式,IP反过来写,而且加特定后缀,
例如:1.2.3.4 的记录应该写成 4.3.2.1In-addr.arpa.
例如:4.3.2.1.in-addr.arpa. IN PTR www.xiaoyu.com 

注意:

1)TTL可以从全局继承
2)@表示当前区域的名称
3)相邻的两个记录name相同时,后面的可以省略
4)对于正想区域来说,MX,NS等类型的记录value为FQDN,此时应该有一个A记录

DNS配置正向和反向区域

配置解析一个正向区域

以xiaoyu.com域为例:

step 1 定义区域
在主配置文件中或主配置文件辅助配置文件中实现
zone "zone_name" IN {
type {master|slave|hint|forward}
对应的 主服务器 | 从服务器 | 根服务器| 转发服务器
file “ZONE_NAME.zone” 指定文件存放位置
如果相对路径 就在/var/named下放至
也可指定绝对路径
};

技术分享图片
step2 建立区域数据文件

在/var/named/目录下建立区域数据文件

技术分享图片
step3 让服务器重载配置文件个区域数据文件
rndc reload

step4:测试

技术分享图片

配置解析一个反向区域

以xiaoyu.com域为例:

step 1 定义区域
在主配置文件中或主配置文件辅助配置文件中实现
zone "zone_name" IN {
type {master|slave|hint|forward}
对应的 主服务器 | 从服务器 | 根服务器| 转发服务器
file “ZONE_NAME.zone” 指定文件存放位置
如果相对路径 就在/var/named下放至
也可指定绝对路径

ps:反向区域的名字
            反写的网段地址:in-addr.arpa
                例:80.168.192.in-addr.arpa.  
};

技术分享图片
step2 建立区域数据文件(主要记录为PTR)技术分享图片

在/var/named/目录下建立区域数据文件

技术分享图片
step3 让服务器重载配置文件个区域数据文件
rndc reload
step4:测试

技术分享图片

以上是关于DNS学习的主要内容,如果未能解决你的问题,请参考以下文章

python 机器学习有用的代码片段

学习笔记:python3,代码片段(2017)

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

DNS解析综合学习案例实验详细代码

PHP必用代码片段

Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段