phpcn_u165032017-08-31 12:15:28
在網路上搜了半天,終於找到了答案
作者:Panfeng Li
連結:https://www.zhihu.com/question/40971769/answer/97927205
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者授權,非商業轉載請註明出處。
一般在LINUX下修改完/etc/hosts檔案都會立即生效的,即便偶爾不生效,只要重啟一下network服務就可以了。但windows卻是會遇到這樣的問題,而且在不同版本的系統中還略有差別。在解決問題之前,讓我們先了解一下dns和hosts的知識。我們知道在造訪網站時,首先要透過DNS伺服器把要造訪的網域名稱解析成IP位址後,我們才能在瀏覽器中看到所造訪網站的頁面內容。根據Windows系統規定,在進行DNS請求以前,Windows系統會先檢查自己的Hosts檔案中是否有網路網域的對應關係。如果有,則呼叫這個IP位址映射,如果沒有再向已知的DNS伺服器提出網域解析,也就是說Hosts的請求等級比DNS高。首先要知道hosts文件的位置,在xp,2000,win7等系統中找到如下位置C:windowssystem32driversetc,我們可以看到hosts文件,注意hosts文件是ascii編碼方式,而且是沒有後綴名的。其二正確修改hosts文件,一般hosts文件裡面都會有個範例,例如 64.233.162.83 http://google.com 即代表開啟http://google.com這個網址將解析到64.233.162.83 ,ip位址與網址間至少要有一空格,另外在最後一行書寫映射時一定要加上回車再儲存以避免最後一行不生效,如果某筆記錄暫時不用,只需要在它前面加一個#號即可。
hosts文件預設具有隱藏屬性,系統預設設定情況下是看不到的,解決辦法是打開我的電腦-點擊工具-資料夾選項-查看-取消勾選隱藏受保護的系統文件,確定即可。如果修改後無法儲存,請在Hosts檔案上麵點右鍵-屬性-把唯讀屬性去掉即可儲存。在修改HOSTS檔案時候,還常常遇到修改儲存後無效的情況,我們可以使用ipconfig /flushdns指令來刷新dns緩存, 或者也可以在管理工具中開啟服務,找到DNS Client將其停用並改為手動模式在修改完hosts啟動。注意:當你在打開瀏覽器的情況下修改hosts文件時,關閉瀏覽器時系統才會釋放掉hosts文件佔用的那部分內存,我們再次打開瀏覽器訪問就發現已經生效了。如果遇到windows 7 作業系統無法開啟和編輯的情況,一般是因為安全機制UAC造成的,你可以按著Shift鍵,然後Hosts檔案上面右鍵,以管理員方式運行即可。或修改Hosts檔案權限,將目前登入的帳號加入到安全性選項卡中,賦予寫入權。