linux 虚拟网络_macvlan原理

2022-09-22 17:31:08 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

macvlan是Linux操作系统内核提供的网络虚拟化方案之一,更准确的说法是网卡虚拟化方案。它可以为一张物理网卡设置多个mac地址,相当于物理网卡施展了影分身之术,由一个变多个,同时要求物理网卡打开混杂模式。针对每个mac地址,都可以设置IP地址,本来是一块物理网卡连接到交换机,现在是多块虚拟网卡连接到交换机。macvlan应该很简单。

1.环境准备

假设有一块物理网卡,名称是enp0s8,连接到网络192.168.187.0/24网段,就在enp0s8上实验macvlan。

2.创建macvlan

  • 首先将enp0s8网卡的启动方式由原来的dhcp改成manual,不需要再自动获取IP地址,因为对于混杂模式下的网卡,IP地址是没有意义的。修改/etc/network/interfaces,配置如下:
代码语言:javascript复制
auto enp0s8
iface enp0s8 inet manual

创建macvlan:

代码语言:javascript复制
ip link add link enp0s8 dev enp0s8macv.01 type macvlan
ip link add link enp0s8 dev enp0s8macv.02 type macvlan
ip link set enp0s8macv.01 up
ip link set enp0s8macv.02 up

手动分配IP地址:

代码语言:javascript复制
dhclient enp0s8macv.01
dhclient enp0s8macv.02

经过确认可以知道enp0s8macv.01与enp0s8macv.02都正确分配到了网段192.168.187.0/24中的地址。创建的虚拟网卡既可以给本地宿主机使用,也可以指定宿主机上创建的虚拟机。

3.macvlan作用

从以上的创建步骤可以看出,macvlan并没有创建网络,只是虚拟了网卡,共享了物理网卡所连接的外部网络,它的效果与桥接模式是一样的。网络虚拟化的目的就是在多租户场景,在统一的低层网络之上,单独为每个租户虚拟出自己的网络从而达到隔离的目的。macvlan既然不创建网络,又有什么用处呢?答案是效率,它是效率最高的跨主机网络虚拟化解决方案之一。vlan与vxlan方案中涉及到的虚拟化设备:

1.tap设备,就是虚拟机的网卡。

2.bridge设备,宿主机内的网络。

3.vlan/vxlan设备。

而macvlan只涉及到一个虚拟设备macvlan。可以看出,macvlan方案涉及到的虚拟设备更少,数据包处理所经过的点就更少,效率就更高。macvlan会出现在一些对网络性能要求极高的场景下.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169384.html原文链接:https://javaforall.cn

0 人点赞