经过一年半的发展
新版本消除了与处理带有 EDNS 标志的 DNS 数据包相关的所有问题。 2016 年之前的旧版本 PowerDNS Recursor 的做法是忽略具有不受支持的 EDNS 标志的数据包,而不以旧格式发送响应,从而根据规范的要求丢弃 EDNS 标志。 以前,这种非标准行为在 BIND 中以解决方法的形式得到支持,但在以下范围内:
在 PowerDNS 中,使用 EDNS 处理数据包的主要问题早在 2017 年的 4.1 版本中就被消除了,而在 2016 年发布的 4.0 分支中,在某些情况下出现的个别不兼容性浮出水面,并且通常不会干扰正常运行。手术。 在 PowerDNS Recursor 4.2 中,如下所示
已决定明年举办该活动
作为该计划的一部分提出的更改将消除选择 EDNS 缓冲区大小的混乱,并解决大型 UDP 消息的碎片问题,该问题的处理通常会导致客户端数据包丢失和超时。 在客户端,EDNS 缓冲区大小将保持不变,并且大响应将立即通过 TCP 发送到客户端。 避免通过 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