如果後續想接收本站有關網站架設網站資安特價優惠活動等訊息
您可以透過以下表單留下您的電子郵件信箱來訂閱我們的電子報

搬完家請等一下

這攏嘛係DNSㄟ陰謀啦

這幾天一堆朋友的網站都在搬家,還好之前高登剛好發了一篇搬家文讓大家有一些可以參考的資料,但是不管是同一家主機商或是搬到別家甚至是國外主機,很多人搬完了就以為都沒事了,結果跑出來一堆問題。

原來很多人不知道網站搬家不是馬上生效的,所以急得在那裡跳腳!甚至有人說因為受不少了而用了一些「旁門左道」的方法,結果是越弄越糟!而這一切的關鍵就在DNS的更新機制,所以就還高登來說個明白吧!

啥米是DNS?

DNS是好幾種名稱的縮寫:Domain Name Server, Domain Name System, Domain Name Service, Domain Name Space都簡稱DNS,所以要注意看是在講什麼喔,不過不管是哪一個所針對的對象都是Domain Name(網域名稱)這個東西,所以我們先來看一下DNS的由來吧:

要講到DNS就一定會講到IP,這是一體的兩面,因為在網路上的識別主要是以IP為主角,但是一般人上網你叫他在網址列打「66.147.240.162」這一串的數字來連到高登工作室那是不可能的,所以才會發展出DNS這樣子的機制出來,這個機制讓你用生活化的英文(或是國內在推的中文)來記憶網站的網址,就好像你的手機裡面有一大堆的人名,但是你用久了應該都忘了某某人的電話是幾號了!(我就真的都沒在記兒子女兒的手機),所以現代人手機掉了可是大事一件,因為你的親朋好也友也會跟著掉了。

所以我們簡單的講:DNS就是網站的查號台,告訴你哪一個網站的IP是什麼。而你的網站搬家就像是你的手機換了號碼一樣,別人還是可以用原來的網址連到你的新號碼(IP),但是你先要去通知DNS說你已經換號碼了。

或許你會想:那很簡單嘛,更新一下別人就可以連到我的新站了!但是事情沒有你想的那麼簡單,因為問題出在:

DNS更新機制

因為全世界的網路已經龐大到一個前所未有的地步,而這些電腦都是透過網路連結在一起,所以你想你有可能去通知全世界的電腦說你已經搬家了嗎?說算是可以應該也不是單一台伺服器有辦法完成的,所以DNS在一開始的時候就設計出一個層層控管的機制,而這個機制的主要目的是安全、分工和備援,就是說要把「域名轉IP」的工作分散到許多的主機來協同運作,而每一台DNS主機則是針對他的上一層DNS主機負責,到最後歸總到少數幾台的「root」主機。

而為了減少在網路上的DNS流量,所以每一台主機都會有暫存(cache)曾經被查詢過的DNS資料,如果這筆資料是最近才更新的,那這台主機就不會送出往上查詢的Query,而是告訴你他現在Cache中的IP位址,這樣子DNS的效率才會高。

所以當你你設立一個網站時,因為大家的DNS都沒有你的Cache資料,因此就一定會送出查詢,所以新站以現在的網路速度最多一個小時應該就通了。但是舊站換IP呢?那就不一樣了,因為在每一台的DNS裡面已經都有你的資料Cache了,所以在你搬家的第一時間,不管是哪一家ISP的DNS都不會知道你已經搬家,所以還是會將訪客指向你的舊IP,那什麼時候才會指向新IP呢?決定的因素主要是在:

TTL(Time To Live)

TTL的字面意思就是存活的時間,這就是搬家無法馬上生效的元兇。這一個在DNS主機裡面定義的數字關係到你別人找到你新網站的時間,我們先來看一下在Plesk後台有DNS SOA這一項設定:

DNS TTL設定

一般TTL的預設值都是一天(86400秒),當然你搬家一般不用到一天的時間就可以連到新主機,但是也不會很快,那為什麼不會是一天呢?主要是參考「重新整理Refresh」還有「最小值 Min TTL」這兩項數據,當一筆Cache資料達到Refresh的週期時,DNS主機會送出一個確認的訊號,詢問DNS是否有變更,而如果收到的是有變更的時候,「有可能」就會將你的資料更新,這個跟每一台DNS主機的設定有關,而且是每一家ISP的作法都不一樣,有的收到更新的資料後還會作再三的確認(可能是為了安全的考量),所以一般在網路上的說法是DNS要72小時才能完全更新!真的要那麼久嗎?我就真的遇過而且就在前幾天搬家之後,在等了三天竟然台灣固網的DNS還給我指向舊的IP真是Orz!

如何知道某家的DNS已經更新了?

這個就要一個程式來查詢了,在Windows系統已經有內建這個工具了,請你開啟命令提示字元,輸入下列指令:

nslookup
server 168.95.1.1
gordon168.tw

上面的例子是我要查中華電信的DNS裡面的gordon168.tw資料,如果你要查其他家的就請換一個server的IP,至於其他家的DNS主機我在如何自行診斷無法上網的原因這裡有資料,另外如果你已經知道某一家ISP的DNS資料已經更新了,而你用的ISP還沒有的話,可以按照那一篇的作法先手動設定DNS,然後在命令提示字元執行一下「ipconfig /flushdns」再「ping 網址」,你應該可以看到指向新IP了,這樣子你就可以連到你的新站了,但是別人呢?只有等待囉!等久了就會是你的,嘻嘻!

17 則留言

  1. 看來之前在國外買網址附的DNS服務還不錯 😛

    TTL預設都是300,上次搬完家沒多久就對應到新IP了

    也要多謝老爺的搬家文,要不然我搬家一定卡很久 XDDD

  2. 恭喜高登大大新居落成~~
    DNS真是一個難搞的東西
    最近轉來轉去
    都不知轉到那去了

    搬家真是件麻煩的事
    高老大現在這部落格是外在國外嗎?
    速度上還蠻不錯的

  3. 這真是篇好文,詳細與深入淺出.
    讓像我這種大外行都能受益匪淺.

    我個人十分喜歡這種類型的文章.
    寫的太好了!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料