![Ubuntu 上无法解析长 SPF(TXT)记录](https://linux22.com/image/722729/Ubuntu%20%E4%B8%8A%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90%E9%95%BF%20SPF%EF%BC%88TXT%EF%BC%89%E8%AE%B0%E5%BD%95.png)
当尝试构建以下形式的长 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