简单介绍Linux几种网络模式

虚拟化层次:

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式

打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器"中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8

(NAT模式),那么这些都是有什么作用呢?其实,我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用

于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_02

Linux可以分为三种网络模式:

  1. 桥接模式 (vmnet0)
  2. 仅主机模式 (vmnet1)
  3. NAT模式 (vmnet8)

当我们下载了vmware之后,在电脑会出现两个虚拟网卡,VMware Network Adapter VMnet1、VMware Network Adapter VMnet8。

可以通过查找 控制面板——网络和 Internet——网络和共享中心——更改适配器设置 看到虚拟网卡:

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_03

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_04

可能有人疑惑了,为什么在虚拟机看到了vmnet0、vmnet1和vmnet8网卡,在物理机没有看到桥接的虚拟网卡vmnet0?

这就要说说桥接、仅主机、NAT这三种网络模式了

桥接模式(Bridged)

桥接模式就是在物理机的网卡跟虚拟机的网卡之间建立一个网桥,可以把物理机的网卡想象成交换机,物理机和虚拟机都接在一个交换机上,交换机连接路由器就可以访问互联网了,接在交换机下的所有主机都可以相互通信互不影响。这样物理机和虚拟机就都可以上网了。这样也就解释了为什么物理机中没有 vmnet0了。

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_05

桥接模式下,虚拟机IP地址与物理机在同一个网段,如果需要联网,则网关与DNS需要与物理机网卡一致。

Windows键+R 进入DOS命令窗口,输入:cmd 再输入:ipconfig,查看物理机IP:

步骤:

WIN+R键
cmd
ipconfig

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_06

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_07

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_08

我们把虚拟机的网络模式设置为桥接,激活网卡,输入ip a命令查看是不是192.168.0这个网段。

步骤总结:

修改网络适配器的网络连接模式为桥接
进入/etc/sysconfig/network-scripts/ifcfg-ens33文件修改ONBOOT=NO为ONBOOT=yes
systemctl restart network
ip a
ping www.baidu.com

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_09

输入:vi /etc/sysconfig/network-scripts/ifcfg-ens33

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_10

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_11

systemctl restart network
ip a

可以看到桥接模式下的虚拟IP和物理机处于同一网段:

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_12

检测一下网络状态:(使用ping这个命令可以检测网络是否通)

ping www.baidu.com

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_13

桥接模式设置完成。

桥接模式配置简单,但如果你的网络环境是ip资源很缺少或对ip管理比较严格的话,那桥接模式就不太适用了。

NAT模式

刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。

在NAT模式中,物理主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。VMware Network Adapter VMnet8虚拟网卡主要是为了实现物理主机与虚拟机之间的通信。

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_14

Windows键+R 进入DOS命令窗口,输入:cmd 再输入:ipconfig,查看vmnet8, NAT在192.168.152这个网段:

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_15

也可以在虚拟机的编辑选项,虚拟网络编辑器查看:

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_16

我们把虚拟机的网络模式设置为NAT,激活网卡,输入ip a命令查看是不是192.168.152这个网段。

修改网络适配器的网络连接模式为NAT
修改ONBOOT=NO为ONBOOT=yes
systemctl restart network
ip a
ping www.baidu.com

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_17

看看虚拟机的NAT ip,在192.168.152这个网段,检查一下网络:

ip a
ping www.baidu.com

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_18

NAT设置成功。

仅主机模式(host-only)

Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统。在这个模式下,主机可以访问虚拟机。但是

虚拟机不能访问主机,也不能访问外网。

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_19

可以看到仅主机ip为192.168.200这个网段:

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_20

我们把虚拟机的网络模式设置为host-only,激活网卡,输入ip a命令查看是不是192.168.200这个网段。

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_21

发现ip在192.168.200这个网段:

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_22

检测一下网络状态:(使用ping这个命令可以检测网络是否通)

虚拟机一直ping不通百度,因为仅主机模式,物理主机可以访问虚拟机。但是虚拟机不能访问物理主机,也不能访问外网

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_23

我们用Win+R键,输入cmd,ping一下虚拟机的IP,可以访问虚拟机。

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_24

host-only模式联网

如果要使得虚拟机能联网,我们可以将主机网卡共享给VMware Network Adapter VMnet1网卡,从而达到虚拟机联网的目的。

控制面板找到你的网络,右键属性,点击共享:

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_25

这时候可以看到VMware Network Adapter VMnet1的ip变成了静态ip192.168.137.1:

linux ifconfig 网络 网卡 docker linux 网卡模式_桥接模式_26

进入虚拟机,编辑选项,虚拟网络编辑器,强制将VMnet1的ip设置成192.168.137.1,那么接下来,我们就要将虚拟机的DHCP的子网和起始地址进行修改。

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_27

vi /etc/sysconfig/network-scripts/ifcfg-ens33

linux ifconfig 网络 网卡 docker linux 网卡模式_VMware_28

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_29

IPADDR=192.168.137.100   #IP地址,在192.168.137这个网段都可以
GATEWAY=192.168.137.1   #网关
PREFIX=24  #子网掩码
#NETMASK=255.255.255.0   #子网掩码的另一种表示方法
DNS=223.5.5.5  #阿里云的DNS
systemctl restart network
ip a
ping www.baidu.com

linux ifconfig 网络 网卡 docker linux 网卡模式_NAT_30