目录
问题二:网络模式为仅Host-only,或为Bridge但分配了不合法的IP
如果您还发现了其他问题和解决办法,欢迎私聊我或在评论区留言完善这篇文章
A.背景知识
同一网段:IP地址由网络号+主机号组成,网络号相同的IP地址在“同一网段”,可以通过“交换机”直接通信(设置好虚拟机网卡,关闭防火墙,虚拟机和宿主机可互相ping通)
虚拟网卡:VMware添加了 “虚拟网卡”VMnet8 和 “虚拟交换机”(不可见) ,虚拟机和宿主机位于同一网段,但虚拟机和路由器不在同一网段(此时虚拟机只能和宿主机通信)
网关:可以理解为路由器(有一个IP地址),不在同一网段的IP必须通过网关通信。
DNS:记录域名和IP地址对应关系的路由器。先在DNS查到真实IP,再访问真实IP。常设置为8.8.8.8(谷歌DNS服务器地址)
虚拟机的网络模式(Bridged,NAT,Host-only):
-
目标:实现三种通信均可进行,且虚拟机有固定IP地址允许宿主机用ssh连接原理 特性 虚拟机ping宿主机 宿主机ping虚拟机 虚拟机ping外网 网络地址转换 宿主机作为“网关”为虚拟机转发包 外部物理网络看来只有宿主机一个设备
宿主机会把虚拟机的包源地址改成自己,故称“网络地址转换”
/ / 可以 桥接 虚拟机和宿主机相当于两台独立的计算机,但只能使用动态IP或给虚拟机分配IP(自缴费的寝室网才有) 外部物理网络看来宿主机和虚拟机是独立的两个设备 可以 可以 可以 仅主机 宿主机上的虚拟交换机或网络适配器负责在宿主机和虚拟机之间路由数据包 不能和外部物理网络通信 可以 可以 / -
NAT+host only 可以实现全部通信需求,有固定IP地址 bridged 可以实现全部通信需求,一般无法设置固定IP地址 NAT设置静态IP 可以但不推荐,可能发生ip冲突等问题
B.通信流程及所需基础部件
发现不能通信检查其上环节
消息发送流程 | 虚拟机网卡 | 网关 | 虚拟网络适配器(宿主机上) | |
---|---|---|---|---|
NAT | 虚拟网卡 - 虚拟交换机 - NAT地址转换模块 - 物理网络适配器 - 物理交换机/路由器 - 外部设备 | 启动时自动动态分配(局部私有网络) | 启动时自动动态分配 (局部私有网络) | 【VMware】: VMnet8 【VirtualBox】: 无 |
Bridged | 虚拟网卡 - 物理网络适配器 - 物理交换机/路由器 - 外部设备 | 启动时自动动态分配(物理网络地址) | 启动时自动动态分配(物理网关地址(路由器)) | 无 |
Host Only | 虚拟网卡-虚拟交换机-虚拟网络适配器-宿主机 | 可自己设置一个静态地址,使用局域网ip | 同一网段 | 【VMware】: VMnet1 【VirtualBox】: Ethernet adapter 以太网 2 |
C.如何设置虚拟机和宿主机之间的通信
条件:有虚拟网卡(VMware下的NAT和Host Only; VirtualBox 下的Host Only)
主要目标:将【Windows虚拟网卡VMnet8的IP地址】和【VMWare虚拟网卡VMnet8的子网IP地址】和【网卡设置文件的IPADDR】设置在同一网段
具体方法:
1.宿主机设置:
控制面板->网络和Internet->网络和共享中心->更改适配器设置
VMware:
VirtualBox:
2. 虚拟机设置
方法一:仅适用于VMware:编辑->虚拟网络编辑器
方法二:虚拟机网卡设置
CentOS: /etc/sysconfig/network-scripts/ifcfg-ens32
Ubuntu: /etc/netplan下
D.问题及办法
一:虚拟机宿主机互ping不通
问题一:防火墙
略去,建议主机和宿主机都关闭防火墙,并关闭seLinux(Linux的安全系统)
问题二:网卡未生效
表现
输入命令 ifcongig,若输出的网卡信息不含inet [ip地址],则说明网卡未生效
网卡生效后会变成
解决办法
这是由于网卡配置文件错误导致的。CentOS7系统网卡配置文件路径:
/etc/sysconfig/network-scripts/ifcfg-[网卡名]
网卡名为ifconfig命令输出信息最左列
eg:/etc/sysconfig/network-scripts/ifcfg-ens32
配置文件内容:
如果你还未修改过这个文件,那么你只需要加入与IP地址有关的IPADDR NETMASK GATEWAY DNS1,并最好将绿点配置修改,实现开机启动。
如果你有多个网卡,红点为各个网卡配置不同的项。如果UUID丢失,可通过uuidgen命令重新生成。笔者由于通过cp复制ens32网卡得到ens34网卡时误加了同步选项-s,导致ens32的UUID丢失,修改后网卡生效。
问题三:IP地址设置
见C
二:虚拟机对宿主机ping不通,但能ping外网
虚拟网卡问题
问题一:虚拟网卡VMnet8
虚拟机和宿主机之间的通信是通过虚拟网卡VMware Network Adapter VMnet8实现的,它的功能可参见如下关闭虚拟网卡实验:
控制面板->网络和Internet->网络和共享中心->更改适配器设置
VMnet8被禁用,则主机和虚拟机无法通信,但可以与外网通信(因为虚拟机和主机公用一个网卡)如下:
若VMNet8未被禁用,也不能排除它的问题,可能是它的设置有问题,具体见上一条。
问题二:虚拟机开机期间切换网络(博主遇到的问题)
如挂梯子,切换WIFI。
这是给NAT网卡配置静态IP的副作用之一
正常情况下电脑通过DHCP自动分配机器IP和网关,DNS,但我们为了设置方便设置了固定的IP地址,如果中途网络变化,正好产生冲突,则虚拟网卡无法正常工作。
这种操作使网关发生了变化,实质还是虚拟网卡VMnet8的原因。
问题三:防火墙
建议关掉
三:虚拟机对宿主机ping通,不能ping外网
网络模式不允许访问外网,或没有配置网关和DNS(保障不在同一网段通信)
问题一:网关和DNS设置问题
具体如何设置网上教程很多。简单来说,就是
- Windows虚拟网卡VMnet8的IP地址 和 VMWare虚拟网卡VMnet8的子网IP地址 和 网卡设置文件的IPADDR在同一个局域网下
- Windows虚拟网卡VMnet8的网关和DNS地址 和 VMWare虚拟网卡的网关和DNS地址一致
- 以上所有都在同一个局域网下(IP地址的第三个数,这里是80)
宿主机设置:
虚拟机设置方法为:编辑->虚拟网络编辑器
问题二:网络模式为仅Host-only,或为Bridge但分配了不合法的IP
- Bridge: 虚拟机和宿主机相当于两台独立的计算机,但需给虚拟机分配IP(自缴费的寝室网才有)
- NAT:虚拟机访问互联网时,NET转换技术使虚拟机冒用宿主机IP,但外界不能主动联系虚拟机
- Host-only: 虚拟机和互联网不可能互相访问