web-dev-qa-db-ja.com

djbdns / tinydnsは長いTXTレコードをサポートしていますか

Djbdns/tinydnsは、たとえば長いDKIMキーを提供する場合など、大きなTXTレコードをサポートしますか?

RFC4408セクション3.1.3およびRFC1035セクション3.3.14を知っています。

https://tools.ietf.org/html/rfc4408#section-3.1.

https://tools.ietf.org/html/rfc1035#section-3.3.14

どちらも、TXTレコードを複数の文字列に分割して、長い(> 255文字)レコードを提供できることを示しています。

私はまた、私の研究中にこの質問にぶつかりました:

強力な(長い)DKIMキーをDNSに入力するにはどうすればよいですか?

私は、括弧を囲んでいるかどうかにかかわらず、受け入れられた回答に記載されている両方のアプローチを試みました。

しかし、djbdnsはこれらのレコードを正しく提供することを拒否します。たとえば、nslookupを使用してドメインキーレコードをクエリすると、次のようになります。

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は失われた原因ですか?

2
Kev

TXTレコードと、これらがDKIMでどのように使用されるかについての背景を少し説明します。

TXTレコードは複数値であり、各値は最大255バイトの文字列です。

あなたの例では、3つの値を持つ標準のマスターファイル形式で指定された提案されたTXTレコードから始めました。
3つの値が引用符で示されています。これらは実際にはレコードデータの一部ではなく、各値の開始位置と終了位置を指定するだけであることに注意してください。

あなたの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の目的では 複数の値を1つの長い文字列に連結するだけです これにより長いキーが可能になります。

つまり、DKIMクライアントは上記の値を文字列に連結します

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB  

これは、DKIMでの意味を変更せずに、上記の文字列を異なる位置で分割できたことも意味します。


TinydnsとTXT

Tinydnsには、TXTレコードを表すために使用できる2つの方法があります( https://cr.yp.to/djbdns/tinydns-data.html から):

1)

'fqdn:s:ttl:timestamp:lo 

FqdnのTXT(「テキスト」)レコード。 tinydns-dataは、文字列sを含むfqdnのTXTレコードを作成します。8進数の\ nnnコードを使用して、s内に任意のバイトを含めることができます。たとえば、\ 072はコロンです。

2)

:fqdn:n:rdata:ttl:timestamp:lo

Fqdnの一般的なレコード。 tinydns-dataは、rdataを示すfqdnのタイプnのレコードを作成します。 nは1から65535までの整数でなければなりません。 2(NS)、5(CNAME)、6(SOA)、12(PTR)、15(MX)、または252(AXFR)であってはなりません。 rdataの適切な形式はnによって異なります。 8進数の\ nnnコードを使用して、rdata内に任意のバイトを含めることができます。


組み込みのTXTサポート(上記の1)で複数の値を明示的に指定できるようには見えませんが、マニュアルにはこれが記載されていませんが、長い文字列をそれ自体で分割するという兆候が見つかりました。

つまり、このようなものが機能するはずです(自動分割に関する情報が実際に正しいと仮定して):

'mail03._domainkey.zygonia.net:v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7UNgSlnndT9JY0soSjxLhFFnvAeVN8b6Y3oKctAunNltMjvXfTD37doER8a9xwEOIXkGPgxJ5UPb/KndvHiIo+j8AScoIZCW1glFWp4AUoKlQkKP7o7vwFnWypU+DmcJAtyuhZ9X5yzag37cVRGYD4icd02yAETLbIpv1mnMUFkTnkdmtSa5gL2cLUueUOValoENwkWTcZR+kraTEU/VDPIrRgNBu6OJmQdk0sv4qdkwVVvxvquT4C/SimQDoDaQwlFCp2sBryXyaNSRCaAhRxPaKUpKsPmubW0SJF2nQZ3DprJQcaRQLd9Qgxz+V+XaseaXXWPy+6rtB6BlPFk5FwIDAQAB:7200


もう1つのオプションである汎用レコードサポート(上記の2)は、適切なrdataを指定する限り、確実に機能します。

問題は、そこに参照されているrdataは非常に低レベルの表現であり、プレーンテキストをそこにドロップして機能することを期待することは絶対にできないということです。
つまり、tinydnsに一般的なレコードデータを入力するルートをたどると、レコードのマスターファイル形式の表現(たとえば、通常使用するフレンドリーなプレーンテキストのレコードデータ)の助けにはなりません。提案されたデータを記録します)が、そのデータがDNSワイヤー形式(DNSプロトコルで使用される実際のバイナリ形式)にどのように変換されるかを調べて、それを(必要に応じて問題のあるバイトをエスケープして)-に書き込む必要があります。 rdataフィールド。

つまり、TXTレコードの場合、値の文字列の前に長さが付けられます(1バイト整数。ドキュメントに記載されているように8進数でエスケープする必要があります)。


Djbdns/tinydnsは失われた原因ですか?

特にTXTレコードの処理のためではありません。

ただし、2001年(バージョン1.05)以降、公式の形式では更新が行われていないソフトウェアです。
さまざまな欠点に対処するパッチとフォークがあります(DNSプロトコル、および私たちの要求と期待は15年間進化し続けています)が、より適切に維持され、最新のものに切り替える方が理にかなっていると思いますDNSサーバーの実装。

3