djbdns/tinydns是否支持大型TXT记录,例如在提供长DKIM密钥时?
我知道RFC 4408节3.1.3和RFC 1035节3.3.14:
https://www.rfc-editor.org/rfc/rfc4408#section-3.1.3 https://www.rfc-editor.org/rfc/rfc1035#section-3.3.14
这两种方法都表明,可以将TXT记录拆分为多个字符串,以便为长(>255个字符)记录提供服务。
在我的研究中,我也碰到了这个问题:
https://serverfault.com/questions/255580/how-do-i-enter-a-strong-long-dkim-key-into-dns
我尝试了在接受的答案中提到的两种方法,包括和不加括号。
但是djbdns拒绝正确地服务这些记录。例如,当使用nslookup查询我的domainkey记录时,我得到:
mail03._domainkey.zygonia.net text =
""v=DKIM1; k=rsa; p=" "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW"
"glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVR"
"YD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR" "+kraTEU/VDPI"
"RgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6"
"tB6BlPFk5FwIDAQAB""
*** Error: record size incorrect (515 != 419)
*** ns0.example.net can't find mail03._domainkey.zygonia.net: Unspecified error这是一个DKIM TXT记录,如下所示:
"v=DKIM1; k=rsa; p=" "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR" "+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB"原始djbdns数据记录如下所示:
:mail03._domainkey.zygonia.net:16:\642"v=DKIM1;\040k=rsa;\040p="\040"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb\057KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR"\040"+kraTEU\057VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C\057SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB":600当涉及到长TXT记录时,djbdns是一个失败的原因吗?
发布于 2016-12-01 21:09:24
的
TXT记录是多值的,每个值都是一个最多可达255个字节的字符串.
在您的示例中,首先使用标准主文件格式中指定的建议的TXT记录,该文件格式有三个值。
有三个值由引号表示,请注意这些值实际上不是记录数据的一部分,它们只指定每个值开始和结束的位置。
您的TXT值:
"v=DKIM1; k=rsa; p=" "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR" "+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB"指:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB对于DKIM而言,拥有多个值实际上没有意义,但是由于TXT记录的每个值都有有限的长度,DKIM规范承认这一点,并表示对于DKIM而言,多个值应该简单地连接到一个长字符串中。允许长键。
Ie,DKIM客户端将将上述值连接到字符串中。
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB 这也意味着上面的字符串可以在不改变DKIM的意义的情况下在不同的位置被分割。
Tinydns有两种表示TXT记录的方法(来自https://cr.yp.to/djbdns/tinydns-data.html):
‘fqdn :S:ttl:时间戳:lo(text’)记录fqdn。tinydns--数据为包含字符串s的fqdn创建一个TXT记录。您可以使用八进制\nnn代码在S中包含任意字节;例如,\072是冒号。
::fqdn :n:rdata:ttl:时间戳:用于fqdn的lo通用记录。tinydns-数据为显示rdata的fqdn创建n类型的记录。N必须是介于1到65535之间的整数;它不能是2 (NS)、5 (CNAME)、6 (SOA)、12 (PTR)、15 (MX)或252 (AXFR)。rdata的正确格式取决于n。您可以使用八进制\nnn代码在rdata中包含任意字节。
上面内置的TXT支持(1 )似乎不允许显式地指定多个值,但是,虽然手册没有说明这一点,但我发现有迹象表明它将单独拆分一个长字符串。
Ie,这样的东西应该可以工作(假设关于自动拆分的信息实际上是正确的):
'mail03._domainkey.zygonia.net:v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB:7200另一个选项,泛型记录支持(上文2),只要您给它适当的rdata,就一定能工作。
问题是,引用的rdata有一个非常低级别的表示形式,您绝对不能简单地将一些纯文本放到其中并期望它能够工作。
例如,如果您沿着以tinydns输入一般记录数据的路线,记录的主文件格式表示(通常使用的友好的纯文本记录数据,例如向您建议的记录数据)并不能真正帮助您,但您更愿意查找数据如何转换为DNS线格式( DNS协议中使用的实际二进制格式),并将其写入rdata字段(必要时有问题转义字节)。
Ie,对于TXT记录,您将以值字符串的长度作为前缀(单字节整数,需要像文档中所指出的那样以八进制形式转义)。
Afaict并不是因为它专门处理TXT记录。
然而,这是一款官方形式的软件,自2001年(1.05版)以来一直未见过任何更新。
有些补丁和叉子可以解决各种缺点( DNS协议以及我们的需求和期望在这15年中一直在发展),但我认为更有意义的是改用更好的维护和最新的DNS服务器实现。
https://serverfault.com/questions/818130
复制相似问题