如果我們在虛擬機內搭建好服務器后,希望可以在局域網(wǎng)內的設備上都能訪問到這個虛擬服務器,就可以參照以下步驟來操作。其中包括了很多遇到的坑。先說說我的環(huán)境是
宿主機:windows 8.1
虛擬機:vmware+linux centos6.5
服務器:nginx
1.搭建局域網(wǎng)
我是利用筆記本wifi熱點搭建的局域網(wǎng)。win7及以下版本應該有搭建臨時無線網(wǎng)絡的功能可以直接用這個功能,而win8開始這個功能就被隱藏了,可以在命令行輸入netsh?wlan?set?hostednetwork?mode=allow?ssid=熱點名稱 key=密碼(8位及以上)?然后netsh wlan start hostednetwork 開啟。
或者直接用connectify。我用上面這個方式不知道為什么手機連熱點的時候獲取不到ip地址,用connectify就可以。
無論用哪個方法都會多出一個這樣的托管網(wǎng)絡虛擬適配器的本地連接

如果不打算連接互聯(lián)網(wǎng)在connectify的設置>NAT選項把無Internet時暫停連接的選項取消選中就好。
2.虛擬機設置
虛擬機的網(wǎng)絡連接方式大致是三種,(1)橋接模式,在這種模式下,虛擬機相當于與所在物理機同一IP段的獨立計算機,與局域網(wǎng)內的其他計算機是沒有區(qū)別的;(2)NAT模式,這種模式下,虛擬機與所在的物理機單獨組成了一個新的局域網(wǎng),他們共享接入物理機的IP段;(3)host—only模式,在這種模式下物理機下所屬的所有虛擬機共同組成一個局域網(wǎng),他們與物理機之間是斷開的,也就是說物理機和虛擬機之間是無法訪問的。
如果局域網(wǎng)想要訪問虛擬機的服務怎么辦呢?這時候基本上有兩種思路,一種是將虛擬機的網(wǎng)絡連接設置成橋接模式,因為這時候虛擬機相當于所在物理機同一IP段的獨立計算機,這時候其他的局域網(wǎng)內的計算機當然可以訪問虛擬機內的服務,一般在虛擬機的設置里面找到網(wǎng)絡設置,將其設置為橋接模式,借助虛擬機的IP就可以實現(xiàn)訪問,但是這么做訪問速度會非常慢。另外一種比較好的方式就是將虛擬機的網(wǎng)絡連接設置成NAT模式,注意,直接這么設置局域網(wǎng)內的其他計算機是無法訪問虛擬機中的服務的,因為局域網(wǎng)內的其他計算機相對于虛擬機和物理機新組的局域網(wǎng)來說屬于外網(wǎng),這時候還需要在物理機中對其進行端口映射,這個與局域網(wǎng)中利用路由器對其中某個IP端口進行映射的原理是一樣的,通過這種也可以實現(xiàn)局域網(wǎng)訪問虛擬機內的服務。(來源http://blog.csdn.net/jiangdianqin/article/details/50365988)
我們這里選用的是NAT模式。
①我們發(fā)現(xiàn)宿主機網(wǎng)絡連接里有一個VMnet8

查看它的IP(直接在屬性里查看或者ipconfig都行)

這個ip就是在宿主機在以后新建出來的虛擬機與宿主機之間的局域網(wǎng)里的ip地址。記住這個ip地址。
②打開虛擬機>編輯>虛擬網(wǎng)絡編輯器
選擇VMnet8那個選項,最下面子網(wǎng)ip改成和剛剛那個ip處于同一網(wǎng)段內。
比如我這里是192.168.139.1 就把虛擬機的改成192.168.139.0

DHCP設置里還可以設置分配給虛擬機的開始和結束ip
③點擊 NAT設置
網(wǎng)關ip設為①里看的那個ip地址
④確定 然后回到虛擬機系統(tǒng)里查看虛擬機的ip地址(記得聯(lián)網(wǎng) 我用的是linux的centos6.5 網(wǎng)絡連接里只有eth0我就連了這個)
linux可以輸入ifconfig查看ip地址

我這里就是192.168.139.128
確定在虛擬機里服務器可以訪問,確定端口(我的是nginx服務器直接設在80端口)
⑤關閉虛擬機防火墻??!
我之前各種配置都設置好了也可以ping的通然而在宿主機里就是訪問不了虛擬機的服務器,最后發(fā)現(xiàn)就是防火墻的鍋。
centos6.5
防火墻(Iptables)重啟系統(tǒng)生效
開啟:?chkconfig?iptables?on
關閉:?chkconfig?iptables?off
防火墻(Iptables) 即時生效,重啟后失效
開啟:?service?iptables?start
關閉:?service?iptables?stop
windows可以添加出入站規(guī)則什么的,可以自己去百度。
⑥添加端口轉發(fā)
這是為了可以讓局域網(wǎng)里的其他設備訪問的到虛擬機
編輯>虛擬網(wǎng)絡編輯器>vmnet8>nat設置>端口轉發(fā) 添加

主機端口填的是你希望在宿主機訪問哪個端口就可以訪問到虛擬機
這里是8080 我在宿主機輸入 localhost:8080 或者http://192.168.139.1:8080/都可以訪問到虛擬機
虛擬機ip地址和端口就是上上一步看的那個
這樣就可以在宿主機器訪問虛擬機服務器了
在宿主機器里輸入虛擬機的ip地址也可以訪問。
3.宿主機配置
現(xiàn)在宿主機可以訪問虛擬機服務器了,但局域網(wǎng)里其他設備還不可以。
①共享VMnet8
打開那個托管網(wǎng)絡虛擬適配器的本地連接的屬性
勾選這兩個選項,家庭網(wǎng)絡連接里選擇虛擬機VMnet8那個網(wǎng)絡連接

如果這里沒有選項可以選擇,可以先連接互聯(lián)網(wǎng)。然后點開這個連接的屬性里的共享標簽,勾選兩個選項之后選擇VMNET8.
然后再去看托管網(wǎng)絡虛擬適配器的本地連接的屬性的共享里就會出現(xiàn)VMNET8了
②其他設備連接上局域網(wǎng),查看本機在局域網(wǎng)里的ip
如果是用connectify開出來的熱點可以在軟件里看到連接的設備在局域網(wǎng)里的ip
查看宿主機在這個宿主機-其他設備的局域網(wǎng)里的ip可以用類似第2步的方法,查看托管網(wǎng)絡虛擬適配器的本地連接的屬性,或者ipconfig。

我這里就是192.168.141.1
③設置宿主機防火墻入站規(guī)則!??!
這也是我遇到的坑
局域網(wǎng)里的設備可以ping通宿主機的ip但是就是訪問不了服務器。
我們在 控制面板>(系統(tǒng)安全)>windows防火墻>左邊入站規(guī)則>右邊新建規(guī)則
選擇端口
特定本地端口里輸入3.6里你設置的那個端口,我這里是8080
設置好之后就可以訪問了,在其他設備輸入宿主機在宿主機-其他設備局域網(wǎng)的地址:端口
我這里是192.168.141.1:8080
就可以了