局域網訪問虛擬機內服務器


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

宿主機: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了

在這里需要注意如果第2步的①中ipv4的配置為自動獲取ip位置,配置共享VMnet8后可能VMnet8的ip會獲取到其他的網段,導致ping不通虛擬機並訪問不了虛擬機的服務器,所以在VMnet8的ip配置里需要勾選使用下面的ip地址且自己設置的ip地址和虛擬機系統里的ip需處於同一網段。

②其他設備連接上局域網,查看本機在局域網里的ip

如果是用connectify開出來的熱點可以在軟件里看到連接的設備在局域網里的ip

查看宿主機在這個宿主機-其他設備的局域網里的ip可以用類似第2步的方法,查看托管網絡虛擬適配器的本地連接的屬性,或者ipconfig。

 
 

我這里就是192.168.141.1

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

這也是我遇到的坑

局域網里的設備可以ping通宿主機的ip但是就是訪問不了服務器。

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

選擇端口

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

設置好之后就可以訪問了,在其他設備輸入宿主機在宿主機-其他設備局域網的地址:端口

我這里是192.168.141.1:8080

就可以了

 

轉載自:https://blog.csdn.net/hehyyoulan/article/details/85250819


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM