歷史和工作原理
在引入DNS(Domain Name System,域名系統)之前,網路中的主機是將容易記憶的域名映射到IP位址並將它保存在一個共享的靜態檔案hosts中,再由hosts檔案來實現網路中域名的管理。最初Internet非常小,僅使用這個集中管理的檔案就可以通過FTP為連入Internet的站點和主機提供域名的發布和下載。每個Internet站點將定期地更新其主機檔案的副本,並且發布主機檔案的更新版本來反映網路的變化。
但是,當Internet上的計算機迅速增加時,通過一個中心授權機構為所有Internet主機管理一個主機檔案的工作將無法進行。檔案會隨著時間的推移而增大,這樣按當前和更新的形式維持檔案以及將檔案分配至所有站點將變得非常困難,甚至無法完成,於是便產生了DNS伺服器。
瀏覽器訪問網站,要首先通過DNS伺服器把要訪問的網站域名解析成其指定的IP位址,之後,瀏覽器才能對此網站進行定位並且訪問其數據。
作業系統規定,在進行DNS請求以前,先檢查系自己的Hosts檔案中是否有這個域名和IP的映射關係。如果有,則直接訪問這個IP位址指定的網路位置,如果沒有,再向已知的DNS伺服器提出域名解析請求。也就是說Hosts的IP解析優先權比DNS要高。
存儲位置
hosts檔案在不同作業系統(甚至不同Windows版本)的位置都不大一樣,
以下為hosts檔案在不同系統中所處的目錄
Windows XP/2000/Vista/7/8/8.1/10:C:\windows\system32\drivers\etc\
(XP系統無法使用bat批處理命令直接替換hosts,需手動替換後重新插拔網線或重啟方使hosts生效)
(可更改\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath項修改host位置)
Windows 95/98/Me:%WinDir%\ (其實就是C:\WINDOWS)
Linux及其他類Unix作業系統:/etc/
Mac OS 9及更早的系統:System Folder: Preferences或System folder(檔案格式可能與Windows和Linux所對應的檔案不同)
Mac OS X:/private/etc(使用BSD風格的hosts檔案)
OS/2及eComStation:"bootdrive":\mptn\etc\
Android:/system/etc/
Symbian第1/2版手機:C:\system\data\
Symbian第3版手機:C:\private\10000882\(能使用兼容AllFiles的檔案瀏覽器訪問。)
iPhone OS:/etc/(需要越獄)
iPad OS:/private/etc
webOS:/etc
檔案內容
Windows版本原始host檔案內容:
如果你懷疑你的hosts檔案 被病毒 木馬修改,可複製以上內容修復hosts 檔案。
值得一提的是#後都是注釋,所以清空hosts檔案對系統正常運行並沒有什麼影響。
具體作用
來看一下Hosts檔案的工作方式以及它在具體使用中起哪些作用。
1、加快域名解析
對於要經常訪問的網站,我們可以通過在Hosts中配置域名和IP的映射關係,提高域名解析速度。由於有了映射關係,當我們輸入域名計算機就能很快解析出IP,而不用請求網路上的DNS伺服器。
2、方便區域網路用戶
在很多單位的區域網路中,會有伺服器提供給用戶使用。但由於區域網路中一般很少架設DNS伺服器,訪問這些伺服器時,要輸入難記的IP位址。這對不少人來說相當麻煩。可以分別給這些伺服器取個容易記住的名字,然後在Hosts中建立IP映射,這樣以後訪問的時候,只要輸入這個伺服器的名字就行了。
3、禁止網站(域名重定向)
有很多網站不經過用戶同意就將各種各樣的外掛程式安裝到你的計算機中,其中有些說不定就是木馬或病毒。對於這些網站我們可以利用Hosts把該網站的域名映射到錯誤的IP或本地計算機的IP,這樣就不用訪問了。在WINDOWS系統中,約定 127.0.0.1 為本地計算機的IP位址, 0.0.0.0是錯誤的IP位址。
如果,我們在Hosts中,寫入以下內容:
127.0.0.1要禁止的網站A的域名
0.0.0.0要禁止的網站B的域名
這樣,計算機解析域名A和 B時,就解析到本機IP或錯誤的IP,達到了禁止網站A 和B的目的。
4、順利連線系統
對於Lotus的伺服器和一些資料庫伺服器,在訪問時如果直接輸入IP位址那是不能訪問的,只能輸入伺服器名才能訪問。那么我們配置好Hosts檔案,這樣輸入伺服器名就能順利連線了。
5.虛擬域名
很多時候,網站建設者需要把”軟環境“搭建好,再進行上傳調試。但類似於郵件服務,則需要使用域名來輔助調試,這時就可以將本地 IP 地址與一個”虛擬域名“做地址指向,就可以達到要求的效果,且無需花費。如:
127.0.0.1 網站域名
之後在瀏覽器地址欄中輸入對應的網站域名即可。
檔案修改
1、修改hosts檔案:
一般打開hosts檔案裡面都會有個示例,按照其格式修改即可
比如以下內容:
127.0.0.1 abc.cn
即代表打開abc .cn這個網址將解析到127.0.0.1,ip地址與網址間至少有一空格,當然建議通過按 [Tab]鍵來編輯,即美觀又不容易編寫失誤;這也就是通過解析到本地回還地址禁止一些不友好的網站或ip了,當然在前面加一個#號即可暫時將這一行讓它失效。
在修改HOSTS檔案時候,還常常遇到修改保存後無效的情況,這裡要提醒大家注意的一點:很多人是寫在最後行,寫完最後一行後在沒有回車的情況下,這一行是不生效的。一定要記得回車。建議大家遵循這樣的習慣:“ip地址+Tab+域名+換行” 添加記錄。
2、hosts檔案的系統屬性:
hosts檔案默認具有隱藏屬性,系統默認設定情況下是看不到的,當然進到這個檔案除了直接輸入路經也是無法看到了。解決辦法:打開我的電腦->點擊工具->資料夾選項->查看->取消勾選隱藏受保護的系統檔案->確定即可。
修改後無法保存:
在Hosts檔案上麵點右鍵->屬性->把唯讀屬性去掉->確定,即可保存。
3.Hosts在UAC安全策略無法打開或編輯:
遇到windows VISTA 或者 windows 7 作業系統無法打開和編輯的情況,提示:“不能創建檔案” 或者 “檔案操作失敗”等提示,是因為安全機制UAC造成的,你可以使用以下方法解決:
按著Shift鍵,然後Hosts檔案上面右鍵, 以管理員方式運行即可。
4.一個比較便捷的打開hosts檔案的方法
新建一個txt檔案,在你其中輸入:
notepad "%SystemRoot%\system32\drivers\etc\hosts"
ipconfig /flushdns
exit 保存,將擴展名改成成.bat,之後雙擊這個bat檔案就可以自動打開hosts檔案進行修改了。
5.Android中的Hosts
由於某些原因,可能需要修改 hosts 檔案指定域名到對應的 IP 地址。Android 是基於 Linux 的系統,與 Linux 類似,通過 hosts 檔案來設定。
在 Android 下,/etc 是 link 到 /system/etc 的,我們需要修改 /system/etc/hosts 來實現。但是這個檔案是唯讀,不能通過 shell 直接修改。可以通過連線到 PC 上使用 adb 來修改。步驟如下:
1、獲得root許可權:adb root
2、設定/system為可讀寫:adb remount
3、將hosts檔案複製到PC:adb pull /system/etc/hosts
4、修改PC機上檔案
5、將PC機上檔案複製到手機:adb push /system/etc/hosts
如果要查看是否修改成功,可以在PC上執行adb shell,運行cat /system/etc/hosts;或者在手機上運行cat /system/etc/hosts。
在Android系統中,hosts檔案格式有一點與PC機Linux不同:不能在一行中一個IP對應多個域名,比如:
127.0.0.1 host1.example.com host2.example.com host3.example.com
在大多PC機Linux系統是合法的,但不能在Android上起作用,需要拆成每個域名一行才能使用:
x.x.x.x host1.example.com
x.x.x.x host2.example.com
x.x.x.x host3.example.com
檔案更新
1.訪問googlecode網站獲得Google Hosts的最新檔案 ,這裡提供了最新的映射IP位址,將獲得的hosts檔案附加到自己電腦的hosts中就可以了;
2.利用smarthosts.exe程式,下載smarthosts.exe程式,下載後雙擊這個程式會生成3個檔案 hosts、lists和srvlist注意使用這個經常會彈出錯誤,這個時候不要著急,過幾分鐘後可以重試。