发布 PowerDNS Recursor 4.2 和 2020 年 DNS 国旗日计划

经过一年半的发展 提交 释放缓存DNS服务器 PowerDNS 资源 4.2,负责递归名称转换。 PowerDNS Recursor 与 PowerDNS 权威服务器构建在相同的代码库上,但 PowerDNS 递归和权威 DNS 服务器是通过不同的开发周期开发的,并作为单独的产品发布。 项目代码 分发者 根据 GPLv2 许可。

新版本消除了与处理带有 EDNS 标志的 DNS 数据包相关的所有问题。 2016 年之前的旧版本 PowerDNS Recursor 的做法是忽略具有不受支持的 EDNS 标志的数据包,而不以旧格式发送响应,从而根据规范的要求丢弃 EDNS 标志。 以前,这种非标准行为在 BIND 中以解决方法的形式得到支持,但在以下范围内: 执行 二月份的举措 DNS 标志日之后,DNS 服务器开发人员决定放弃这种 hack。

在 PowerDNS 中,使用 EDNS 处理数据包的主要问题早在 2017 年的 4.1 版本中就被消除了,而在 2016 年发布的 4.0 分支中,在某些情况下出现的个别不兼容性浮出水面,并且通常不会干扰正常运行。手术。 在 PowerDNS Recursor 4.2 中,如下所示 绑定9.14,删除了支持权威服务器的解决方法,这些服务器错误地响应带有 EDNS 标志的请求。 到目前为止,如果在发送带有 EDNS 标志的请求后,在一段时间后没有响应,则 DNS 服务器会认为不支持扩展标志,并发送第二个不带 EDNS 标志的请求。 此行为现​​已被禁用,因为此代码会导致由于数据包重新传输而导致的延迟增加、网络负载增加以及由于网络故障而未响应时的模糊性,并阻止实施基于 EDNS 的功能(例如用于防御 DDoS 攻击的 DNS Cookie)。

已决定明年举办该活动 2020 年 DNS 卖旗日旨在将注意力集中在 决定 问题 处理大型 DNS 消息时存在 IP 碎片。 作为该倡议的一部分 正在计划中 将 EDNS 的建议缓冲区大小修复为 1200 字节,并且 翻译 通过 TCP 处理请求是服务器的必备功能。 现在需要支持通过 UDP 处理请求,并且需要 TCP,但操作不需要(该标准要求能够禁用 TCP)。 建议从标准中删除禁用 TCP 的选项,并标准化在已建立的 EDNS 缓冲区大小不足的情况下从通过 UDP 发送请求到使用 TCP 的过渡。

作为该计划的一部分提出的更改将消除选择 EDNS 缓冲区大小的混乱,并解决大型 UDP 消息的碎片问题,该问题的处理通常会导致客户端数据包丢失和超时。 在客户端,EDNS 缓冲区大小将保持不变,并且大响应将立即通过 TCP 发送到客户端。 避免通过 UDP 发送大消息也将允许您阻止 攻击 用于毒害 DNS 缓存,基于对分段 UDP 数据包的操作(当拆分为分段时,第二个分段不包含带有标识符的标头,因此可以伪造,为此只需校验和匹配就足够了) 。

PowerDNS Recursor 4.2 考虑到大型 UDP 数据包的问题,​​并切换为使用 1232 字节的 EDNS 缓冲区大小 (edns-outgoing-bufsize),而不是之前使用的 1680 字节限制,这将显着降低丢失 UDP 数据包的可能性。 选择值 1232 是因为它是 DNS 响应大小的最大值(考虑到 IPv6),适合最小 MTU 值 (1280)。 负责修剪对客户端的响应的 truncation-threshold 参数的值也已减少到 1232。

PowerDNS Recursor 4.2 中的其他更改:

  • 添加机制支持 XPF (X-Proxied-For),它是 X-Forwarded-For HTTP 标头的 DNS 等效项,允许通过中间代理和负载均衡器(例如 dnsdist)转发有关原始请求者的 IP 地址和端口号的信息。 要启用 XPF,有以下选项“xpf-允许-来自“和”xpf-rr 代码“;
  • 改进了对 EDNS 扩展的支持 客户端子网 (ECS),它允许您在 DNS 查询中向权威 DNS 服务器传输有关沿着链传输的初始请求被中毒的子网的信息(有关客户端源子网的数据对于内容分发网络的有效运行是必要的) 。 新版本添加了对 EDNS 客户端子网的使用进行选择性控制的设置:“ecs-添加-for» 包含将在 ECS 中的传出请求中使用 IP 的网络掩码列表。 对于不属于指定掩码范围的地址,指令中指定的通用地址“ecs 范围零地址”。 通过指令“使用传入 edns 子网» 您可以定义子网,其中填充了 ECS 值的传入请求将不会被替换;
  • 对于每秒处理大量请求(超过 100 万个)的服务器,指令“分配器线程”,它确定用于接收传入请求并在工作线程之间分配它们的线程数(仅在使用“时才有意义”pdns-distributes-queries=是«)。
  • 新增设定 公共后缀列表文件 定义你自己的文件 公共后缀列表 用户可以在其中注册其子域的域,而不是 PowerDNS Recursor 内置的列表。

PowerDNS 项目还宣布将开发周期改为六个月,预计下一个主要版本 PowerDNS Recursor 4.3 将于 2020 年 4.2 月发布。 重要版本的更新将在全年中开发,之后漏洞修复将再发布六个月。 因此,对 PowerDNS Recursor 2021 分支的支持将持续到 4.2 年 XNUMX 月。 PowerDNS 权威服务器也进行了类似的开发周期更改,预计将在不久的将来发布 XNUMX。

PowerDNS Recursor的主要特点:

  • 远程统计收集工具;
  • 即时重启;
  • 内置Lua语言连接处理程序引擎;
  • 完整的 DNSSEC 支持和 DNS64;
  • 支持 RPZ(响应政策区)和定义黑名单的能力;
  • 反欺骗机制;
  • 能够将解析结果记录为 BIND 区域文件。
  • 为了确保高性能,FreeBSD、Linux 和 Solaris 中使用了现代连接复用机制(kqueue、epoll、/dev/poll),以及能够处理数万个并行请求的高性能 DNS 数据包解析器。

来源: opennet.ru

添加评论