李戰國, 劉向東, 王興偉
(1.平頂山學院,河南平頂山467002;2.東北大學 信息科學與工程學院,遼寧 沈陽110004;3.大連民族學院非線性信息技術研究所,遼寧大連 116600)
在服務器部署上,很多單位都沒有自己的域名服務器而使用域名提供商或上級單位提供的域名服務。由于業務的類型及規模的不斷變化,應用服務器的域名、IP地址及服務端口號在不斷發生變化。如果每次變化就要對這些參數在域名提供商那里修改對于域名提供商來說可能是一個不可接受的負擔,如果不修改對于單位的信息發布來說可能是災難性的損失[1]。如何解決這一矛盾是服務器管理的一個重要問題。本文提出設置自己的域名代理服務器,使用301重定向技術解決在應用服務器的IP地址及服務端口號等發生變化(不論是不是默認端口)的情況下不需要修改外部的域名服務器的內容,只修改自己的域名代理服務器的映射關系就可以實現對外的訪問域名不變,從而實現對外是一個穩定的域名體系[2]。
在“Windows網絡架構”[3]課程上,一般來說各種網絡服務器配置實驗都是分別進行的,其目的是給學生一個清晰的概念。但是在實際應用中各種服務器是綜合應用的,因此由只注重服務器的功能配置轉向更加復雜的服務器應用部署,這就要使用相應的多種服務器綜合管理技術來實現。本文提出的301重定向技術就是實現復雜服務器部署的技術之一,它可以實現Web服務器、DNS服務器、代理服務器的功能配置,實現綜合服務器應用實驗。在實現設備與環境要求上很簡單,在實驗室中使用模擬器技術每一位學生只需要使用一臺PC機及Windows等操作系統就可以滿足實驗的要求,在一般的服務器實驗室都可以實現。
在網站建設中,經常會遇到網站IP地址或域名的調整、改變網頁目錄結構、網頁被移到一個新地址等情況。在這些情況下如果不做域名重定向,則用戶收藏夾或搜索引擎數據庫中舊地址只能讓訪問客戶得到一個404頁面錯誤信息(無法顯示網頁);再如某些注冊了多個域名的網站,也需要通過域名重定向讓訪問這些域名的用戶自動跳轉到主站點。
常用的重定向方式有:
(1)301 redirect。301重定向是一種永久性轉移(Permanently Moved)。301重定向是網頁更改地址后對搜索引擎最友好的方法。只要不是暫時域名轉移,建議盡量采用301重定向技術來實現[4]。
(2)302 redirect。302重定向代表暫時性轉移(Temporarily Moved),一般使用在臨時域名重定向環境,當然,也有少數Black Hat SEO(黑帽搜索引擎優化)應用這項技術進行作弊。使用這項技術缺點是:即使網站客觀上不是spam(作弊,散布垃圾廣告消息等),也很容易被搜尋引擎容易誤判為spam而懲罰。
(3)meta fresh。這種方式在以前比較流行,不過現在已很少使用。其具體實現是通過在網頁中加入meta指令,在特定時間后重定向到新的網頁,但如果延遲的時間太短(約5 s之內),會被判斷為spam。
在不同的系統及技術下,301重定向的實現方法不同。為了適應多種平臺與技術的應用,下面簡單介紹一下在不同平臺及技術下的301重定向技術。
1.2.1 IIS服務器實現301重定向
打開Internet信息服務管理器,在欲重定向的網站上選擇屬性→主目錄,在“此資源的內容來自”中選擇第三項“重定向到URL”,并且在地址欄中輸入重定向的IP地址或域名。選中“資源的永久重定向”。配置界面圖見圖1,在實驗中就采用這種配置方式。

圖1 IIS 301重定向配置
在輸入重定向到網址的時候請注意,如果在網址中要傳遞目錄及參數信息,則一般在重定向地址后加SQ 參數,如 http://www.test.comsq。S是將請求的初始URL后綴(目錄及文件等)傳遞給新的URL;Q是將初始URL的參數(如query string)傳遞至新的URL,包括問號[5]。如果不想使用參數方式,可以在重定向到的地址欄中直接輸入完整的域名目錄及參數。然后選中“上面輸入的準確的URL”及“輸入的URL下的目錄”即可。
1.2.2 Apache服務器實現301重定向
在Apache中,通過修改文件.htaccess可以實現很多強大的服務控制功能,301重定向只是其中的功能之一。301重定向示例如下:
(1)將當前網站重定向到一個新的網站。redirect permanent/http://www1.test.com/(將當前網站根目錄下內容重定向到 http://www1.test.com/)。
(2)將當前網站的一個網頁重定向到另一個帶參數的網站頁面中。redirect permanent/index.php http://www.test.com/index.php?stu=zhangsan(將網 頁index.php 重定向到 http://www.test.com/index.php?stu=zhangsan)。
在不同的編程語言環境下都可使用301重定向技術實現域名的重定向功能。雖在不同的編程語言中使用的命令格式不同,但301重定向基本上都使用了參數301 Moved Permanently來聲明永久重定向,使用Location參數聲明重定向的目的地。詳見文獻[4]。
在服務器DNS動態管理實驗中需要使用DNS服務器、動態DNS代理服務器、應用服務器及驗證客戶端等[6-8]。網絡拓撲圖如圖2所示。

圖2 網絡拓撲圖
圖2中DNS服務器是單位租用的商業DNS服務器,Web服務器是單位的應用服務器,Proxy是單位的動態DNS代理服務器。Client是外網要訪問單位應用服務器的網絡客戶。
為了簡化實驗過程,我們將各服務器及客戶端的IP地址設置為同一網段的IP地址。它們分別為:驗證客戶端 Client:192.168.210.163/24;域名服務器 DNS:192.168.210.222/24;域名代理服務器 Proxy:192.168.210.181/24;應用服務器 web1-3:192.168.210.200-202/24。
在客戶訪問應用服務器時,其訪問過程如下:
(1)客戶機使用域名方式通過DNS解析需要訪問的應用服務器web1-3的IP地址,在客戶端輸入應用服務器的域名http://web1.test.com/等訪問應用服務器。
(2)商業DNS服務器給單位用戶建立web1.test.com,web2.test.com,web3.test.com 共 3 個應用服務器DNS域名,但它們的IP地址不是指向應用服務器的真實 IP 地址,而是全部指向 192.168.210.188——單位的DNS代理服務器Proxy的IP地址,主要目的是實現相對固定的域名解析服務,隱藏應用服務器可能的IP地址及端口的變化。
(3)DNS代理服務器Proxy是一個執行301重定向的Web服務器。主要作用是將DNS服務器解析的不同的網站根據不同的網站主機頭解析到真正的應用服務器上,以完成到應用服務器的重定向工作。
(4)根據代理服務器的301重定向,客戶端得到真正的應用服務器的域名或IP地址直接訪問應用服務器,得到最終的結果。其訪問界面見圖3。
圖中驗證客戶端訪問 http//web3.test.com/,通過DNS服務器解析到的 IP 地址是192.168.210.188,在該服務器上使用301重定向技術,將該網站重定向到http://192.168.210.202:202/這個非默認端口的 Web應用服務器Web3。從驗證圖示上先看到一個http://web3.test.com/的域名訪問,然后立即看到一個http://192.168.210.202:202/的 301 重定向的 web3的IP地址(域名)。說明DNS代理服務器正確地執行了301重定向,且得到了該網站的正確內容見圖3。

圖3 客戶端訪問http://web3.test.com/界面圖
虛擬機(VM)支持多操作系統并行運行在單個物理服務器上的系統,能提供更加有效的底層硬件使用。在虛擬機中,中央處理器芯片從系統其他部分劃分出一段存儲區域,操作系統和應用程序運行在“保護模式”環 境 下[9-11]。 常 用 虛 擬 機 軟 件 有:VMware Workstation和Oracle VM Virtual Box等,本文使用開源虛擬機軟件 Oracle VM Virtual Box 4.1.6 實現[12]。
在Oracle VM Virtual Box構建虛擬機的過程中,有些過程容易出現錯誤而使實驗無法進行下去。為了保證實驗的正常進行,下面對創建虛擬機的幾個關鍵過程結合配置界面進行介紹。
2.2.1 創建虛擬機
啟動Oracle VM Virtual Box虛擬機軟件,選擇新建(以創建 Windows XP為例),然后輸入名稱為“XP”,選擇系統類型為“Microsoft Windows”,版本為“Windows XP”,界面見圖4。本實驗中我們在一個物理計算機上創建DNS(Windows 2008)、DNS代理服務器Proxy(Windows 2003)及應用服務器Web(Windows 2003)共3個虛擬機,客戶直接在物理計算機上訪問。同時開啟3個虛擬機運行正常,驗證正常。
2.2.2 虛擬磁盤文件格式選擇
在Oracle VM Virtual Box 4版本之后支持更多的虛擬磁盤文件格式,以方便與其他虛擬機軟件交換使用虛擬機文件,其選擇界面見圖5。
在虛擬磁盤文件類型選擇上有四種選擇:第一項VDI是Oracle VM Virtual Box系統使用的虛擬磁盤文件格式;第二項VMDK文件是VMware Workstation的文件格式;第三項VHD是Microsoft Virtual PC 2007和Microsoft Virtual Server 2005以及Hyper-V使用的虛擬磁盤文件格式;第四項HDD文件是在Mac、Windows及Linux系統下都能夠打開的通用虛擬磁盤文件格式。如果你的計算機上只有Oracle VM Virtual Box虛擬軟件,直接選擇第一項即可。
2.2.3 虛擬機系統設置

圖4 創建虛擬機

圖5 虛擬機磁盤格式選擇
在虛擬機的系統設置上主要進行主板、處理器設置等,界面圖見圖6。在主板設置中首先要根據物理機及虛擬系統的需求設置內存及虛擬硬盤的大小,一般可以取默認值,也可以根據你的物理內存的大小及分區可用磁盤空間的大小選擇虛擬機的內存128~1024MB,硬盤8-32GB。在硬盤空間分配上一般采用動態分配方式。在啟動順序選擇上,一般選擇先硬盤,后光驅的原則,這樣可以避免由于光驅中有安裝文件反復安裝的情況。

圖6 虛擬機系統選擇
2.2.4 虛擬機安裝文件來源選擇
在虛擬機的安裝過程中,操作系統安裝文件來源一般有兩種:光盤安裝盤及安裝壓縮包ISO安裝文件。如果是光盤,則安裝文件來源直接選物理光盤即可,如果是ISO文件,選擇虛擬光盤文件。
2.2.5 虛擬機網絡選擇
在網絡選擇上主要進行虛擬機的網卡連接方式的選擇。可以選擇的類型有:橋接、NAT、主機及內部網絡等。本實驗中使用同一個網段的IP地址實現各虛擬機的互相訪問,因此網絡連接方式選擇橋接模式,網卡直接選擇物理網卡,配置界面見圖7。

圖7 虛擬機網絡選擇
該模式的主要好處是不需要路由器的參與各個虛擬機之間就可以相互通信,并且各虛擬機可以直接通過物理網卡訪問外網。如果需要可以選擇其他模式,也可以選擇多塊網卡進行配置以滿足系統需求。
隨著網絡規模擴大,服務器的功能增強,各種網絡服務器的性能要求也在不斷提高。因此在服務器部署上有很多新技術,如服務器集群[13-14]、云計算[15]、智能路由[16]等在服務器部署上得到廣泛的應用。
在本實驗中,為了減少設備使用,簡化實驗環境,使用一臺PC機,安裝3臺虛擬機實現DNS服務器、DNS代理服務器及應用服務器。實驗計算機配置為:CPU E8400,3 GHz,內存 3 GB,操作系統 Windows XP。
2.3.1 DNS 服務器配置
商業DNS服務器的配置可以根據客戶需求進行配置與管理。實驗中使用Windows 2008自帶的DNS服務器進行配置,配置結果見圖8。

圖8 DNS服務器配置
在DNS管理器中首先建立一個標準正向區域test.com,在該區域下建立三個主機,主機名分別是web1,web2,web3,它們的 IP 地址都是 192.168.210.181,即指向單位的DNS代理服務器。反向區域根據需要建立,在該實驗中沒有建立反向區域。
2.3.2 DNS 代理服務器配置
在DNS代理服務器上建立三個Web網站對應三個應用服務器。在三個Web網站中使用301重定向技術將網站重定向到三個應用服務器的IP地址及端口或域名及端口及參數等。
在一個IIS下可以采用多種技術同時建立多個Web網站,如多IP地址、多端口、多主機頭技術等。假如要求在該服務器下只有一個IP地址,并且只能在默認端口(80端口)下運行多個Web網站,那么就要配合DNS技術使用多主機頭技術來區分多個網站,這就是我們在DNS服務器上配置多個域名到代理DNS服務器的同一個IP地址的目的之一。通過DNS傳遞的IP地址可以找到DNS代理服務器,通過客戶端傳輸過來的主機頭(域名)可以區分不同的主機,進而使用301重定向技術找到真正的應用服務器。
在增加Web站點的過程中,要確定IP地址、端口號及主機頭等參數,其配置界面見圖9。

圖9 web1網站主機頭配置
圖9是增加web1.test.com的配置界面,在IP地址上使用了DNS代理服務器的IP地址,端口號使用了默認端口80,這些參數web2及web3都是相同的。唯一不同的是網站的主機頭,web1的是 web1.test.com,其他兩個網站的主機頭分別為 web2.test.com,web3.test.com。
在web1的屬性配置中并沒用給該網站設立默認主頁,而是使用301重定向功能將網站重定向到真正的應用服務器,其界面圖見圖1。注意,在重定向配置中使用了重定向到web1應用服務器的IP地址及非默認端口200,根據需要也可以重定向到應用服務器的域名及端口號,甚至帶參數重定向。這樣即使內部應用服務器使用非默認端口在外部也可以使用默認端口來訪問,增加了內部應用服務器部署的靈活性。其他配置從略。
2.3.3 應用服務器配置
在應用服務器配置上,商業應用一般使用獨立的具有不同IP地址的服務器來建立不同的網絡應用服務器,并且要使用各種腳本技術及數據庫技術實現復雜的服務功能。
為了簡化實驗,在試驗中使用了一臺虛擬機配置多個 IP 地址(192.168.210.200-202)實現多個應用服務器的配置。首先在虛擬機網卡中配置多個IP地址192.168.210.200-202,在 IIS 網站默認文件夾(C:Intpubwwwroot)下新建web1~web3文件夾,在對應的文件夾下建立Default.htm默認主頁。在默認主頁中簡單添加說明性文字如圖3所示。
在虛擬機的IIS下共配置了三個應用發生器web200、web201、web202 分別對應 web1.test.com,web2.test.com,web3.test.com,其配置界面見圖 10。三個應用Web站點的IP地址及端口號分別為192.168.210.200:200,192.168.210.20,1:201,192.168.210.202:202,可以根據需要而改變,但改變的參數要與DNS代理服務器的參數一致。在Web站點屬性上只設置了測試要求的參數,如端口號由默認的80改為200等,不同Web服務器選擇了不同的IP地址,其他參數基本上使用了默認參數。

圖10 應用服務器web1.test.com屬性配置
實驗驗證采用物理計算機作為驗證客戶端與虛擬機通信及訪問Web服務器驗證。首先要實現各虛擬機與物理計算機的連通,在各計算機能夠正常通信的情況下,再驗證DNS代理服務器的301重定向功能。
(1)連通性驗證。將客戶機的DNS配置為本實驗的 DNS 服務器的 IP 地址(192.168.210.181),由于驗證客戶機與各虛擬機在同一個網段,默認網關不必配置。首先在客戶機上PING各服務器IP地址,結果顯示全通,然后PING各Web服務器域名返回的都是192.168.210.181,說明 DNS 服務器解析正確。
(2)服務器重定向驗證。在客戶機的瀏覽器上分別訪問 web1.test.com,web2.test.com,web3.test.com。其中web3.test.com訪問結果見圖3,其他訪問結果類似,從略。這一結果說明DNS代理服務器的301重定向結果正確,達到了其功能要求。
本實驗是“Windows網絡架構”的一個綜合實驗,希望通過本實驗使學生能夠理解各種網絡服務的工作關系及配置方法,加強各種網絡服務的綜合應用能力。該實驗不僅能夠加深學生對網絡服務的認識,并且為在復雜網絡環境下部署應用服務器提供了一種良好的技術實現方式,具有一定的應用價值。
該實驗雖然實現了應用服務器DNS的動態管理,但是在實際環境下的運行效果如何,特別是多服務器的重定向的性能如何還沒有進行研究。在以后的研究中要對服務器重定向的性能,如DNS代理服務器的轉發性能及穩定性要作進一步的研究。
(References):
[1] 邢 麗,李桂蘭,王韌峰.中小型企業WEB服務器集群的配置與管理[J].吉林工程技術師范學院學報,2010,36(3):38-39.
[2] 王艷峰,王 正,閻保平.一種基于域名錯誤的DNS重定向協議[J].計算機系統應用,2010,19(7):50-53+41.
[3] 微軟公司(Microsoft).網絡基本架構的規劃和維護——以Windows Server 2003為例[M].北京:高等教育出版社,2005.
[4] 百度百科.301 重定向[EB/OL].http://baike.baidu.com/view/2173220.htm,2011-12.
[5] 柴文磊,李 超.301重定向在地址轉換中的應用[J].信息安全與技術,2010(10):41-42.
[6] 王艷峰,王 正,閻保平.一種基于域名錯誤的DNS重定向協議[J].計算機系統應用,2010,19(7):50-53+41.
[7] 彭 勇,范樂君,陳冬青,等.基于透明代理的域名系統隱患分析與防御策略[J].清華大學學報(自然科學版),2011,51(10):1318-1322,1328.
[8] 王 彬,劉百祥,宓 詠.基于URL重定向的第三方接入系統的設計與實現[J].實驗技術與管理,2011,28(5):262-264+271.
[9] 邢仲璟,林丕源.淺談虛擬機在網絡實驗課程中的作用[J].實驗室研究與探索,2007,26(12):304-306.
[10] 楊志彬.高校實驗教學用服務器資源虛擬化部署[J].實驗室研究與探索,2010,29(7):75-78.
[11] 許 娜.基于VMware ESX Server的實驗教學平臺建設[J].實驗室研究與探索,2011,30(9):202-205.
[12] Oracle VM Virtual Box User Manual Version 4.0.6[EB/OL].http://www.virtualbox.org
[13] 崔榮波,許曉兵,陸 穎.一種虛擬化的服務器集群模型[J].計算機系統應用,2011,20(3):173-177+213.
[14] 林天山.DNS服務器集群解決方案[J].電信技術,2010(1):83-87.
[15] 游小明.新型云計算服務器的設計與實現[J].計算機工程,2011,37(11):40-42.
[16] 吳許俊.基于多ISP接入的網關架構與實現[J].計算機與現代化,2010(10):147-149.