虚拟机网络 桥接 & NAT
words: 1.6k views: time: 5minvmware版本:14.1.1
ubuntu版本:16.0.4
centos版本:7.9
桥接与NAT区别
桥接模式(bridged):
在桥接模式下,vmware虚拟出来的虚拟机就像是局域网中的一台独立主机,此时虚拟机与host机在网络关系上处于对等的地位,它可以访问网内任何一台机器。主机网卡和虚拟网卡的IP地址处于同一个网段,子网掩码、网关、DNS等参数都相同。
这种方式是直接将虚拟机桥接到一个物理网卡上,此时虚拟机和host机同时使用真实网卡工作,通过真实网卡发送数据。如果虚拟机发送数据给host机,那么数据流是:虚拟机->真实网卡->路由器->真实网卡->host机。
这样一个数据是经过网卡在路由器上面绕了一圈又回到了网卡。所以桥接必须经过真实网卡和路由器,这也是为什么当你的电脑没有连接有线网或者Wifi时,host机无法与虚拟机进行交互的原因,即便看起来两者很近也不行。
NAT模式:
NAT模式实际虚拟了一个网卡出来,虚拟机连接这个虚拟网卡,每次访问和交互都通过这个虚拟网卡交换数据。如果虚拟机发送数据给host机,那么数据流是:虚拟机->虚拟网卡->host机,不用再经过真实网卡。如果虚拟机访问外网,则数据流是:虚拟机->虚拟网卡->host机->真实网卡->路由器->外网。
在NAT模式中,虚拟机不需要与真实网卡处于同一个网络,这种模式的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要host机器能访问互联网即可。但是反之如果虚拟机要提供服务,并想从外网访问,就需要对NAT网关进行设置,因为对于网络中的其它机子来说,它们只能看到host机,所以需要将虚拟机提供的服务端口映射到host机的端口上。
一般如果是在自己电脑上(比如出差)提供类似Gitlab这种团队协作的公共服务时,我们会使用NAT模式,这样当host机在不同网断之间切换时对虚拟机没有任何影响,别人只要能访问你主机就行。而如果是将虚拟机作为服务器来安装各种程序对外提供服务,则应该用桥接模式,不然每次安装一个服务,都需要配置端口映射,而且端口一旦变化链路就是失效,会很麻烦。
vmware设置桥接模式
打开宿主机的网络设置,看到有如下网卡,其中只有Wi-Fi是连网的
所以这里选择Wi-Fi网卡进行桥接,可以看到VMnet0在宿主机的网络设置中并没有出现,因为桥接是直接连接的物理网卡。当然这里也可以添加或移除网络,然后设置网络模式,在后面连接具体虚拟机直接选择对应的网络。
记住这个网卡的连接信息(后面配置虚拟机网络时用)
vmware设置NAT模式
选择NAT模式,设置NAT网段
然后进入NAT设置,配置网关,如果虚拟机要对外提供服务的话,需要在这里添加端口映射
再配置一下宿主机的虚拟网卡地址,网关就是上面配置的,ip不要与虚拟机冲突
桥接模式连接ubuntu
选中ubuntu虚拟机进入设置,选择桥接模式
登录ubuntu,然后根据上面桥接的网卡信息,修改网络配置文件vim /etc/network/interfaces
,并重启网络
1 | auto ens33 |
NAT模式连接centos
选中centos虚拟机进入设置,选择NAT模式(这里选择自定义网络是一样的,默认三种网络VMnet0、VMnet1、VMnet8,也可以自己添加和设置)
登录centos,然后根据上面的NAT设置信息,修改网络配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33
,并重启网络
1 | #修改 |
FAQ
- 无法连网问题
一般虚拟机无法访问外网的话,如果不是dns域名解析问题,就怀疑网关是否设置正确(网关的作用就是当访问的目标在所处网络中找不到时,就会将内容发给网关),也就是上面配置的gateway,可以通过route命令查看
也可以手动添加网关:
1 | route add default gw 192.168.141.1 ens33 |
- 设置多个ip问题
一个网卡设置两个或者多个IP地址的,也就是同时访问多个网段,但前提是这些网段的物理层是连接在一起。
假设有两个局域网(LAN)通过交换机连接在一起,LAN1网段为:192.168.0.0/24,LAN2网段为:192.168.1.0/24,在没有第三层设备的情况下LAN1与LAN2下的主机是不可以相互访问的,虽然两个LAN通过交换机连接在了一起。
但如果LAN1下的一台主机PC1设置了两个IP地址192.168.0.100/24和192.168.1.100/24,那么PC1就可以访问LAN2下的主机,因为通过ip协议就能找到目标主机,不要进行路由交换
- OracleLinux 没有找到合适的设备
之前在对Oracle Linux 6设置ip时遇到了一个ip丢失的情况,然后重启网络服务service network restart,发现如下提示
于是 vim /etc/udev/rules.d/70-persistent-net.rules,查看网络设备
最后根据报错对应的设备,对配置文件重命名,并修改mac地址,同时删除其他错误的配置文件,再次重启网络服务
参考: