无论是VMware还是VirtualBox,在虚拟机网络连接的时候,提供了多种网络连接类型,而针对不同的类型,有的环境下能够连接上,而有的环境下是无法连接上的,既然虚拟化大公司做了这些设置,而且都类似,自然有他的道理
每当创建一个虚拟机,网络连接中大概有桥接模式(B),NAT模式(N),仅主机模式(H),自定义(U)和LAN区段(L),后两个是后来新版本新添加的网络模式,以前老版本只有前面三种,也是用的比较多的三种情况
假如在一台物理PC机上安装一个VMware Player,这时候虚拟机会默认安装三块虚拟网卡,分别为VMnet0,VMnet1,VMnet8,假如VMware Player是安装在Windows环境下,在运行的时候甚至可以在任务管理器里联网可以看到这几个网卡的网络情况
真正PC机网卡是一个物理设备,而虚拟网卡仅仅是实现了真实网卡的一些接口,我觉得用通俗的话来说就是将它识别成一块真实的网卡,或者说让操作系统来识别判断,会将他们当作一块真实的网卡,当然你通过ifconfig等都能够查到网卡信息了
其实这里还有一个虚拟交换机,最近同事也在研究这个,也就是Virtual Switch,这玩意其实是安装在物理PC机的操作系统中,也就是说在PC主机上安装,因为他要提供给各个虚拟机网口,肯定是一个数据链路层交换机
1:桥接模式
如果创建虚拟机的时候选择的桥接模式,那么就会用到VMnet0这块虚拟网卡,这时候虚拟机就像是局域网中的一台独立的主机,可以手动配置局域网同一网段的IP地址,子网掩码,网关等,如此一来便可以轻松地同局域网所有机器以及安装本虚拟机这台PC物理主机进行通信,而且配置好网关和DNS还可以访问外网
桥接模式的虚拟机就像与PC主机处于并列状态,很好理解,唯一要注意的就是假如物理机上有多块网卡,这时候桥接的时候要选定是bridge那块,还有一点很关键就是网卡的混杂模式的开启和关闭,这都是影响通信成功与否的因素
2:NAT
如果创建虚拟机的时候选择NAT模式,就会用到VMnet8这块虚拟网卡,但是它并不提供路由功能,而是虚拟机可以借助网络地址转换功能,通过物理PC主机所在的网络访问外网,而且直接在虚拟系统里访问外网
其实在这中间存在一个NAT服务器,而NAT服务协议对外部网络是隐藏内部网络的,所以虚拟系统可以通过NAT服务器来访问PC主机所在网络,而反过来PC主机甚至其它主机都不能通过NAT服务器来访问虚拟机的操作系统,这就是为什么设置NAT模式下,可以访问外部,可以连外网,可以从外部scp你想要的东西,可以ssh到其他服务器,但是其它任何主机,就算跟PC主机在同一局域网上,也没法访问虚拟机里的操作系统
说的更通俗一点,设置了NAT模式的网络,虚拟机可以将PC主机当作一个对外的网关,这样就很明白了,只要PC网络正常,虚拟机接入互联网就非常简单方便,不需要任何其他的配置
3:主机模式
有的虚拟机写成host-only,如果设定为这种模式会用到虚拟网卡VMnet1,这种模式下虚拟机系统和PC主机之间是可以相互通信的,但是与真实网络确实相互隔离的,最简单的理解方法就是想象成将PC主机和虚拟机用一根网线直连,但是假如不止一个虚拟机,就像ESXi里管理了很多虚拟机,虽然无法与外界想通,但是虚拟机之间相互还是可以通信的
虚拟机系统这时候是通过虚拟网络DHCP服务器来分配IP地址,网关等,使得能与主机通信,而不必要像普通的网线直连需要配置静态IP才能进行SSH
我觉得了解了这三种网络就差不多了,至于说VMnet0~VMnet10其它还有很多块,那都是次要的,虚拟化技术博大精深,想深挖可以多钻研钻研,在安装虚拟机软件VMware,VirtualBox的时候可以仔细观察一下每一步提示你要安装的部件,说不定就是很重要的玩意