网络协议与攻击模拟_13缓存DNS与DNS报文

一、缓存DNS服务器 

1、引入缓存DNS

工作可能会遇到这样的场景,内网部署有一台缓存DNS服务器,这台服务器是由我们自己搭建的。为什么放在内网呢?因为我内网中的机器请求内网返回会比较快。第一次会慢点,因为有一个转发的过程,后续就比较快。DNS缓存的作用是为了快速使得内网的主机得到DNS缓存的消息。

缓存域名服务器需要与外网连接

一台windows作为Client 一台Windows server作为缓存DNS 桥接网络  DHCP自动获取IP地址

Client 192.168.183.133     

Windows server 192.168.183.138

ipconfig /all查看下Client的DNS,设置让Client的DNS指向这台windows server

只改DNS

意思就是现在我们内网有一台服务器我们要把它当做缓存DNS服务器。

我把win10的DNS改了,它就上不了网了,ping不通百度了,因为它指向的DNS服务器无法解析。

这个时候有两种办法

方法一:

一是 直接把它装成主要名称服务器,然后直接去创建对应的区域文件。但是百度它是外网的域名,外网的域名,内网里面就算你找到了百度的IP然后添加一个记录其实没有记录,外网这么多IP根本加不过来。

方法二:

所以我们直接把这样一台做成缓存域名服务器。

先在WIndows server上面装DNS服务器

开始->windows管理工具->DNS

不需要新建区域文件,直接配置它转发器

2、配置DNS转发器

转发器:如果它收到了来自客户机的DNS请求,那么它就直接转发到外部的DNS去

物理机nslookup找一下外部的DNS

然后回到Windows server虚拟机把找到的DNS服务器IP填进去

单击确定,这里找到了服务器的域名,直接点应用,确认

nslookup看到它的DNS服务器是192.168.188.138

然后去解析下www.baidu.com是可以正常解析的。

3、DNS转发过程分析

dns    查找域名 www.baidu.com

首先是Client请求了缓存DNS,然后缓存DNS请求了外部的DNS服务器,然后外部的DNS响应了缓存DNS,缓存DNS响应了Client。

二、DNS报文字段

DNS报文有请求报文和响应报文,二者最大的区别点是响应报文有响应的Response

  • Transaction ID:ID字段
  • Flags
    • 第1位:标识消息类型,为0表示请求,为1表示响应
    • 第2-5位:Opcode查询总类,0000是Standard query
    • 第6位:响应报文标识是否为权威应答(请求是没有第六位是空的)
    • 第7位:一个UDP报文为512字节,指示是否截断超过部分
    • 第8位:是否请求递归
    • 第9位:允许递归的标识
    • 第10-12位:保留位
    • 第13-16位:应答码(响应报文的应答码,请求报文是没有13到16位的)0标识没有错误,1格式错误、2服务器错误、3名字错误、4服务器不支持 5拒绝 6-15是保留的
  • Question:请求段中问题的记录数
  • Answer PRS:响应回答段中的记录数(请求报文没有)
  • Authority PRS:授权段中的记录数
  • Addnitional PRS:附加段中的记录数
  • Queries:查询请求的内容,响应中的内容和查询中的是一样的
    • Name:查询的域名
    • Name Length:标识查询域名的长度
    • Label Count:3
    • Type :AAAA代表是IPV6
    • Class:协议组IN

      一般写域名会这样写,再Windows服务器上看不出来,在Linux服务器上就能看出来www.baidu.com      IN   192.168.1.1


  • Answer响应的内容
    • Name:域名
    • Type:CNAME别名
    • Class:IN
    • Time to live:TTL值
    • Date length:域名长度
    • CNAME:真实名称

Queries和Answers字段是与Questions和Answer PRs对应的,因为前面的Questions进而Answer PRs的字段为1,所以下面有Queries和Answers字段。

例如:这个报文中Questions和Authority RPs字段为1,所以下面有Queries和Authoritative names servers部分 

相关推荐

  1. DNS协议

    2024-02-02 10:40:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-02 10:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-02 10:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-02 10:40:03       82 阅读
  4. Python语言-面向对象

    2024-02-02 10:40:03       91 阅读

热门阅读

  1. 设计模式第一天|单例模式 1.小明的购物车

    2024-02-02 10:40:03       61 阅读
  2. 每日OJ题_算法_模拟①_力扣1576. 替换所有的问号

    2024-02-02 10:40:03       55 阅读
  3. python将“{‘a‘:1}“和‘{“a“:None}‘转化为dict

    2024-02-02 10:40:03       35 阅读
  4. 为什么要用Qt开发Android应用?

    2024-02-02 10:40:03       48 阅读
  5. vue中template原理

    2024-02-02 10:40:03       45 阅读
  6. vue常见面试题

    2024-02-02 10:40:03       36 阅读