Domain-Name-System

Google Cloud DNS 未正確排序 Rrdata

  • October 25, 2018

我正在 Google Cloud DNS 中設置超過 255 個字元的 DKIM 記錄。我已按照https://support.google.com/a/answer/173535中的建議將其拆分為 2 個值。這就是它在 terraform 中的顯示方式。

$ terraform show
google_dns_record_set.siteground_dkim:
 id = rightleadsio/default._domainkey.rightleads.io./TXT
 managed_zone = rightleadsio
 name = default._domainkey.rightleads.io.
 project = rlautomation-156511
 rrdatas.# = 2
 rrdatas.0 = "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApRvh3MHFry0h4WxY+flc29BDr750WmoaWdwQZwZ56HcdBE+wu6dd849IbMYT6uSCqT3SHpU2D6wVe9B3zlz0H4aZ75GUOTRl72FiTv5Q4Ru+NQ/4s1lwtgcyoJUnfVkxm8fT7qZiRwr+F7Wf7IqvNNVfPG2+0q5QUlgeu2ddXxjipaPMzIv1hxiHF75Pgse85"
 rrdatas.1 = "zb3PdAsa8wHMhyvHMkS6wwXTiW8Mll2KFyLMjtq5RL56VE5ew+aY1wk6CjpKgvoCXbDJGc3pIa2FQQFhiVwNY/HJBEArM4yoM1y98RF7F7VgWYkLYqpvWbnQtaENcS67NGynJ1ViLIELLfINLRHywIDAQAB"
 ttl = 3600
 type = TXT

但是,當我使用 dig 或 mxtoolbox 進行查詢時,它會將 rrdatas.1 顯示為第一個值,將 rrdatas.0 顯示為第二個值,因此無法正確組合該值。

$ dig +short txt default._domainkey.rightleads.io
"zb3PdAsa8wHMhyvHMkS6wwXTiW8Mll2KFyLMjtq5RL56VE5ew+aY1wk6CjpKgvoCXbDJGc3pIa2FQQFhiVwNY/HJBEArM4yoM1y98RF7F7VgWYkLYqpvWbnQtaENcS67NGynJ1ViLIELLfINLRHywIDAQAB"
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApRvh3MHFry0h4WxY+flc29BDr750WmoaWdwQZwZ56HcdBE+wu6dd849IbMYT6uSCqT3SHpU2D6wVe9B3zlz0H4aZ75GUOTRl72FiTv5Q4Ru+NQ/4s1lwtgcyoJUnfVkxm8fT7qZiRwr+F7Wf7IqvNNVfPG2+0q5QUlgeu2ddXxjipaPMzIv1hxiHF75Pgse85"

難道我做錯了什麼?還是 Google Cloud DNS 問題?有沒有辦法在不改變密鑰的情況下解決這個問題,因為這不在我的控制範圍內。

確實似乎以錯誤的方式添加了 DKIM 值,是的。

看起來您添加了兩個單獨TXT的記錄,每個記錄都有一個字元串值,而不是一個TXT記錄有兩個字元串。(是的,TXT記錄是多值的,長度限制是每個值。)

後者是 DKIM 規範允許長值的方式,它的定義是,如果一條TXT記錄有多個值,則應在將其解析為 DKIM 值之前將這些值連接成一個長字元串。

但是,不應以任何方式組合多個單獨的 TXT 記錄。

即,正如穀歌支持文章所說,一個長字元串需要被分成更短的部分,但這些部分仍然應該都在一個記錄中。

(這是 DNS 級別的要求,在某些情況下,與之互動的介面會抽像出這種行為。)

在主文件格式中,您的記錄將是:

default._domainkey.rightleads.io. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApRvh3MHFry0h4WxY+flc29BDr750WmoaWdwQZwZ56HcdBE+wu6dd849IbMYT6uSCqT3SHpU2D6wVe9B3zlz0H4aZ75GUOTRl72FiTv5Q4Ru+NQ/4s1lwtgcyoJUnfVkxm8fT7qZiRwr+F7Wf7IqvNNVfPG2+0q5QUlgeu2ddXxjipaPMzIv1hxiHF75Pgse85" "zb3PdAsa8wHMhyvHMkS6wwXTiW8Mll2KFyLMjtq5RL56VE5ew+aY1wk6CjpKgvoCXbDJGc3pIa2FQQFhiVwNY/HJBEArM4yoM1y98RF7F7VgWYkLYqpvWbnQtaENcS67NGynJ1ViLIELLfINLRHywIDAQAB"

不像你現在看起來的那樣:

~~default._domainkey.rightleads.io. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApRvh3MHFry0h4WxY+flc29BDr750WmoaWdwQZwZ56HcdBE+wu6dd849IbMYT6uSCqT3SHpU2D6wVe9B3zlz0H4aZ75GUOTRl72FiTv5Q4Ru+NQ/4s1lwtgcyoJUnfVkxm8fT7qZiRwr+F7Wf7IqvNNVfPG2+0q5QUlgeu2ddXxjipaPMzIv1hxiHF75Pgse85"
default._domainkey.rightleads.io. 3600 IN TXT "zb3PdAsa8wHMhyvHMkS6wwXTiW8Mll2KFyLMjtq5RL56VE5ew+aY1wk6CjpKgvoCXbDJGc3pIa2FQQFhiVwNY/HJBEArM4yoM1y98RF7F7VgWYkLYqpvWbnQtaENcS67NGynJ1ViLIELLfINLRHywIDAQAB"~~

更重要的是,在 DNS 中,通常沒有為RRset(具有相同所有者名稱類型的記錄集)中的記錄定義順序。

預計您在添加記錄時使用的順序可能不一定會保持(如您的範例中所示),但這在 DKIM 的上下文中無關緊要,因為整個 DKIM 值TXT無論如何都必須在同一記錄中。

引用自:https://serverfault.com/questions/936987