最初想到利用Hosts檔案是基於學校跨網段訪問網頁時用IP地址訪問帶來的不便:學校教學網系統分成四個網段,包括三個學生機房網段和一個辦公室教師用機網段,伺服器沒有使用DNS。辦公室教師機有的開了PWS(個人Web伺服器),教師在同一網段中輸入Host Name(主機名稱)即可順利訪問網頁,但在學生機房要訪問教師Web頁,必須使用IP地址。
Hosts是Windows早期用來建立IP地址和Host name(主機名稱)映射關係的檔案。這樣在客戶機上訪問主機時,只要輸入主機名稱即可。隨著後來DNS概念的引入,Internet網上DNS伺服器的建立,這個檔案已經逐漸被人們談忘。由於Hosts檔案的執行優先順序高於DNS網域名稱解析,為了防止出現Hosts和DNS網域名稱訪問的混亂,在Windows 98中把Hosts改成了Hosts.sam,就是要取消該檔案的網域名稱解析功能。而本文所述恰恰是利用了Hosts檔案的這一功能。
Hosts.sam檔案位於C:/Windows檔案夾中,要使用它的功能,首先要改成Hosts檔案,即把副檔名去掉。用記事本開啟Hosts檔案,首先看見的是微軟對這個檔案的說明。這個檔案是根據TCP/IP for Windows的標準來工作的,規定要求每段只能包括一個映射關係,IP地址要放在每段的最前面,空格後再寫上映射的Host name(主機名稱),如:
127.0.0.1 www.sina.com.cn
#屏蔽新浪網站
192.168.0.250 www.stw.net
#學校內部Web伺服器主機名稱映射
按照上面的方法輸入後,開啟瀏覽器輸入上述兩個網域名稱,卻出現了問題:新浪網仍能正常訪問,不過網頁開啟的速度變慢(沒有被屏蔽),而學校內部網站卻仍然不能正確訪問。偶然在MS-DOS下Ping了一下這兩個網域名稱,卻發現映射已經成立。奇怪,為什麼在DOS命令列下能Ping通,在瀏覽器中卻不能正確映射?
解釋只有一個:就是Hosts設定是有效,是IE瀏覽器讓Hosts設定無效的。
開啟瀏覽器後,筆者對IE的“Internet選項”設定進行了研究,終於發現了問題的癥結所在,並且找到瞭解決的方法。
我校客戶機通過HTTP代理進行上網,因此在瀏覽器裡1所示的設定。去掉“為LAN使用Proxy 伺服器”前面的“√”後,上面的映射在IE中就全部生效了,並且校園網跨網段的網頁可以通過Http://www.stw.net訪問了;但是新的問題又出現了,在瀏覽器中訪問其他Internet網頁時卻顯示無法接通,即此時可以訪問內網,而無法訪問外網。看來用這個方法還是行不通的。那麼能不能不關掉Proxy 伺服器,又能使用上面的映射關係呢?帶著這個問題筆者開啟了“區域網路(LAN)設定”的[進階]選項,開啟“Proxy 伺服器設定”對話方塊(圖2),把在Hosts檔案中要屏蔽的網址加到“例外”所對應的文字框中,[確定]後退出,此時外網可以訪問,屏蔽也產生了作用。
上述問題對於通過單機聯入公網的使用者來說是碰不到的,因為它不需要設定Proxy 伺服器;對於要求用代理串連公網又想屏蔽不健康網頁的區域網路使用者來說,就需要這樣做了。