几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案。 macvlan 也是其中的一种,准确说这是一种网卡虚拟化的解决方案。 能将 一块物理网卡虚拟成多块虚拟网卡。 要求物理网卡打开混杂模式。 本来是一块物理网卡连接到交换机,现在是多块虚拟网卡连接到交换机。

图解

docker网络模式介绍.excalidraw

网卡的工作模式

1) 广播模式(Broad Cast Model): 只接收广播帧。
2) 多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。
3) 直接模式(Direct Model): 只接收目地址是自己 Mac地址的帧。
4) 混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

macvlan实例

场景示例:

  • 宿主机网络192.168.1.0/24(网关 192.168.1.1
  • macvlan 子网10.0.0.0/24(网关 10.0.0.1

连通性分析

通信方向 是否可达 原因
容器 ↔ 容器(同子网) ✅ 是 通过 macvlan 直接二层互通(广播域隔离在 10.0.0.0/24 内)。
容器 ↔ 宿主机 ❌ 否 子网不同,宿主机无路由到 10.0.0.0/24(除非手动添加路由)。
容器 ↔ 物理网络其他设备 ❌ 否 物理网络的设备无法响应 10.0.0.0/24 的 ARP 请求(跨子网需三层路由)。
容器 ↔ 外部互联网 ❌ 否 网关 10.0.0.1 通常不存在,且物理网络路由器不识别该子网。

广播域隔离

  • 物理网络的广播包(如 192.168.1.255)不会到达 macvlan 容器。
  • macvlan 容器的广播包(如 10.0.0.255)不会到达物理网络。

相关笔记

  • 网络&设备