這攏嘛係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這一項設定:
一般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了,這樣子你就可以連到你的新站了,但是別人呢?只有等待囉!等久了就會是你的,嘻嘻!
原來如此,那時在急DNS的時候都有查到這個指令,不過現在已經好了。
有些事真的是急也沒有用的
這個問題以前玩論壇有遇到過!
不過高登大你太晚出現了-.-
希望以後還有機會用到
還好我的問題已經得到解決了@@
原來dns.seednet.net.tw更新比較慢 = =
國內就中華電信的更新最快,其他的都要等一下囉!
我之前搬家的時候
撇除設定的問題不說
DNS 的問題也讓我整整掛了兩天 >"<...
不過還是得痛一次 ~~ 呵呵
@@"
最好新站舊站同時存在一段期間,這樣子別人就都可以連到
看來之前在國外買網址附的DNS服務還不錯 😛
TTL預設都是300,上次搬完家沒多久就對應到新IP了
也要多謝老爺的搬家文,要不然我搬家一定卡很久 XDDD
因為國外的設備好頻寬夠,所以可以設這麼低
看来需要花点时间
詳細的DNS說明指導文章
ISP VS DNS VS DB 息息相關
是只要有一個沒搞好就不正常了沒錯!
恭喜高登大大新居落成~~
DNS真是一個難搞的東西
最近轉來轉去
都不知轉到那去了
搬家真是件麻煩的事
高老大現在這部落格是外在國外嗎?
速度上還蠻不錯的
先暫時放到hostmonster,順便測一些東西
這真是篇好文,詳細與深入淺出.
讓像我這種大外行都能受益匪淺.
我個人十分喜歡這種類型的文章.
寫的太好了!
嘻嘻!有點不好意思!
謝謝你的讚美!