從外網訪問VMware虛擬機器的Web服務
主機上安裝了VMware,VMware上安裝了Linux或windows虛擬機器。我想讓虛擬機器向外提供Web服務,於是在它上面打開了IIS(Windows)。本文講解如何讓我的主機和外網使用者可以訪問IIS的網站。
我的情景是這樣的:主機(windows 7)位於區域網內,要在主機上VMware安裝windows 7虛擬機器;虛擬機器上安裝Team Foundation Server2010,並向區域網其他使用者提供TFS網站的訪問。這裡分解成幾個步驟。
- 網路拓撲
- 原理說明
- VMware的NAT設定
- 埠轉發(Port Forwarding)
- 路由器和防火牆設定
- 網路測試
網路拓撲
該前提下的網路拓撲有3種主要型別:家庭ADSL、公司區域網和託管機房公網。我的情景是第二種。
原理說明
有了拓撲之後,需要了解 VMware的三種網路連線模式 ,區分橋接(bridged)、NAT和Host-only。橋接模式,可以看成主機與虛擬機器用Hub相連線。NAT是區域網的重要技術,詳細解釋可以看百科。NAT模式,可看成主機是關口,虛擬機器在網路內部,所有與虛擬機器的通訊均要經過關口。Host-only模式,看成主機與虛擬機器是用雙絞線相連的,它們可分別處於獨立的網段。
公司區域網採用域管理,即虛擬機器沒有(申請)在域內,而主機在域內。所以我只能採用NAT模式,否則虛擬機器沒有訪問網路(或被訪問)的許可權。
VMware的NAT設定
- 右鍵點選虛擬機器,選擇“setting”;
- 在左邊欄的Hardware選項卡內選擇Network Adapter;
- 在右邊欄選擇NAT,如下圖:
埠轉發(Port Forwarding)
在完成NAT設定之後,虛擬機器便可以訪問外部網路(區域網其他使用者和Internet)了。但是,從外部網路不能訪問虛擬機器。這是因為NAT對外是遮蔽內部網路細節的。為了實現從外部訪問虛擬機器,則需要設定埠轉發。
- 檢視虛擬機器的IP地址
- 在VMware的選單項Edit下選擇Vitual Network Editor;在上方選定NAT網路,在下方選擇NAT(shared host's IP address with VMs),點選NAT Settings;
- 點選Add新增埠轉發;
Host Port是主機的埠,即從外網訪問主機該埠的請求,均轉發至虛擬機器;
Type指定傳輸協議,這裡添加了TCP和UDP(Http一般只使用TCP);
Vitual Machine IP Address填寫虛擬機器的IP地址和埠;由於這裡需提供Web服務,所以應該填寫Web埠(在windows IIS的網站中設定);
路由器和防火牆設定
- 在外部網路與主機間若有路由器,則需設定埠對映;我的情景下沒有;
- 關閉主機上的防火牆,或者設定防火牆的埠允許規則;
網路測試
- TFS的IIS網站已經搭建好;
- 在區域網其他使用者的計算機上開啟瀏覽器,訪問http://<host's IP address>:host port;
假設主機的IP為10.1.1.1,則在瀏覽器訪問http://10.1.1.1:8080。正常情況下,訪問請求會轉發至虛擬機器,即該請求實際訪問的是http://192.168.75.134:8080。
- 若正常開啟Web網站,則測試通過。
最重要: 若在主機上無法ping通 虛擬機器的IP地址,則注意虛擬機的防火牆是否開啟
linux關閉防火牆:
1) 重啟後生效
開啟: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啟後失效
開啟: service iptables start
關閉: service iptables stop