虚拟机与主机之间的几种通信方法

时间:2022-12-23 13:40:00

上次查了很多相关资料,调通了,回头发现找不到那个网页了,于是将自己的经验记录下来备忘。

说错请指出,误导勿怪= =。

通常虚拟机接入网络的方法有 桥接模式、NAT模式、仅主机模式。

桥接模式就是直接将虚拟机连到和主机同一个网络中,在有路由器的情况下(没有试过没路由器会怎样)会和主机是同一个网段,所以要在主机有网络或者是接入到路由器时才能和虚拟机通信。这种情况下例如主机IP是192.168.1.12,虚拟机的IP是192.168.1.34。

NAT模式意思是网络地址转换(具体原理不清楚)。使用VMWARE时在这种模式下即使主机没有网络或者没有路由器接入的情况下,主机还是可以和虚拟机通信(互相PING通),并且虚拟机可以联网(可以上网),但是外界除了主机以外都是无法PING通这个虚拟机的。所以这种模式下如果有下位机接入到路由器并想用TFTP协议从虚拟机中读取文件,在这种模式是无法实现的。这种模式下虚拟机的IP不能和主机是同一个网段的,比如主机IP是192.168.1.12,虚拟机的IP是192.168.30.3。

仅主机模式是指虚拟机只能和主机进行通信,并且不联网。

通常我们用的虚拟机软件有VMWARE和VIRTUALBOX。

说说VMWARE下的NAT模式设置,用VMWARE设置成NAT模式之后可能发现还是和主机无法通信。此时打开主机下的网络和共享中心,会发现在安装VMWARE之后会多出两个ADAPTER,如VMware Network Adapter VMnet1和VMware Network Adapter VMnet8,它们分别用于桥接模式和NAT模式下,打开对应NAT模式的ADPTER并将其IP设为如192.168.30.1,然后比如将虚拟机的IP设为192168.30.7网关设为192.168.30.1即可。

而VIRTUAL BOX的NAT模式下实际上主机是PING不通虚拟机的,而虚拟机可以PING通主机以及通过主机访问网络,网上资料是说VIRTUAL BOX只在WIN下映射了一个仅主机模式的网卡,而不像VMWARE映射了以上两个网卡。所以很遗憾这种模式下你想用SSH登录到虚拟机是不可以的。


在没有网络的情况下且不在仅主机模式下实现文件的共享只有通过 mount -t vboxsf share /mnt/shared 类似命令实现硬盘上文件夹的挂载。但是个人感觉LINUX在这个挂载的文件夹下对文件的操作速度似乎会变慢,比如解压缩等动作(仅仅是感觉未验证)。

在有路由连接的情况下共享文件可以使用FTP、SAMBA、TFTP等协议。

SAMBA适用于多主机登录到一个LINUX服务器上进行文件传输修改。

TFTP适用于同样LINUX系统的上下位机进行文件传输。

目前我使用的方案是VIRTUAL BOX下的桥接模式,启动FTP协议使用CUTEFTP进行文件传输,因为随身带了个无线路由所以不怕连接不上,当然应急了还有仅主机模式呢。