macvlan 和 ipvlan 实现原理及设计案例详解

在这里插入图片描述

一、macvlan 实现原理
1. 核心概念
  • macvlan 允许在单个物理网络接口上创建多个虚拟网络接口,每个虚拟接口拥有 独立的 MAC 地址IP 地址
  • 工作模式
    • bridge 模式(默认):虚拟接口之间可直接通信,类似交换机。
    • private 模式:虚拟接口之间隔离,仅能与物理接口通信。
    • vepa 模式(Virtual Ethernet Port Aggregator):依赖外部交换机实现通信。
    • passthru 模式:将物理接口直接映射到容器(较少使用)。
2. 实现原理
  • MAC 地址隔离:每个 macvlan 接口有唯一的 MAC 地址,物理网络通过 MAC 地址识别不同虚拟接口。
  • 混杂模式(Promiscuous Mode):物理接口需启用混杂模式,以接收所有目标 MAC 地址的流量。
  • 数据包转发:物理接口将流量按 MAC 地址分发到对应的 macvlan 虚拟接口。
3. 适用场景
  • 容器需要独立 MAC 地址(如 Docker 的 macvlan 驱动)。
  • 多租户网络,每个租户需独立网络身份。

二、ipvlan 实现原理
1. 核心概念
  • ipvlan 允许在单个物理接口上创建多个虚拟接口,共享物理接口的 MAC 地址,但使用 独立 IP 地址
  • 工作模式
    • L2 模式:虚拟接口在数据链路层(Layer 2)工作,共享广播域。
    • L3 模式:虚拟接口在网络层(Layer 3)工作,独立路由表。
2. 实现原理
  • MAC 地址共享:所有 ipvlan 接口共享物理接口的 MAC 地址,仅通过 IP 地址区分。
  • 流量隔离:L2 模式通过 VLAN 或防火墙规则隔离;L3 模式通过路由表隔离。
  • 无混杂模式依赖:物理接口无需启用混杂模式。
3. 适用场景
  • MAC 地址受限的环境(如公有云虚拟机)。
  • 需要节省 MAC 地址资源的容器网络。

三、macvlan 设计案例

案例目标
  • 在同一物理接口(如 eth0)上创建两个 macvlan 虚拟接口,分配给两个网络命名空间(ns1ns2)。
  • 验证:
    1. 命名空间之间可互相通信。
    2. 命名空间可通过物理接口访问外部网络。
    3. 宿主机无法直接访问命名空间 IP(隔离性验证)。
实现步骤
  1. 创建命名空间

    sudo ip netns add ns1
    sudo ip netns add ns2
    
  2. 创建 macvlan 接口并分配到命名空间

    # 物理接口 eth0 上为 ns1 创建 macvlan(bridge 模式)
    sudo ip link add macvlan1 link eth0 type macvlan mode bridge
    sudo ip link set macvlan1 netns ns1# 为 ns2 创建 macvlan
    sudo ip link add macvlan2 link eth0 type macvlan mode bridge
    sudo ip link set macvlan2 netns ns2
    
  3. 配置 IP 地址并启用接口

    sudo ip netns exec ns1 ip addr add 192.168.1.101/24 dev macvlan1
    sudo ip netns exec ns1 ip link set macvlan1 up
    sudo ip netns exec ns1 ip route add default via 192.168.1.1  # 假设网关为 192.168.1.1sudo ip netns exec ns2 ip addr add 192.168.1.102/24 dev macvlan2
    sudo ip netns exec ns2 ip link set macvlan2 up
    sudo ip netns exec ns2 ip route add default via 192.168.1.1
    
  4. 验证功能

    # 1. 命名空间之间互通
    sudo ip netns exec ns1 ping -c 3 192.168.1.102# 2. 命名空间访问外网
    sudo ip netns exec ns1 ping -c 3 8.8.8.8# 3. 宿主机无法访问命名空间 IP(隔离性)
    ping -c 3 192.168.1.101   # 应失败
    

四、ipvlan 设计案例

案例目标
  • 在物理接口 eth0 上创建两个 ipvlan 虚拟接口(L2 模式),分配给两个网络命名空间(ns1ns2)。
  • 验证:
    1. 命名空间之间可通信(同一子网)。
    2. 命名空间可通过物理接口访问外网。
    3. 宿主机无法直接访问命名空间 IP(隔离性)。
实现步骤
  1. 创建命名空间

    sudo ip netns add ns1
    sudo ip netns add ns2
    
  2. 创建 ipvlan 接口并分配到命名空间

    # 物理接口 eth0 上为 ns1 创建 ipvlan(L2 模式)
    sudo ip link add ipvlan1 link eth0 type ipvlan mode l2
    sudo ip link set ipvlan1 netns ns1# 为 ns2 创建 ipvlan
    sudo ip link add ipvlan2 link eth0 type ipvlan mode l2
    sudo ip link set ipvlan2 netns ns2
    
  3. 配置 IP 地址并启用接口

    sudo ip netns exec ns1 ip addr add 192.168.1.101/24 dev ipvlan1
    sudo ip netns exec ns1 ip link set ipvlan1 up
    sudo ip netns exec ns1 ip route add default via 192.168.1.1sudo ip netns exec ns2 ip addr add 192.168.1.102/24 dev ipvlan2
    sudo ip netns exec ns2 ip link set ipvlan2 up
    sudo ip netns exec ns2 ip route add default via 192.168.1.1
    
  4. 验证功能

    # 1. 命名空间之间互通
    sudo ip netns exec ns1 ping -c 3 192.168.1.102# 2. 命名空间访问外网
    sudo ip netns exec ns1 ping -c 3 8.8.8.8# 3. 宿主机无法访问命名空间 IP(隔离性)
    ping -c 3 192.168.1.101   # 应失败
    

五、macvlan 与 ipvlan 对比

维度macvlanipvlan
MAC 地址每个虚拟接口独立 MAC共享物理接口 MAC
物理网络要求需支持混杂模式无特殊要求
适用场景容器需要独立 MAC(如 Docker macvlan)MAC 受限环境(如公有云)
广播流量处理所有虚拟接口接收广播L2 模式共享广播域,L3 模式隔离
性能高(内核直接转发)高(无 MAC 地址转换)

六、总结

  • macvlan 适合需要独立 MAC 地址的场景,但依赖物理网络支持混杂模式。
  • ipvlan 适合 MAC 地址受限或物理网络不支持混杂模式的场景,共享 MAC 但通过 IP 隔离。
  • 隔离性验证:无论使用 macvlan 还是 ipvlan,宿主机默认无法直接访问命名空间 IP,确保网络隔离。
  • 扩展应用:可结合 VLAN 或 SDN 控制器实现更复杂的多租户网络隔离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux文件上传下载lrzsz

lrzsz 是一个在 Linux 系统中用于通过串行端口(如 ZMODEM、XMODEM、YMODEM 等协议)进行文件上传和下载的工具集。它通常用于在终端环境中通过串口或 SSH 连接传输文件。 安装 lrzsz 在大多数 Linux 发行版中,你可以使用包管理器来安装 lrzsz。 Debian/Ubuntu: sudo apt-ge…

单片机学习之SPI

物理层 串行全双工总线 需要四根线:SCLK(时钟线),CS(片选线)、MOSI(主设备输出、从设备输入),MISO(主设备输入,从设备输出)。 片选信号 片选信号CS是用来…

大模型应用初学指南

随着人工智能技术的快速发展,检索增强生成(RAG)作为一种结合检索与生成的创新技术,正在重新定义信息检索的方式,RAG 的核心原理及其在实际应用中的挑战与解决方案,通用大模型在知识局限性、幻觉问题和数据安…

docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警

目录 一.docker-compose文件 二.配置文件 三.文件层级关系,docker-compose和配置文件位于同级目录 四.node_exporter页面json文件 五.效果展示 prometheusalertmanager邮件告警 grafana面板效果 六.涉及离线包 一.docker-compose文件 [rootsulibao prometh…

AI设计再现新引擎,科技创新又添新动能——广东省首家行业AI设计工程中心获批成立

近期,大捷智能科技(广东)有限公司(以下简称“大捷智能”)凭借其在人工智能与智能制造领域的突出研发实力与创新科技成果,由广东省科技厅批准设立“广东省模具智能设计与智能制造工程技术研究中心”。 广东省…

【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解决方案

在代码审计项目中,MongoDB可以用于存储元数据和部分结构化信息,但要高效处理向量相似性搜索,需结合其他工具。以下是具体分析: 1. MongoDB 的适用场景 元数据存储: 存储代码片段的文件路径、行号、语言类型等结构化信…

基于ANSYS 概率设计和APDL编程的结构可靠性设计分析

01 可靠度基本理论 结构的极限状态:整个结构的一部分超过某一特定状态就不能满足设计规定的某一功能要求。结构的极限状态实质上是结构工作状态的一个阀值,如果工作状态超过这一阀值,则结构处于不安全、不耐久或不适用的状态;若工…

CyclicBarrier、Semaphore、CountDownLatch的区别,适用场景

CyclicBarrier、Semaphore 和 CountDownLatch 是 Java 并发包中用于线程协作的工具类,它们虽然都与线程同步相关,但设计目的和使用场景有显著差异。以下是它们的核心区别和典型应用场景: 1. CountDownLatch 核心机制 一次性计数器&#xf…

新能源汽车测试中的信号调理模块:从原理到实战应用

摘要 信号调理模块(Signal Conditioning Module, SCM)是新能源汽车(NEV)测试系统中的关键环节,直接影响数据采集的精度与可靠性。本文面向HIL测试工程师、电机测试工程师及整车动力经济性测试工程师,系统性…

Qt5 Mac系统检查休眠

在开发跨平台应用程序时,有时候我们需要检测系统的状态,比如是否处于休眠或唤醒状态。Qt是一个强大的跨平台应用开发框架,支持多种操作系统,包括Windows、Linux、macOS等。在这个场景下,我们关注的是如何在Qt5.10中检测到系统是否休眠以及在Mac上实现这一功能。本文将深入…

RabbitMQ简单介绍和安装

RabbitMQ简单介绍 一.RabbitMQ介绍二.RabbitMQ的作用1.异步解耦2.流量削峰3.消息分发4.延迟通知 三.RabbitMQ安装(Ubuntu)1.先安装Erlang2.安装RabbitMQ3.安装RabbitMQ的管理界面4.创建虚拟机5.端口号信息 四.工作原理图 一.RabbitMQ介绍 RabbitMQ 是一款…

汇编学习之《call, return指令》

call 指令 call 指令就是调用函数的执行,不过它也是几个指令的组合 第一步通过jmp 函数地址的方式先跳转到函数 第二步通过push 指令将函数地址指令额下一行的指令的地址压入栈中。 我们来验证下 首先打开OllyDbg,导入你的程序,找到一个call 函数&…

接口自动化学习三:参数化parameterize

使用parametrize之前: def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize参数化之后: import pytest def add(x,y):return xydata[(10,20,30),(200…

全面解析 Mybatis 与 Mybatis-Plus:深入原理、实践案例与高级特性对比

全面解析 Mybatis 与 Mybatis-Plus:深入原理、实践案例与高级特性对比 🚀 前言一、基础介绍 ✨1. Mybatis 简介 🔍2. Mybatis-Plus 简介 ⚡ 二、核心区别与高级特性对比 🔎1. 开发模式与配置管理2. 功能丰富度与扩展性3. 自动填充…

【区块链安全 | 第十九篇】类型之映射类型

文章目录 映射类型可迭代映射 映射类型 映射类型使用语法 mapping(KeyType KeyName? > ValueType ValueName?),映射类型的变量声明使用语法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何内置值类型、bytes、st…

动态循环表单+动态判断表单类型+动态判断表单是否必填方法

页面效果: 接口请求到的数据格式: list: [{demandType: "设备辅助功能要求",demandSettingList: [{id: "1907384788664963074",name: "测试表单",fieldType: 0,contentValue: "",vaildStatus: 0, // 0 非必填&a…

蓝桥杯DFS算法题(java)

最大连通 链接: https://www.lanqiao.cn/problems/2410/learning/ 问题描述 小蓝有一个 30 行 60 列的数字矩阵,矩阵中的每个数都是 0 或 1 。 1100100000111111101010010010011010101110110110111010011111100100000000010100011011000000100101100011…

解锁物种分布模拟新技能:MaxEnt 模型与 R 语言的奇妙融合

技术点目录 第二章、常用数据检索与R语言自动化下载及可视化方法第三章、R语言数据清洗与特征变量筛选第四章、基于ArcGIS、R数据处理与进阶第五章、基于Maxent的物种分布建模与预测第六章、基于R语言的模型参数优化第七章、物种分布模型结果分析与论文写作 —————————…

三轴云台之相机技术篇

一、结构设计 三轴云台通常由空间上三个互相垂直的框架构成,包括内框(俯仰框)、中框(方位框)和外框(横滚框)。这些框架分别负责控制相机的俯仰运动、方位运动和横滚运动,从而实现对目…

全文 - MLIR Toy Tutorial Chapter 3 :高层次上语言特定的分析和变换

使用 C 风格的模式匹配和重写来优化转置运算 使用 DRR 优化 reshape 运算 创建一种贴近输入语言的语义表示的方言,可以在 MLIR 中分析、变换和优化,这些过程中需要用到高级语言的信息,而且通常是在语言的 AST 上执行的这些过程。…