如果我們在虛擬機器內搭建好伺服器後,希望可以在區域網內的裝置上都能訪問到這個虛擬伺服器,就可以參照以下步驟來操作。其中包括了很多遇到的坑。先說說我的環境是

宿主機:windows 8.1

虛擬機器:vmware+linux centos6.5

伺服器:nginx

1.搭建區域網

我是利用筆記本wifi熱點搭建的區域網。win7及以下版本應該有搭建臨時無線網路的功能可以直接用這個功能,而win8開始這個功能就被隱藏了,可以在命令列輸入netsh wlan set hostednetwork mode=allow ssid=熱點名稱 key=密碼(8位及以上) 然後netsh wlan start hostednetwork 開啟。

或者直接用connectify。我用上面這個方式不知道為什麼手機連熱點的時候獲取不到ip地址,用connectify就可以。

無論用哪個方法都會多出一個這樣的託管網路虛擬介面卡的本地連線


如果不打算連線網際網路在connectify的設定>NAT選項把無Internet時暫停連線的選項取消選中就好。

2.虛擬機器設定

虛擬機器的網路連線方式大致是三種,(1)橋接模式,在這種模式下,虛擬機器相當於與所在物理機同一IP段的獨立計算機,與區域網內的其他計算機是沒有區別的;(2)NAT模式,這種模式下,虛擬機器與所在的物理機單獨組成了一個新的區域網,他們共享接入物理機的IP段;(3)host—only模式,在這種模式下物理機下所屬的所有虛擬機器共同組成一個區域網,他們與物理機之間是斷開的,也就是說物理機和虛擬機器之間是無法訪問的。

如果區域網想要訪問虛擬機器的服務怎麼辦呢?這時候基本上有兩種思路,一種是將虛擬機器的網路連線設定成橋接模式,因為這時候虛擬機器相當於所在物理機同一IP段的獨立計算機,這時候其他的區域網內的計算機當然可以訪問虛擬機器內的服務,一般在虛擬機器的設定裡面找到網路設定,將其設定為橋接模式,藉助虛擬機器的IP就可以實現訪問,但是這麼做訪問速度會非常慢。另外一種比較好的方式就是將虛擬機器的網路連線設定成NAT模式,注意,直接這麼設定區域網內的其他計算機是無法訪問虛擬機器中的服務的,因為區域網內的其他計算機相對於虛擬機器和物理機新組的區域網來說屬於外網,這時候還需要在物理機中對其進行埠對映,這個與區域網中利用路由器對其中某個IP埠進行對映的原理是一樣的,通過這種也可以實現區域網訪問虛擬機器內的服務。(來源http://blog.csdn.net/jiangdianqin/article/details/50365988

我們這裡選用的是NAT模式。

①我們發現宿主機網路連線裡有一個VMnet8

檢視它的IP(直接在屬性裡檢視或者ipconfig都行)

這個ip就是在宿主機在以後新建出來的虛擬機器與宿主機之間的局域網裡的ip地址。記住這個ip地址。

②開啟虛擬機器>編輯>虛擬網路編輯器

選擇VMnet8那個選項,最下面子網ip改成和剛剛那個ip處於同一網段內。

比如我這裡是192.168.139.1 就把虛擬機器的改成192.168.139.0

DHCP設定裡還可以設定分配給虛擬機器的開始和結束ip

③點選 NAT設定

閘道器ip設為①裡看的那個ip地址

確定 然後回到虛擬機器系統裡檢視虛擬機器的ip地址(記得聯網 我用的是linux的centos6.5 網路連線裡只有eth0我就連了這個)

linux可以輸入ifconfig檢視ip地址

我這裡就是192.168.139.128

確定在虛擬機器裡伺服器可以訪問,確定埠(我的是nginx伺服器直接設在80埠)

關閉虛擬機器防火牆!!

我之前各種配置都設定好了也可以ping的通然而在宿主機裡就是訪問不了虛擬機器的伺服器,最後發現就是防火牆的鍋。

centos6.5

防火牆(Iptables)重啟系統生效

開啟: chkconfig iptables on

關閉: chkconfig iptables off

防火牆(Iptables) 即時生效,重啟後失效

開啟: service iptables start

關閉: service iptables stop

windows可以添加出入站規則什麼的,可以自己去百度。

⑥新增埠轉發

這是為了可以讓局域網裡的其他裝置訪問的到虛擬機器

編輯>虛擬網路編輯器>vmnet8>nat設定>埠轉發 新增


主機埠填的是你希望在宿主機訪問哪個埠就可以訪問到虛擬機器

這裡是8080 我在宿主機輸入 localhost:8080 或者http://192.168.139.1:8080/都可以訪問到虛擬機器

虛擬機器ip地址和埠就是上上一步看的那個

這樣就可以在宿主機器訪問虛擬機器伺服器了

在宿主機器裡輸入虛擬機器的ip地址也可以訪問。

3.宿主機配置

現在宿主機可以訪問虛擬機器伺服器了,但局域網裡其他裝置還不可以。

①共享VMnet8

開啟那個託管網路虛擬介面卡的本地連線的屬性

勾選這兩個選項,家庭網路連線裡選擇虛擬機器VMnet8那個網路連線


如果這裡沒有選項可以選擇,可以先連線網際網路。然後點開這個連線的屬性裡的共享標籤,勾選兩個選項之後選擇VMNET8.

然後再去看託管網路虛擬介面卡的本地連線的屬性的共享裡就會出現VMNET8了

②其他裝置連線上區域網,檢視本機在局域網裡的ip

如果是用connectify開出來的熱點可以在軟體裡看到連線的裝置在局域網裡的ip

檢視宿主機在這個宿主機-其他裝置的局域網裡的ip可以用類似第2步的方法,檢視託管網路虛擬介面卡的本地連線的屬性,或者ipconfig。

我這裡就是192.168.141.1

③設定宿主機防火牆入站規則!!!

這也是我遇到的坑

局域網裡的裝置可以ping通宿主機的ip但是就是訪問不了伺服器。

我們在 控制面板>(系統安全)>windows防火牆>左邊入站規則>右邊新建規則

選擇埠

特定本地端口裡輸入3.6裡你設定的那個埠,我這裡是8080

設定好之後就可以訪問了,在其他裝置輸入宿主機在宿主機-其他裝置區域網的地址:埠

我這裡是192.168.141.1:8080

就可以了