virtualbox安装Ubuntu后,默认的地址为10.0.2.15
我们查看virtualbox的设置发现是NAT
学过计算机网络的应该了解NAT技术,为了安全以及缓解ip使用,我们留了部分私有ip地址。
私有IP地址网段如下:
A类:1个A类网段,即10.0.0.0~10.255.255.255。
B类:16个B类网段,即172.16.0.0~172.31.255.255。
C类:256个C类网段,即192.168.0.0~192.168.255.255。
一般我们常见的是c类,但是这里virtualbox使用了A类地址。
我们可以这样理解:
家庭路由器作为网关,内部的ip地址都是C类,例如我们的电脑,都被分配了C类地址,即我们查看电脑ip,往往都是192.168…。我们计算机可以通过路由器(网关)访问外面公网(互联网),而且电脑的c类地址会在路由器那实现NAT转换,替换为路由器的ip(每个路由器都有自己的ip,而且是在互联网上可以正常使用的独一无二的)。外网向我们的计算机发送数据后,其目的ip也是路由器的ip,而路由器收到后会转换为内网中我们电脑的ip。这样我们就能安全的访问网络了。
而我们安装virtualbox并安装虚拟机后,virtualbox给虚拟机分配了A类地址。当我们建立多个虚拟机后,发现默认ip都是10.0.2.15。之后我们继续ping。从主机ping虚拟机是不行的,但是虚拟机ping主机可以,如果主机可以上网,那么虚拟机也可以联网
当然,这些是正常现象,因为NAT一个目的就是为了安全。
Guest(客户机)访问网络的所有数据都是由主机提供的,Guest并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Guest的存在。
Guest可以访问主机能访问到的所有网络,但是对于主机以及主机网络上的其他机器,Guest又是不可见的,甚至主机也访问不到Guest。
总结关系:
虚拟机与主机的关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
虚拟机与网络中其他主机的关系:只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
虚拟机与虚拟机的关系:相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
ip样式:
ip:10.0.2.15
网关: 10.0.2.2
注意此处的网关在不同虚拟机中可能是同一个值,但是这归属于不同的NAT Engine,因此实际上各个虚拟机用的不是同一个网关。
原理:
虚拟机的请求传递给NAT Engine,由它来利用主机进行对外的网络访问,返回的数据包再由NAT Engine给虚拟机。
综上,采用NAT模式的virtualbox,所创建的虚拟机都有一个公共的ip地址:10.0.2.15。这个ip掩盖了虚拟机的ip,就好像各个虚拟机不存在一样。而虚拟机可以对外正常使用,ping主机和联网,只需借助NAT即可
同时,我们可以使用xshell远程连接虚拟机,地址选10.0.2.15就行(在VMware Network Adapter VMnet8可以启用的情况下)。然而使用xftp传递文件则会失败。如果没有过多的要求,其实NAT模式已经挺好
桥接模式
修改virtualbox的网络设置为桥接网卡
我们可以看到ip地址变了
此处对比之前NAT的ip:
这时候我们再ping我们的主机就能ping通了:
我们需要了解一下桥接模式:
桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其网络结构如下图所示:
理解虚拟机和主机ip同一网段很简单:我们都知道交换机和网桥都是数据链路层的设备,不具有隔绝广播域的功能,该功能只有路由器等三层和三层以上设备有,这意味着虚拟机和主机他们都处于同一子网中。他们拥有相同的子网掩码和网关(路由器)。
修改ip地址
尽管我们看到ip改了,变成和主机同一子网的ip。也可以和主机互相ping。
但是我们希望能固定ip,因为自动分配有变更风险
我们修改为手动。
写完后应用,点击关闭再开启就行
打开xshell。
点击连接。
** 注意:第一次通过xshell远程连接可能需要ubuntu命令终端安装ssh ** 具体参考其他博客
可以输入ls命令看看
我们打开xftp,新建会话
连接即可
中文乱码问题:
正常:
参考博客:
VirtualBox四种网络连接方式
网络连接三种方式-桥接模式
网络三种连接方式-地址转换模式