如果我們?cè)谔摂M機(jī)內(nèi)搭建好服務(wù)器后径缅,希望可以在局域網(wǎng)內(nèi)的設(shè)備上都能訪問(wèn)到這個(gè)虛擬服務(wù)器,就可以參照以下步驟來(lái)操作。其中包括了很多遇到的坑藻肄。先說(shuō)說(shuō)我的環(huán)境是
宿主機(jī):windows 8.1
虛擬機(jī):vmware+linux centos6.5
服務(wù)器:nginx
1.搭建局域網(wǎng)
我是利用筆記本wifi熱點(diǎn)搭建的局域網(wǎng)明吩。win7及以下版本應(yīng)該有搭建臨時(shí)無(wú)線網(wǎng)絡(luò)的功能可以直接用這個(gè)功能间学,而win8開(kāi)始這個(gè)功能就被隱藏了,可以在命令行輸入netsh?wlan?set?hostednetwork?mode=allow?ssid=熱點(diǎn)名稱 key=密碼(8位及以上)?然后netsh wlan start hostednetwork 開(kāi)啟印荔。
或者直接用connectify低葫。我用上面這個(gè)方式不知道為什么手機(jī)連熱點(diǎn)的時(shí)候獲取不到ip地址,用connectify就可以仍律。
無(wú)論用哪個(gè)方法都會(huì)多出一個(gè)這樣的托管網(wǎng)絡(luò)虛擬適配器的本地連接
如果不打算連接互聯(lián)網(wǎng)在connectify的設(shè)置>NAT選項(xiàng)把無(wú)Internet時(shí)暫停連接的選項(xiàng)取消選中就好嘿悬。
2.虛擬機(jī)設(shè)置
虛擬機(jī)的網(wǎng)絡(luò)連接方式大致是三種,(1)橋接模式水泉,在這種模式下善涨,虛擬機(jī)相當(dāng)于與所在物理機(jī)同一IP段的獨(dú)立計(jì)算機(jī)窒盐,與局域網(wǎng)內(nèi)的其他計(jì)算機(jī)是沒(méi)有區(qū)別的;(2)NAT模式钢拧,這種模式下蟹漓,虛擬機(jī)與所在的物理機(jī)單獨(dú)組成了一個(gè)新的局域網(wǎng),他們共享接入物理機(jī)的IP段娶靡;(3)host—only模式牧牢,在這種模式下物理機(jī)下所屬的所有虛擬機(jī)共同組成一個(gè)局域網(wǎng),他們與物理機(jī)之間是斷開(kāi)的姿锭,也就是說(shuō)物理機(jī)和虛擬機(jī)之間是無(wú)法訪問(wèn)的塔鳍。
如果局域網(wǎng)想要訪問(wèn)虛擬機(jī)的服務(wù)怎么辦呢?這時(shí)候基本上有兩種思路呻此,一種是將虛擬機(jī)的網(wǎng)絡(luò)連接設(shè)置成橋接模式轮纫,因?yàn)檫@時(shí)候虛擬機(jī)相當(dāng)于所在物理機(jī)同一IP段的獨(dú)立計(jì)算機(jī),這時(shí)候其他的局域網(wǎng)內(nèi)的計(jì)算機(jī)當(dāng)然可以訪問(wèn)虛擬機(jī)內(nèi)的服務(wù)焚鲜,一般在虛擬機(jī)的設(shè)置里面找到網(wǎng)絡(luò)設(shè)置掌唾,將其設(shè)置為橋接模式,借助虛擬機(jī)的IP就可以實(shí)現(xiàn)訪問(wèn)忿磅,但是這么做訪問(wèn)速度會(huì)非常慢糯彬。另外一種比較好的方式就是將虛擬機(jī)的網(wǎng)絡(luò)連接設(shè)置成NAT模式,注意葱她,直接這么設(shè)置局域網(wǎng)內(nèi)的其他計(jì)算機(jī)是無(wú)法訪問(wèn)虛擬機(jī)中的服務(wù)的撩扒,因?yàn)榫钟蚓W(wǎng)內(nèi)的其他計(jì)算機(jī)相對(duì)于虛擬機(jī)和物理機(jī)新組的局域網(wǎng)來(lái)說(shuō)屬于外網(wǎng),這時(shí)候還需要在物理機(jī)中對(duì)其進(jìn)行端口映射吨些,這個(gè)與局域網(wǎng)中利用路由器對(duì)其中某個(gè)IP端口進(jìn)行映射的原理是一樣的搓谆,通過(guò)這種也可以實(shí)現(xiàn)局域網(wǎng)訪問(wèn)虛擬機(jī)內(nèi)的服務(wù)。(來(lái)源http://blog.csdn.net/jiangdianqin/article/details/50365988)
我們這里選用的是NAT模式豪墅。
①我們發(fā)現(xiàn)宿主機(jī)網(wǎng)絡(luò)連接里有一個(gè)VMnet8
查看它的IP(直接在屬性里查看或者ipconfig都行)
這個(gè)ip就是在宿主機(jī)在以后新建出來(lái)的虛擬機(jī)與宿主機(jī)之間的局域網(wǎng)里的ip地址泉手。記住這個(gè)ip地址。
②打開(kāi)虛擬機(jī)>編輯>虛擬網(wǎng)絡(luò)編輯器
選擇VMnet8那個(gè)選項(xiàng)偶器,最下面子網(wǎng)ip改成和剛剛那個(gè)ip處于同一網(wǎng)段內(nèi)斩萌。
比如我這里是192.168.139.1 就把虛擬機(jī)的改成192.168.139.0
DHCP設(shè)置里還可以設(shè)置分配給虛擬機(jī)的開(kāi)始和結(jié)束ip
③點(diǎn)擊 NAT設(shè)置
網(wǎng)關(guān)ip設(shè)為①里看的那個(gè)ip地址
④確定 然后回到虛擬機(jī)系統(tǒng)里查看虛擬機(jī)的ip地址(記得聯(lián)網(wǎng) 我用的是linux的centos6.5 網(wǎng)絡(luò)連接里只有eth0我就連了這個(gè))
linux可以輸入ifconfig查看ip地址
我這里就是192.168.139.128
確定在虛擬機(jī)里服務(wù)器可以訪問(wèn),確定端口(我的是nginx服務(wù)器直接設(shè)在80端口)
⑤關(guān)閉虛擬機(jī)防火墻F梁洹颊郎!
我之前各種配置都設(shè)置好了也可以ping的通然而在宿主機(jī)里就是訪問(wèn)不了虛擬機(jī)的服務(wù)器,最后發(fā)現(xiàn)就是防火墻的鍋亭枷。
centos6.5
防火墻(Iptables)重啟系統(tǒng)生效
開(kāi)啟:?chkconfig?iptables?on
關(guān)閉:?chkconfig?iptables?off
防火墻(Iptables) 即時(shí)生效,重啟后失效
開(kāi)啟:?service?iptables?start
關(guān)閉:?service?iptables?stop
windows可以添加出入站規(guī)則什么的搀崭,可以自己去百度叨粘。
⑥添加端口轉(zhuǎn)發(fā)
這是為了可以讓局域網(wǎng)里的其他設(shè)備訪問(wèn)的到虛擬機(jī)
編輯>虛擬網(wǎng)絡(luò)編輯器>vmnet8>nat設(shè)置>端口轉(zhuǎn)發(fā) 添加
主機(jī)端口填的是你希望在宿主機(jī)訪問(wèn)哪個(gè)端口就可以訪問(wèn)到虛擬機(jī)
這里是8080 我在宿主機(jī)輸入 localhost:8080 或者h(yuǎn)ttp://192.168.139.1:8080/都可以訪問(wèn)到虛擬機(jī)
虛擬機(jī)ip地址和端口就是上上一步看的那個(gè)
這樣就可以在宿主機(jī)器訪問(wèn)虛擬機(jī)服務(wù)器了
在宿主機(jī)器里輸入虛擬機(jī)的ip地址也可以訪問(wèn)猾编。
3.宿主機(jī)配置
現(xiàn)在宿主機(jī)可以訪問(wèn)虛擬機(jī)服務(wù)器了,但局域網(wǎng)里其他設(shè)備還不可以升敲。
①共享VMnet8
打開(kāi)那個(gè)托管網(wǎng)絡(luò)虛擬適配器的本地連接的屬性
勾選這兩個(gè)選項(xiàng)答倡,家庭網(wǎng)絡(luò)連接里選擇虛擬機(jī)VMnet8那個(gè)網(wǎng)絡(luò)連接
如果這里沒(méi)有選項(xiàng)可以選擇,可以先連接互聯(lián)網(wǎng)驴党。然后點(diǎn)開(kāi)這個(gè)連接的屬性里的共享標(biāo)簽瘪撇,勾選兩個(gè)選項(xiàng)之后選擇VMNET8.
然后再去看托管網(wǎng)絡(luò)虛擬適配器的本地連接的屬性的共享里就會(huì)出現(xiàn)VMNET8了
②其他設(shè)備連接上局域網(wǎng),查看本機(jī)在局域網(wǎng)里的ip
如果是用connectify開(kāi)出來(lái)的熱點(diǎn)可以在軟件里看到連接的設(shè)備在局域網(wǎng)里的ip
查看宿主機(jī)在這個(gè)宿主機(jī)-其他設(shè)備的局域網(wǎng)里的ip可以用類似第2步的方法港庄,查看托管網(wǎng)絡(luò)虛擬適配器的本地連接的屬性倔既,或者ipconfig。
我這里就是192.168.141.1
③設(shè)置宿主機(jī)防火墻入站規(guī)則E粞酢2秤俊!
這也是我遇到的坑
局域網(wǎng)里的設(shè)備可以ping通宿主機(jī)的ip但是就是訪問(wèn)不了服務(wù)器把还。
我們?cè)?控制面板>(系統(tǒng)安全)>windows防火墻>左邊入站規(guī)則>右邊新建規(guī)則
選擇端口
特定本地端口里輸入3.6里你設(shè)置的那個(gè)端口实蓬,我這里是8080
設(shè)置好之后就可以訪問(wèn)了,在其他設(shè)備輸入宿主機(jī)在宿主機(jī)-其他設(shè)備局域網(wǎng)的地址:端口
我這里是192.168.141.1:8080
就可以了