歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> VMware Fusion 4.1.3 掩碼問題導致主機不能正常訪問網絡

VMware Fusion 4.1.3 掩碼問題導致主機不能正常訪問網絡

日期:2017/2/28 15:42:58   编辑:Linux教程

之前成功將MAC OS 10.6.8 升級到Mountain Lion 10.8,之前安裝的VMware fusion版本也不兼容10.8,重新下載了新的4.1.3的fusion版本,昨天在使用的時候發現一個問題,那就是不打開fusion時,在MAC OS本機能正常訪問我們的測試環境(172.20.10.x/255.255.255.0)。但是一打開fusion,就無法訪問測試環境。試了好幾次都出現同樣的問題。

今天中午閒來無事,就想找找到底是什麼原因導致,不會是因為升級到新版本的fusion或新版本的Mountain Lion就出現這個bug了吧,想想Apple應該不會這麼大意吧。根據現象第一反應應該是網絡的問題。

1、 在本機測試

~~~matoMacBook-Pro:~ $ ifconfig

部分省略

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4>

ether c8:2a:14:16:0e:9d

inet6 fe80::ca2a:14ff:fe16:e9d%en0 prefixlen 64 scopeid 0x4

inet 172.20.1.251 netmask 0xfffffe00 broadcast 172.20.1.255

media: autoselect (1000baseT <full-duplex>)

status: active

此時能ping通172.20.10.155

2、啟動vmware fusion

~~~matoMacBook-Pro:~ $ ifconfig

部分省略

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4>

ether c8:2a:14:16:0e:9d

inet6 fe80::ca2a:14ff:fe16:e9d%en0 prefixlen 64 scopeid 0x4

inet 172.20.1.251 netmask 0xfffffe00 broadcast 172.20.1.255

media: autoselect (1000baseT <full-duplex>)

status: active

vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

ether 00:50:56:c0:00:01

inet 172.16.103.1 netmask 0xffffff00 broadcast 172.16.103.255

vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

ether 00:50:56:c0:00:08

inet 172.20.0.211 netmask 0xffff0000 broadcast 172.20.255.255


此時能ping不通172.20.10.155

發現多了兩個vmnet1,vmnet8接口,玩過VMware的都知道這是虛擬網絡,vmnet1是host-only的方式,vmnet8是NAT的方式。我注意到vmnet8的掩碼是255.255.0.0,可是我記得咱們的辦公網絡好像是24位的,猜測應該是這個問題,果斷修改vmnet8啊,可是咱不會啊,沒辦法,有強大的google,啥都不怕,找出這麼一篇文章--

《Modifying the DHCP settings of vmnet1 and vmnet8 in Fusion 》 http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1026510

要注意你的fusion是哪個版本的,我的是4.1.3,解決起來就簡單咯。

sudo vi /Library/Preferences/VMware\ Fusion/networking

VERSION=1,0

answer VNET_1_DHCP yes

answer VNET_1_DHCP_CFG_HASH *********************************

answer VNET_1_HOSTONLY_NETMASK 255.255.255.0

answer VNET_1_HOSTONLY_SUBNET 172.16.103.0

answer VNET_1_VIRTUAL_ADAPTER yes

answer VNET_1_VIRTUAL_ADAPTER_ADDR 172.16.103.1

answer VNET_8_DHCP yes

answer VNET_8_DHCP_CFG_HASH *********************************

answer VNET_8_HOSTONLY_NETMASK 255.255.0.0

answer VNET_8_HOSTONLY_SUBNET 172.20.0.0

answer VNET_8_NAT yes

answer VNET_8_VIRTUAL_ADAPTER yes

answer VNET_8_VIRTUAL_ADAPTER_ADDR 172.20.0.211

確實是16位的掩碼,改成24位的,保存退出,重新啟動fusion,再ping 測試環境,一切正常。

具體是什麼原因導致的,我也不清楚,之前用的MAC OS10.6.8+vmware fusion 3是正常的,不知道為什麼升級之後就不行了。

但是問題是為什麼虛擬機的網絡會影響到主機呢?這就像兒子怎麼反過來打老子了??請教了公司的一CCIE,他一講,我是豁然開朗啊。

如上拓撲圖所示,vmware fusion啟動之後其實就是創建了一個vm port。以下分三個階段說明

1、未啟動fusion之前,此時172.20.1.X要訪問172.20.10.X/24網段,會直接查找默認網關(172.20.1.1),此時能正常訪問。

2、啟動fusion之後,vm port由於此時是172.20.0.0/16位的,而目的地是24位掩碼,因此它會認為是直連路由,而直連路由要優先於默認網關的,因此從主機ping 172.20.10.x/24網段,它會從vm port走,而vm port是不知道如何到達172.20.10.x/24網段,因此主機也無法ping通。

3、將vmnet8的掩碼改成24位後,此時vm port也是172.20.0.X/24位,而目的地是172.20.10.x/24,是不同的網段,即不是直連路由,因此會走默認路由,所以修改後能ping通。

PS:直連路由就是它的接口所連接的網絡所能到達的網絡 。

至此,就能解釋以上的現象了!

Copyright © Linux教程網 All Rights Reserved