使用 DNS 的扩展名机制 (EDNS0)

使用 DNS 的扩展名机制 (EDNS0)

时间: 2015-02-28 21:37
作者: lsgxeva
分类:  我的笔记>>工作学习>>WinServer>>Win2008R2
摘要:  使用 DNS 的扩展名机制 (EDNS0)
标签:  DNS EDNS0
提示: 文章均来自网络,版权为原作者所有,如有侵犯权益,请联络我们.



使用 DNS 的扩展名机制 (EDNS0)

3(共 3)对本文的评价是有帮助 评价此主题

更新时间: 2005年1月

应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

使用 DNS 的扩展名机制 (EDNS0)

DNS 的扩展机制(在 RFC 2671 中定义为 EDNS0)允许 DNS 请求者公布其 UDP 数据包的大小,并且更便于传输大于 512 字节(对于 UDP 数据包大小的原始 DNS 限制,RFC 1035)的数据包。DNS 服务器通过 UDP 传输层接收请求时,它对来自 OPT 资源记录 (RR) 的请求者的 UDP 数据包大小进行标识,测量其响应,以包含请求者指定的最大 UDP 数据包大小中允许的多个资源记录。有关资源记录的详细信息,请参阅资源记录参考。有关 RFC 的详细信息,请参阅DNS RFC。

ENDS0 UDP 响应

在 DNS 服务器假定请求者支持 EDNS0 之前,DNS 服务器必须接收包含 OPT 资源记录的查询。OPT 记录不包含实际 DNS 数据,其内容只与 UDP 传输层消息关联。OPT 记录将发送者的 UDP 负载大小存储在其 CLASS 字段中,并列出请求者可在请求者网络中传输的最大 UDP 负载中的字节数。

DNS 服务器接收包含公布最大 UDP 数据包大小的 OPT 记录的查询时,它将截断大于 OPT 记录中指定的限制的任何 UDP 响应的大小。

默认情况下,DNS 服务器包括 OPT 资源记录,该记录指明包含 OPT 资源记录的查询的最大响应数。有关修改 OPT 响应设置的信息,请参阅修改 EDNS0 配置。

如果 DNS 服务器接收不包含 OPT 资源记录的查询,它假定请求者的服务器不支持 EDNS0,并对假定发送者不接收大于 512 字节的 UDP 数据包的请求者进行响应。在这种情况下,DNS 服务器将其 UDP 响应大小截断为最大 512 字节。

EDNS0 UDP 查询

请求 DNS 服务器发送查询之前,它检查其高速缓存,确定响应服务器是否支持 EDNS0。如果响应 DNS 服务器支持 EDNS0,请求 DNS 服务器会将 OPT 资源记录附加到它发送的查询的附加部分。(所有查询都有五部分:头、问题、应答、授权机构和其他。)如果按照请求 DNS 服务器的高速缓存,响应 DNS 服务器不支持 EDNS0,请求 DNS 服务器不会在发送 OPT 资源记录前将其附加到查询中。有关详细信息,请参阅修改 UDP 消息的大小。

确定和缓存 EDNS0 支持

当 DNS 服务器接收包含 OPT 记录的主机的请求或响应时,DNS 服务器会缓存该主机支持的 EDNS 版本(例如,EDNS0)。如果来自主机的请求或响应中没有 OPT 记录,DNS 服务器的高速缓存会指出主机不支持 EDNS0。如果高速缓存已指出该主机支持 ENDS0,则不会更改高速缓存。

缓存主机的 EDNS0 支持信息的时间默认值为 86400(以秒为单位指定的一天)。可在 EDNSCacheTimeout 注册表项中的下列注册表子项中修改该值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dns\Parameters

允许的值范围从 3600(1 小时)到 15724800(182 天)。有关修改 EDNS0 高速缓存设置的信息,请参阅修改 EDNS0 配置。

DNS 服务器在请求 OPT 资源记录与接收包含头中的下列 RCODE 值之一的响应时,会决定主机不支持 EDNS0:

 

名称 描述

FORMERR

1

格式错误。名称服务器不解释 OPT 资源记录。

SERVFAIL

2

服务器故障。名称服务器因为出现问题而不处理查询。

NOTIMPL

4

未实施。名称服务器不支持所请求的查询类别。

(RCODE 字段或响应代码字段是 4 位字段,在头部分被设置为响应的一部分。)在这种情况下(作为请求者),DNS 服务器会确定该服务器不支持 EDNS0,并缓存该信息。

警告

  • 考虑数据包大小时,应考虑网络传输路径的发现的最大传输单位(如果存在该信息)。将 UDP 数据包大小配置为大于 512 字节时,请记住 UDP 数据包必须通过 UDP 主机和这些设备以外的设备(例如,路由器),而这些设备可能不支持大于 512 字节的 UDP 数据包。最大 UDP 数据包的大小应始终与 MTU 进行比较,有时,MTU 可能较小。建议未所有设备建立最大 UDP 数据包长度支持,并配置 UDP 主机达到该最大值。

注意

  • EDNS0 指 EDNS 的第一个 RFC (RFC 2671)。EDNS 的未来 RFC 将使用较大数字标识,例如,EDNS1。
    来源: < https://technet.microsoft.com/zh-cn/library/cc785769>
     

DNS 与EDNS0(DNS 的扩展名机制) (2011-01-01 15:30:26)
 
DNS 
平时用Sniffer观察到的DNS报文都在使用53/UDP,什么时候会用到53/TCP?
    根据RFC1035,对于DNS服务器,递归解析时用53/UDP,区传输因需要可靠传输,必须使用53/TCP。DNS服务器的标准实现必须同时支持53/TCP和53/UDP。RFC 1035中还指出,53/UDP上的UDP数据区(不包括UDP首部)不得超过512字节,发送时如果超过512字节,将被截断成512字节,同时DNS协议Flags字段Truncated位置位。53/TCP上的数据区最前面是big-endian序的2字节长度域,不包括自身这2字节,指明了后续数据长度。
当DNS响应数据大于512字节的时候,数据只返回512字节,剩余的数据将被丢弃.这个时候名字解析器(DNS客户端或递归解析中的DNS服务器)通常使用TCP重发原来的查询请求,它将允许返回的响应超过512个字节.所以何时使用TCP是由名字解析器决定的,也就是说,名字解析器用TCP发送请求,名字服务器才会用TCP发送响应,正常情况下决不会出现请求抱文是UDP而响应报文是TCP的情况.

使用 DNS 的扩展名机制 (EDNS0)
DNS 的扩展机制允许 DNS 请求者公布其 UDP 数据包的大小,并且更便于传输大于 512 字节(对于 UDP 数据包大小的原始 DNS 限制,RFC 1035)的数据包。DNS 服务器通过 UDP 传输层接收请求时,它对来自 OPT 资源记录 (RR) 的请求者的 UDP 数据包大小进行标识,测量其响应,以包含请求者指定的最大 UDP 数据包大小中允许的多个资源记录。



RFC-2671 解析--- EDNS0

一、什么是EDNS0?

    EDNS0:Extension Mechanisms for DNS Version 0,是DNS在rfc1035基础上对DNS协议的扩展。

二、EDNS0作用?

    1. 扩展DNS使用UDP传输时的最大报文限制,可以超过512字节

    2. 扩展RCODE,由4为增加到12位

    3. 建议利用域名标签类型的剩余两个(10和01)[RFC1035 4.1.4]

三、协议变化

    1. 增加OPT RR

    2. 交互流程

       (1) 客户端发起DNS请求,在Additional部分增加OPT RR

       (2) 服务器端解析并记录下客户端能够处理的最大UDP报文的大小

       (3) 服务器端生成相应报文,若大于最大值,则置truncated位,否则可发送大于512且小于最大值报文

四、OPT-RR 结构
使用 DNS 的扩展名机制 (EDNS0)
使用 DNS 的扩展名机制 (EDNS0)

五、 OPT-RR 数据结构

    typedef struct
    {
        uint16_t type;
uint16_t clas;
char name[DNS_MAX_DOMAIN_LEN];
DNS_TCN domain;
uint16_t udp_payload_size;
uint8_t hb_rcode;
uint8_t edns0_ver;
uint16_t z;
uint16_t data_len;
uint8_t data[0];
    }OPT_NODE;

六、C/S端升级

    1. 若客户端支持EDNS0,则可以发起EDNS0请求

       如:dig www.baidu.com +bufsize=4096

    2. 若服务器端支持EDNS0,则可以接受并处理EDNS0请求,否则返回 RCODE NOTIMPL,FORMERR或SERVFAIL

七、报文

    
使用 DNS 的扩展名机制 (EDNS0)


来源: < http://zhaotao110.blog.sohu.com/245807584.html >




来自为知笔记(Wiz)


你可能感兴趣的:(使用 DNS 的扩展名机制 (EDNS0))