当尝试构建以下形式的长 SPF 记录时:
example.com. 86400 IN TXT "v=spf1 ip4:1.2.3.0/24 include:example.net include:_my_whitelist.example.com -all"
_my_whitelist.example.com. 86400 IN TXT "v=spf1 ip4:... " " ip4:..."
...这样白名单记录长度超过 255 个字节。我理解这是构建更长 DNS 响应的有效方法(http://www.openspf.org/RFC_4408#multiple-strings表示它们应该连接在一起并作为一个整体处理),有些解析器对此很满意。然而,有些解析器无法解析 - 例如 Ubuntu 18.04 的解析器声称不存在 TXT 记录。
当使用以下host
命令时会出现这种情况:
$ host -t txt _my_whitelist.example.com
_my_whitelist.example.com has no TXT record
- 这是 Ubuntu/ 中的一个错误吗
systemd
? - 有没有更好的方法来构建长 TXT/SPF 记录?
答案1
似乎已经出现了两个可能的问题:
- DNS 记录略有损坏(太长?)
- Ubuntu 的 systemd DNS 解析器不太好
我们创建的 DNS 记录在 255 字节边界处被分割。将其降低到 248 字节似乎已解决问题。
Ubuntu 解析器有预期行为默认情况下,它不提供本地 TCP 解析服务,因此host
回退到 TCP 进行查找会失败——我认为!https://github.com/systemd/systemd/issues/6520