转载自:
解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网
VMware中安装Linux使用NAT模式后xshell无法ping到Linux
方法四步走:(亲测有效)
第一步,我们进入/etc/sysconfig/network-scripts目录,查看该目录有没有形如ifcfg-XXX的文件:
如果你看不到以ifcfg-打头的文件(ifcfg-lo除外),说明网卡设备没有被正确识别,可能是你下载的centos镜像版本和你安装centos时选择的centos版本不一致,比如,centos镜像是64位的,却按照32位来安装。这个。。重装吧,至少我没找到好的办法!
第二步:
在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式:
为了能够使用静态IP,这里不要勾选”使用本地DHCP服务将IP分配给虚拟机“这个选项。然后是配置子网ip,子网IP与宿主机的ip一定不能处在同一地址范围里,否则就算虚拟机能上网,网络既慢,还不稳定。我主机的ip段是192.168.31.xxx,所以我配了192.168.10.xxx来避开主机的ip段,反正ip的第三个数字在0到254并且不是31就行。Nat模式相当于配置了一个子路由器,有设置过多级路由的朋友对此应该有所体会。各位结合自己机器的IP来合理配置一个子网ip吧。
在这个界面接着点"NAT设置",查看虚拟机的网关,这个网关在第三步要用。我这里的网关是192.168.238.10。
第三步:
以root权限编辑/etc/sysconfig/network-scripts/ifcfg-ens33这个文件,效果如下:
TYPE=Ethernet
BOOTPROTO=static #设置Ip类型为静态
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=59dbed76-e9c9-471e-98e5-a30c168a344d
DEVICE=ens33
ONBOOT=yes #这里如果为no的话就改为yes,表示网卡设备自动启动
IPADDR=192.168.238.100 #配置ip,在第二步已经设置ip处于192.168.238.xxx这个范围,我就随便设为100了,只要不和网关相同均可
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.238.10 #这里的网关地址就是第二步NAT设置里的网关IP
DNS1=114.114.114.114 #dns服务器1,填写你所在的网络可用的dns服务器地址即可
DNS2=223.5.5.5 #dns服器2
其他的保持默认就好,确认无误后进行命令(:wq)保存退出。
第四步:重启网卡服务,执行service network restart,然后总算能上网了:
使用ping测试一下:
ok!已经能上网了。
如果是第一次这样设置,可能出现的问题:
此时centos7系统虽然可以连接外网,也能ping通主机,但是主机却无法ping通centos7,使用XShell也无法连接上虚拟机。
上面设置网关IP后,因为VMware中操作系统所在子网为:192.168.238.1~192.168.238.128,与主机的网络是两个不同的网络,则这两个网络是不能直接进行通信的。于是需要在各自的子网内设置网关作为两个子网交换信息的代言人。这两个子网中任意ip之间的通信都要通过网关转发。
解决办法如下:
1、在主机中找到VMnet8,进入其属性,找到Internet协议版本4(TCP/IPv4),如下图
2、进行配置IP地址
当然,如果之前设置过得话,就不会出现这样的问题,后面才再次使用时只需要设置和之前的系统的ip不同就行,如下:
经过上述步骤后主机就能ping通centos7了,XShell也能连接上centos7了。
为什么要这样做呢?
很多人都会以为该虚拟网卡,就是为workstation中NAT方式连接外网所使用的网卡,其实不然,这个虚拟网卡(vmnet8)的作用仅仅就是为了提供host与虚拟机进行访问。 其实,对于workstation中的vmnet8来说,就是一个交换机,只是这个交换机配置比较简单,不提供过多的功能。
真正的提供虚拟机网络服务器的位置是在workstation程序中虚拟交换机,