DNS txt 記錄將子域指向其他域
我在 gandi.net 有一個 SimpleHosting 實例,連接到 Gandi 的一個域
mygandidomain.org
,以及另一個在myrootdomain.name
其他地方註冊的域。我成功地在我
myrootdomain.name
的 DNS 記錄中添加了一個 CNAME 條目,讓一個子域subdomain.myrootdomain.name
指向我在 Gandi 的 SimpleHosting 實例,即:subdomain 10800 IN CNAME mygandidomain.org.
當我現在
subdomain.myrootdomain.name
使用 Google Chrome 訪問時,我收到一條錯誤消息:“錯誤 404 Vhost 未知。” 此錯誤消息來自 Gandi,而不是來自我的其他域名註冊商。所以我斷定CNAME條目已經生效。但是,為了解決這個錯誤,我只閱讀了之後的說明。Gandi 給出的指示告訴我應該執行以下操作:
Gandi 的指示說我應該指出它
gpaas12.dc2.gandi.net.
,即添加 CNAME 行
subdomain 10800 IN CNAME gpaas12.dc2.gandi.net.
代替
subdomain 10800 IN CNAME mygandidomain.org.
…並且,為了授權自己成為域的所有者,我應該刪除其中的任何一個嗎?我應該保留哪一個,以符合 Gandi 的說明添加:
@ 10800 IN TXT “test=s0m3r4nD0mG!bB3ri$hStr1nG” 我還應該添加一個 TXT 條目:
@ 10800 IN TXT "test=s0m3r4nD0mG!bB3ri$hStr1nG"
帶有一些由 Gandi 提供的亂碼隨機字元串。
所以我就這麼做了。由於我不能直接輸入這些行,但必須使用一些輸入 Web 界面,我輸入了一次 TXT 條目值,一次帶引號,一次不帶引號,子域(輸入
subdomain.myrootdomain.name.
“主機”輸入欄位)和根域(輸入myrootdomain.name.
到“主機”輸入欄位),只是為了確定,因為我不允許在該輸入欄位中輸入“@”或“*”。我將所有添加和更改的 DNS 條目的 TTL 更改為 300。所以它們應該早就更新了。但是探勘時仍然會發生以下情況:
$ dig txt subdomain.myrootdomain.name ; <<>> DiG 9.10.3-P4-Ubuntu <<>> txt subdomain.myrootdomain.name ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50813 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;subdomain.myrootdomain.name. IN TXT ;; ANSWER SECTION: subdomain.myrootdomain.name. 3599 IN CNAME mygandidomain.org mygandidomain.org. 10799 IN TXT "v=spf1 include:_mailcust.gandi.net ?all" ;; Query time: 52 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Wed Jul 11 05:42:59 CEST 2018 ;; MSG SIZE rcvd: 85
所以 CNAME 似乎仍然指向
mygandidomain.org
,因為我在一開始就設置了它(在將其更改為 之前gpaas12.dc2.gandi.net.
)我不知道這是否不好,因為如果我理解正確的話,它
mygandidomain.org
應該指向託管實例。gpaas12.dc2.gandi.net
(我實際上可以通過 訪問我的 Gandi 託管網站mygandidomain.org
)但是,我想我應該看到我
subdomain.myrootdomain.name
現在添加的任何 TXT 條目。如果我正確理解這些行:
;; QUESTION SECTION: ;subdomain.myrootdomain.name. IN TXT
…這意味著有一個 TXT 條目
subdomain.myrootdomain.name
,但是,它是空的?Gandi 域的 DNS 條目中似乎只有一個非空的 TXT 條目:
;; ANSWER SECTION: subdomain.myrootdomain.name. 3599 IN CNAME mygandidomain.org mygandidomain.org. 10799 IN TXT "v=spf1 include:_mailcust.gandi.net ?all"
…,這與我應該添加到的 TXT 條目無關
myrootdomain.name
。我確實使用提供的字元串值添加了指定的 TXT 條目,一次帶引號,一次不帶引號, for
myrootdomain.name
和 forsubdomain.myrootdomain.name
。關於用於探勘的 TXT 條目的相同結果
myrootdomain.name
(我認為 TXT 條目應該是,根據 Gandi 的說明):;; QUESTION SECTION: ;myrootdomain.name. IN TXT
只有一個空的 TXT 條目?更改現在是否應該尚未生效?
我還通過https://developers.google.com/speed/public-dns/cache的界面在 Google 的公共 DNS (8.8.8.8) 中多次刷新了 CNAME 和 TXT 條目,用於
myrootdomain.name
和subdomain.myrootdomain.name
. 我在這台機器上使用 Google DNS 伺服器作為我的主 DNS。當我
subdomain.myrootdomain.name
使用 Google Chrome 瀏覽器時,我仍然收到錯誤“錯誤 404 Vhost unknown”。- 從 DNS 探勘結果來看,這可能是意料之中的。此錯誤消息來自 Gandi,因此至少 CNAME(togpaas12.dc2.gandi.net
或仍然 tomygandidomain.org
)已在那裡生效。我猜,只有應該有助於授權域所有權的 TXT 條目仍然無法辨識。但奇怪的是,當我
subdomain.myrootdomain.name
使用 Firefox 訪問時,我仍然從我的非 Gandi 域提供商處收到較舊的錯誤消息:“此地址下沒有配置網站。”我的 TXT 輸入輸入有問題嗎?正如我所說,我將它們添加到兩者
subdomain.myrootdomain.name
(可能不符合 Gandi 的說明)以及 tomyrootdomain.name
(可能符合 Gandi 的說明),只是因為我無法輸入“@”或“*”代替,並想確保我包含了預期的條目。而且我還添加了兩次,一次包含引號,一次不包含引號,假設 Gandi 只會選擇正確的條目。我應該刪除其中任何一個嗎?我應該保留哪一個,以符合 Gandi 的說明添加:
@ 10800 IN TXT "test=s0m3r4nD0mG!bB3ri$hStr1nG"
我看不到我的輸入實際上是如何轉化為這些文本行的。
但是
$ dig ....
到目前為止,他們似乎都沒有出現。我不應該看到他們在做的時候出現$ dig ...
嗎?正如我所說,TTL 是 300(起初更長),我做了Google DNS 刷新的事情。感謝您提供有關如何解釋這裡發生的事情的任何提示和技巧。
編輯:它現在工作。不太確定,但我的直覺是我添加的額外 TXT 條目
subdomain.mydomain.name.
在某種程度上與subdomain.mydomain.name.
. 手冊說只為mydomain.name.
而不是添加TXTsubdomain.mydomain.name.
,但正如我解釋的那樣,我“只是為了確定”兩者都做了。我不太確定這就是訣竅,但這是我改變的最後一件事,現在它起作用了。
這個相當長的問題是在 Server Fault 上多次看到的常見誤解的集合。此外,像這樣的問題通常會通過我們可以測試的實際域獲得更詳細的答案。我希望您在閱讀這些內容後對這裡發生的事情有更好的理解:
- >
當我
subdomain.myrootdomain.name
使用 Google Chrome 瀏覽器時,我仍然收到錯誤“錯誤 404 Vhost unknown”。- 從 DNS 探勘結果來看,這可能是意料之中的。這與 DNS 無關:您可以看到 Gandi 的頁面這一事實表明 DNS 已指向他們的伺服器,但他們的 Web 伺服器未配置為辨識它。要連結域,您首先需要從實例控制面板將虛擬主機添加到您的實例。
不在 Gandi 的域的第二步是為子域添加 ,
CNAME
而TXT
在域頂點:@ IN TXT
相當於myrootdomain.name. IN TXT
. 從手冊中可以看出,該TXT
記錄的形式似乎是subdomain=hash
. 如果您給定的記錄確實有test=s0m3r4nD0mG!bB3ri$hStr1n
,那可能是 ment fortest.myrootdomain.name
而不是您的subdomain.myrootdomain.name
. 在這種情況下,您需要從頭開始添加您計劃使用的確切子域。
- >
;; QUESTION SECTION: ;subdomain.myrootdomain.name. IN TXT
…這意味著 subdomain.myrootdomain.name 有一個 TXT 條目,但是它是空的?
不,這是顯示您要查找的內容的問題部分。它不是空的,它只是沒有結果。結果在答案部分。它不是空的:
;; ANSWER SECTION: subdomain.myrootdomain.name. 3599 IN CNAME mygandidomain.org mygandidomain.org. 10799 IN TXT "v=spf1 include:_mailcust.gandi.net ?all"
- >
我將所有添加和更改的 DNS 條目的 TTL 更改為 300。所以它們應該早就更新了。
查詢被記憶體
TTL
幾秒鐘。如果之後更改 TTL 時間,它不會影響已記憶體的查詢。它最初被記憶體了10800
幾秒鐘,即 3 個小時,其中這3599
幾秒鐘是在上次編輯您的問題時留下的。如果您需要檢查記錄是否在您的權威名稱伺服器上更新,您必須直接對它們執行查詢(替換
NS
為您的域的實際值):dig subdomain.myrootdomain.name A @authoritative1.example.com dig myrootdomain.name TXT @authoritative1.example.com
- 如果您
TXT
在已經有記錄的子域上添加CNAME
記錄,它不起作用是正常的:它會顯示TXT
來自規範名稱,而不是,就像在您的結果中一樣。如果主機名有CNAME
記錄,則它不能有其他類型的其他資源記錄。想知道為什麼嗎?我有一個答案,而且 AndrewB 對一個規範問題更加詳細。