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.pswp.cn/web/74501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74501.shtml
英文地址,請注明出處:http://en.pswp.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 上執行的這些過程。…