前些日子,幫人解決一個關於 DNS 設定的問題,其實難度不高,但有時若不小心疏乎了小細節,那麼最終的結果就會天差地遠了。
有時,我們若擁有網域名,但可能網域名是用來與其他服務做結合,例如:Google Apps、Google Search Console、Bing 網站管理工具……等。
這些服務通常會要求申請者,先驗證網域名的擁有權,確認有擁有權之後,才能開始使用服務。多數情況,都可以利用 CNAME 進行驗證,而驗證的方式則是回到 DNS 代管服務商那裡,新增一筆 CNAME 記錄,並將 CNAME 記錄指向特定的伺服器。首先假設我要使用 Google Search Console 的服務,當我在 Google Search Console 加入一個網址(例如:testweb.wawajohn.net)後,Google 會要求我驗證網域名的擁有權,而且可以使用 CNAME 記錄做驗證。
所以,Google 會給我像這樣的資訊:
CNAME 標籤 / 主機:xn7inc5vyjo4.testweb.wawajohn.net.
CNAME 目的地 / 目標:gv-tzwircbwa3trou.dv.googlehosted.com
獲得 Google 所給的資料後,我就要回到我的 DNS 那邊新增一筆 CNAME
不過,各家 DNS 的設定不盡相同,又因為我所提供的 testweb.wawajohn.net,其中的 testweb 屬於 CNAME 記錄,而非一般的 A 記錄。
所以,我在設定時,我先新增一筆 CNAME,CNAME 的 HOST(即主機),我就要設定為:
xn7inc5vyjo4.testweb
然後,把這筆 CNAME 指向到
gv-tzwircbwa3trou.dv.googlehosted.com
設定成功之後,正常來講,去查詢 xn7inc5vyjo4.testweb.wawajohn.net 的 DNS 記錄
應該會得到 gv-tzwircbwa3trou.dv.googlehosted.com 這個目標主機
但這人的情況,很特別,依照我的指示,得到的目標主機,一直都不正確。
後來我再建議,把原本的目標主機
gv-tzwircbwa3trou.dv.googlehosted.com
再改為
gv-tzwircbwa3trou.dv.googlehosted.com.
沒想到,這樣子設定之後,一切就正常運作了。
而細節,就只是差在目標主機最後的小數點「.」
至於最後的小數點,該不該加,其實很難講,以我的 DNS 代管,我不需要加,但有些 DNS 代管,則必須要加。結論是,要看 DNS 代管的網頁設定方式。
至於要怎麼確認我們的設定是不是正確,如果會下 Command 的人,可以用 nslookup 指令查詢,如果不熟,或者懶得敲字的人,則可以利用下面這個線上工具查詢
http://www.kloth.net/services/nslookup.php
大致用法如下:
- 網頁裡有三個欄位,第一欄的 Domain,就打入一開始 Google 給的資料中的第一項「CNAME 標籤 / 主機」的資訊,可包含最後的小數點
- 第二欄的 Server 不用動
- 第三欄的 Query 選擇「CNAME」,再按下「Look it up」
最後,會顯示結果,它們會長得像這樣
xn7inc5vyjo4.testweb.wawajohn.net canonical name = gv-tzwircbwa3trou.dv.googlehosted.com.
如果等號「=」後面的值,與 Google 所給的第二項資訊不同,那麼代表我們的設定是有問題的。