理解VirtualBox和VMWare的各种网络模式

2 篇文章 0 订阅
1 篇文章 0 订阅

个人理解,如有错误,欢迎指正。

 

1.    桥接网络

虚拟机的网卡桥接到宿主机的物理网卡,不解释。

 

2.    仅主机(Host-Only)网络

如果你新建一个这样的网络,两样东西会创建:一个是VirtualBox内部的交换机,如图中的"hostonly交换机";另一个是你的宿主机下的虚拟网卡,如上图中的"hostonly网卡"。

windows实际如下图:

hostonly网卡和hostonly交换机实现了一个局域网,虚拟机、宿主机都在同一个网段,可以互相通信。

虚拟机需要这个设置才能访问外网。

注意:

  • 防火墙得合理配置,或者关了,否则大概率是不通的;
  • hostonly交换机默认使能DHCP,各个网卡默认都有IP,乱改会导致不通;
  • VirtualBox可以新建很多这种网络,每个网络都有自己的虚拟网卡和一个对应的hostonly交换机。每个虚拟机都可以选择加入哪个仅主机(Host-Only)网络;

 

3.    网络地址转换(NAT)

这种网络不会创建虚拟网卡,取而代之的是一个守护进程,如上图中的"VirtualBox守护进程";和一个路由器,如上图中的"NAT路由器"。

ubuntu1、ubuntu2位于同一个网段内,它们可以互通。如果没配端口映射,它们不能访问外网;

NAT路由器使用端口映射来实现内网和外网的互通。设置方法如下:


 

NAT转换举例:

ubuntu1-IP:192.168.1.100

ubuntu2-IP:192.168.1.101

远端IP:172.100.11.230

NAT路由器IP:172.100.11.231

NAT路由器端口映射:

规则方向IP源端口目的端口备注
规则1私网->公网私网IP192.168.1.1005000-私网到公网,私网IP转成公网IP,源端口转成公网端口,目的端口不管
公网IP172.100.11.2316000-
公网->私网公网IP172.100.11.231-6000公网到私网,先看目的端口,如果是6000就转成5000并就发给192.168.1.100,源端口不管
私网IP192.168.1.100-5000
规则2私网->公网私网IP192.168.1.1015000-私网到公网,私网IP转成公网IP,源端口转成公网端口,目的端口不管
公网IP172.100.11.2316001-
公网->私网公网IP172.100.11.231-6001公网到私网,先看目的端口,如果是6001就转成5000并就发给192.168.1.101,源端口不管
私网IP192.168.1.101-5000   

 

 

 

 

 

 

 

 

 

 

下表展示了ubuntu1与HTTP服务器的通信过程:

主机源IP目的IP源端口目的端口备注
ubuntu1发送192.168.1.100127.0.0.1500080-
ubuntu1的TCP/IP协议栈接收192.168.1.100127.0.0.1500080-
ubuntu1的TCP/IP协议栈发送192.168.1.100127.0.0.1500080ubuntu1的TCP/IP协议栈发现目的IP是本地(127.0.0.1),但是本地进程没有谁在监听80端口,于是只能发往外部
NAT路由器接收192.168.1.100127.0.0.1500080-
NAT路由器发送127.0.0.1127.0.0.1600080私网到公网,私网IP转成公网IP,源端口转成公网端口,目的端口不管
VirtualBox守护进程接收127.0.0.1127.0.0.1600080-
VirtualBox守护进程发送127.0.0.1127.0.0.1600080-
宿主机的TCP/IP协议栈接收127.0.0.1127.0.0.1600080-
宿主机的TCP/IP协议栈发送127.0.0.1127.0.0.1600080这包是发给本地的,那么本地谁在监听80端口?是HTTP服务器
HTTP服务器接收127.0.0.1127.0.0.1600080-
HTTP服务器发送127.0.0.1127.0.0.1806000HTTP服务器给客户端返回数据
宿主机的TCP/IP协议栈接收127.0.0.1127.0.0.1806000-
宿主机的TCP/IP协议栈发送127.0.0.1127.0.0.1806000本地只有VirtualBox守护进程在监听6000端口,所以发给它
VirtualBox守护进程接收127.0.0.1127.0.0.1806000-
VirtualBox守护进程发送127.0.0.1127.0.0.1806000-
NAT路由器接收127.0.0.1127.0.0.1806000-
NAT路由器发送127.0.0.1192.168.1.100805000NAT路由器查询映射表,发现公网127.0.0.1:6000映射到私网192.168.1.100:5000。于是就把目的端口改成5000,目的IP改成192.168.1.100
ubuntu1接收127.0.0.1192.168.1.100805000-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意:

  • 上面这个例子仅仅是虚拟机访问宿主机的本地HTTP服务器,实际上,它还可以通过网卡1、2访问 公网上的HTTP服务器,这就是真正的上网了;
  • NAT映射中,私网端口是可以一样的,公网端口必须唯一;
  • 即便配了端口转发,内网和外网的主机也是不能ping通的,因为ping协议没有端口号,NAT无法转发;
  • 路由器出来的数据照理是要走网卡->TCP/IP协议栈->进程的,但是VirtualBox中的NAT路由器并不是标准的路由器,它的公网端并不是一个以太网接口,而是一个进程通信接口,可以直接和VirtualBox守护进程通信。

 

4.    NAT网络

基本功能跟"网络地址转换(NAT)"是一样的,区别在于它可以有很多个。也就是说,你可以建立很多个NAT路由器,各个虚拟机可以选择加入哪个NAT路由器,然后每个NAT路由器都通过各自的VirtualBox守护进程连接宿主机。

建立方法如下:


5.    内部网络

这个很好理解,就是一根网线把两个虚拟机的网卡连接起来。下图中的intnet就是一根网线,你可以新建很多网线。

注意:

  • 它不能连接到宿主机的任何网卡;
  • 当网线有多根且每根网线的网段都不一样的时候,你需要用VirtualBox的命令行来设置些东西才能让它们都用起来,很麻烦。

 

6.    通用驱动

这个不懂了,从来没用过,以后用到了再写。

 

7.    和VMWare的区别

VMWareVirtualBox区别
桥接桥接
仅主机模式+自定义仅主机(Host-Only)网络
LAN区段内部网络VMWare好用,不需要命令行
NAT模式网络地址转换(NAT)VMWare相当于是hostonly+NAT,并且VMWare可以自动学习NAT映射,比较方便

 

 

 

 

 

 

VMWare的拓扑图如下:

虚拟机通过VMnet8这个虚拟机网卡可以和宿主机互通;虚拟机如果要访问外网,则用NAT路由器连到宿主机,原理跟VirtualBox一样。

 

参考:

VirtualBox官方文档:https://www.virtualbox.org/manual/ch06.html#network_nat_service

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值