虚拟机三种网络模式:桥接模式、NAT模式、仅主机模式

发布时间:2024年01月18日

一、Bridged(桥接模式)

桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段(即地址前三个数相同),如果需要联网,则网关与DNS需要与主机网卡一致。

先确认一下主机的IP地址,网关以及DNS信息,Window+R输入cmd进入命令窗口,输入命令ipconfig/all即可查看:

也可以到网络中心点击当前连接查看,如果主机的IP是自动获取的,在网络中心看不到,只能用命令行:

在开启虚拟机前先选择连接模式:编辑虚拟机设置——网络适配器——桥接模式

打开虚拟机后开启命令行,输入命令vi /etc/sysconfig/network-scripts/ifcfg-eth0编辑IP配置文件:

此处应将IP地址设置和主机地址在同一网段,网关地址和DNS地址和主机一样,因为我用的是NAT模式,且自动获取IP,所以我的文件没有改,改完保存重启虚拟机或者虚拟网卡(命令:service network restart如果没用可能是权限不够改用sudo service network restart)。然后可以Ping一下主机地址试试能不能通,想要看主机和虚拟机之间是否通信正常,可以在主机新建虚拟机地址的网络映射,在Xshell里看能不能连接成功。

桥接模式配置简单,如果网络环境是ip资源很缺少或对ip管理比较严格的话,不建议使用桥接模式,可以使用NAT模式。

二、NAT(地址转换模式)

NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。结构图如下:

虚拟机不占用主机所在局域网的ip,通过使用主机的NAT功能访问局域网和互联网,意味着虚拟机可以访问局域网中的其他电脑,但是其他电脑不知道虚拟机的存在。使用这种模式时,虚拟机不需要设置静态IP,只需要使用DHCP功能自动获取ip即可。这个地方让我耽误了很久,因为一开始想的固定IP比较方便,所以没有设置自动获取,结果不停换IP都不行,后来设置了自动获取所有问题都解决了。

配置过程:首先在虚拟网络编辑器里设置NAT模式里的NAT设置网关地址和DHCP设置虚拟机IP范围,一般默认的设置都不用改,主要为了确保都在同一个网段:

然后设置主机VMnet8虚拟网卡的IPv4设置:

此处要把IP地址设置为虚拟机中NAT模式下设置的网关地址,我设置了自动获取(最好也不要设置自动获取,感觉会出问题),好像也是可以的,同时我的虚拟机地址也是自动获取的(事实证明最好这个不要自动获取,不然三天两头自己换IP又会出问题。。),如果想要固定IP地址,就到虚拟机里设置/etc/sysconfig/network-scripts/ifcfg-eth0文件中的各地址,此时设置的IP要在DHCP设置范围内,网关地址也要跟主机的网关地址一样,我第一次设置了跟虚拟机网关地址一样,第二天就又出问题了,今天改成了主机的网关地址,又好了,所以等如果有问题我再来改。

在这个时候会发现在VMnet8的网络设置里是显示IPv4没有网络访问权限的,也就是说虚拟机不是靠虚拟网卡来连网的,只是用来让主机和虚拟机进行通信的。

三、Host-Only(仅主机模式)

Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。也就是说虚拟机只能和主机通信,不能连网。结构图如下:

步骤基本和NAT一样,设置固定IP时虚拟机IP要和VMnet1在同一网段,网关一致,DNS地址要和主机相同。

在这个过程中我出现的问题:主机的Xshell连接不到虚拟机:最后发现时VMnet8里我把IP写成了虚拟机的IP,应该写虚拟机的网关地址。

一些网络常识:

1.网络中对电脑的访问是通过ip定位的。

就好像我们的身份证号,可以唯一辨识一个人。ip是用来区分网络中的电脑的,因此同一网络(准确讲是“网段”)中,ip地址不能相同。如果同一网络中有相同的ip存在,经常发生无法联网或者经常掉线的情况。

2.网络是分段管理的。

拿局域网为例,我们通常的网段是http://192.168.1.xxx。我们的ip地址就是把xxx成1到254的数字。如果多台计算机的ip的前面数字都是192.168.1,那么就叫做属于同一个网段,他们之间是可以互相通信的。如果一台机器的ip是192.168.1.100,另一台机器的ip是192.168.3.100,正常情况下,不能互相通信的(有办法可以搞定,我们不讨论)。所以,在设置虚拟机时要考虑是否同一个网段。

3.怎么知道电脑的ip地址?

在windows系统下,在命令行中执行ipconfig;在linux系统下,在命令行中执行ifconfig即可,下文会详述。

4.怎么判断是否与对方能够通信?

最简单的方式是执行ping命令。无论是windows还是linux,都可以在命令行中执行“ping 对方ip”

文章来源:https://blog.csdn.net/mmxhappy/article/details/135654806
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。