{"name":"Linux虚拟化","id":"计算机网络-Linux虚拟化","content":"# Linux 网络虚拟化\n\n## ——从第一性原理到架构模型的系统性理解\n\n---\n\n## 一、问题起点：为什么需要网络虚拟化？\n\n在任何计算系统中，**网络的本质目标只有一个**：\n\n> **在逻辑上独立的通信实体之间，提供可控、可扩展、可隔离的通信路径**\n\n但 Linux 面临的现实约束是：\n\n* 一个物理机，只有：\n\n  * 一套物理网卡\n  * 一条真实的物理链路\n* 却需要同时支持：\n\n  * 多进程\n  * 多命名空间\n  * 多虚拟机 / 容器\n  * 多租户隔离\n  * 跨主机通信\n\n👉 **网络虚拟化的本质，就是在“单一物理网络资源”之上，构造“多个逻辑网络世界”。**\n\n---\n\n## 二、第一性原理：Linux 网络虚拟化在解决的三个不变问题\n\n所有 Linux 网络虚拟化技术，**无论名字多么不同，本质都落在以下三个稳定问题空间中**：\n\n### 1️⃣ 通信路径如何被「感知、拦截、重写」？\n\n> —— **控制数据“怎么走”**\n\n* 对应抽象：**数据路径干预**\n* 对应机制：**Netfilter / Hook 点**\n* 本质能力：\n\n  * 拦截\n  * 重定向\n  * 修改\n  * 丢弃\n\n---\n\n### 2️⃣ 如何在同一内核中构造「多个网络端点」？\n\n> —— **制造“看起来像独立网卡”的逻辑接口**\n\n* 对应抽象：**虚拟网络设备**\n* 本质能力：\n\n  * 提供独立的发送/接收视角\n  * 绑定命名空间\n  * 隔离网络身份\n\n---\n\n### 3️⃣ 如何跨越物理边界，扩展网络语义？\n\n> —— **让逻辑网络突破物理网络限制**\n\n* 对应抽象：**隧道与 Overlay**\n* 本质能力：\n\n  * 封装\n  * 解封装\n  * 逻辑网络扩展\n\n---\n\n> ⚠️ 后文所有技术，都是这三类问题的**不同工程实现**。\n\n---\n\n## 三、Linux 网络通信的稳定模型（非实现细节）\n\n在理解虚拟化之前，必须先明确 Linux 网络的**稳定抽象结构**：\n\n### 3.1 网络通信的不可变分层模型\n\n```text\n应用视角\n  ↓\nSocket（通信抽象）\n  ↓\n传输层（TCP / UDP）\n  ↓\n网络层（IP）\n  ↓\n网络设备抽象（Net Device）\n  ↓\n驱动 & 物理介质\n```\n\n**关键认知：**\n\n* Linux 网络虚拟化的切入点，**几乎全部发生在：**\n\n  * Net Device 抽象\n  * IP 层及其上下\n\n---\n\n## 四、数据路径干预：Netfilter 的抽象意义\n\n### 4.1 Netfilter 不是防火墙，而是「路径控制框架」\n\nNetfilter 的五个 Hook 并不是实现细节，而是一个**稳定的路径切分模型**：\n\n| Hook        | 抽象语义    |\n| ----------- | ------- |\n| PREROUTING  | 数据刚进入系统 |\n| INPUT       | 发往本机    |\n| FORWARD     | 需要转发    |\n| OUTPUT      | 本机发出    |\n| POSTROUTING | 即将离开系统  |\n\n👉 **这是 Linux 网络“可治理性”的基础。**\n\n---\n\n### 4.2 稳定能力总结\n\nNetfilter 提供的不是功能，而是能力：\n\n* 网络治理能力\n* 多租户边界控制\n* 虚拟网络出口控制（NAT）\n\n---\n\n## 五、虚拟网络设备：在内核中制造「逻辑网卡」\n\n### 5.1 虚拟设备的统一抽象\n\n所有虚拟网卡，本质上都是：\n\n> **实现 Net Device 接口的“软件对象”**\n\n---\n\n### 5.2 tun / tap：制造“虚拟网络入口”\n\n| 设备  | 抽象层级 | 核心用途   |\n| --- | ---- | ------ |\n| tun | L3   | IP 级隧道 |\n| tap | L2   | 以太级接入  |\n\n**稳定理解：**\n\n* tun/tap = **把“网络设备”暴露给用户态程序**\n* 常用于：\n\n  * VPN\n  * 用户态网络协议实现\n\n---\n\n### 5.3 veth：连接两个网络世界的“虚拟网线”\n\nveth 的抽象本质：\n\n> **一根内核中的“点对点以太网线”**\n\n稳定特性：\n\n* 成对出现\n* 常用于：\n\n  * Namespace ↔ Namespace\n  * Host ↔ Container\n\n👉 **veth 是容器网络的基础连接原语**\n\n---\n\n### 5.4 macvlan：虚拟“网络身份”\n\nmacvlan 的本质不是链路，而是：\n\n> **在同一物理网卡上，制造多个 MAC 身份**\n\n适用场景：\n\n* 多租户二层隔离\n* 对接传统网络设备\n\n---\n\n## 六、虚拟交换结构：构造广播域与二层语义\n\n### 6.1 Linux Bridge 的稳定角色\n\nLinux Bridge ≠ VMware Bridge\nLinux Bridge 的抽象角色是：\n\n> **软件实现的二层交换结构**\n\n稳定能力：\n\n* MAC 学习\n* 二层转发\n* 广播域管理\n\n---\n\n### 6.2 Bridge 在虚拟化中的地位\n\n* Bridge 是：\n\n  * veth\n  * tap\n  * 物理网卡\n    的**聚合中心**\n\n👉 **它是“逻辑二层网络”的核心实现**\n\n---\n\n## 七、隧道与 Overlay：突破物理网络限制\n\n### 7.1 GRE：最小抽象的隧道模型\n\nGRE 的本质：\n\n> **IP-over-IP**\n\n稳定特性：\n\n* 点对点\n* 简单\n* 无多租户能力\n\n---\n\n### 7.2 VXLAN：Overlay 网络的标准形态\n\nVXLAN 的出现并非偶然，而是为了解决：\n\n* VLAN 数量限制\n* 跨三层扩展二层语义\n* 云规模多租户\n\n稳定抽象：\n\n> **L2-over-L3 的逻辑网络封装**\n\n---\n\n## 八、统一能力矩阵（稳定认知核心）\n\n| 技术        | 抽象层     | 解决的问题    |\n| --------- | ------- | -------- |\n| Netfilter | 路径      | 数据如何流转   |\n| tun/tap   | 接口      | 虚拟网络入口   |\n| veth      | 链路      | 网络空间连接   |\n| bridge    | 交换      | 二层语义     |\n| macvlan   | 身份      | 多 MAC 隔离 |\n| GRE       | 隧道      | 简单封装     |\n| VXLAN     | Overlay | 大规模虚拟网络  |\n\n---\n\n## 九、演进视角：Linux 网络虚拟化的必然路径\n\n```text\n物理网络\n  ↓\nVLAN（硬件隔离）\n  ↓\nLinux Bridge（软件二层）\n  ↓\nNamespace + veth（进程级网络）\n  ↓\nOverlay（VXLAN）\n  ↓\n云原生网络\n```\n\n> **技术在变，但“隔离、扩展、治理”这三个目标不变**\n\n---\n\n## 十、稳定知识与不稳定知识的边界\n\n### 稳定知识（值得长期记忆）\n\n* 网络分层思想\n* 虚拟化抽象模型\n* Overlay 原理\n* 数据路径治理\n\n### 不稳定知识（随时间淘汰）\n\n* 某个 vmnet 名称\n* 具体命令参数\n* 某版本内核实现细节\n\n## 关联内容（自动生成）\n\n- [/操作系统/虚拟化.md](/操作系统/虚拟化.md) 虚拟化技术是Linux网络虚拟化的基础，文档详细介绍了虚拟化的基本概念、技术实现和隔离机制，与Linux网络虚拟化中的namespace、cgroups等概念密切相关\n- [/操作系统/容器化.md](/操作系统/容器化.md) 容器化技术大量使用了Linux网络虚拟化技术，特别是namespace、veth、bridge等，文档中的容器网络部分与本篇内容高度相关\n- [/运维/Docker.md](/运维/Docker.md) Docker的网络实现大量使用了Linux网络虚拟化技术，包括veth pair、bridge、iptables等，是Linux网络虚拟化的典型应用场景\n- [/运维/K8s.md](/运维/K8s.md) Kubernetes的网络模型依赖于Linux网络虚拟化技术，文档中的网络部分涉及了pod网络、service网络等概念，与Linux网络虚拟化密切相关\n- [/计算机网络/网络层.md](/计算机网络/网络层.md) 网络层协议与Linux网络虚拟化技术相互配合，文档中的IP协议、路由、NAT等概念在Linux网络虚拟化中有具体实现\n- [/计算机网络/云计算.md](/计算机网络/云计算.md) 云计算环境大量使用Linux网络虚拟化技术来实现多租户隔离、网络服务虚拟化等，文档中的虚拟网络、VPC等概念与Linux网络虚拟化相关\n- [/软件工程/架构/系统设计/云原生.md](/软件工程/架构/系统设计/云原生.md) 云原生架构大量使用容器和网络虚拟化技术，文档中的容器化、服务网格等概念与Linux网络虚拟化密切相关\n- [/软件工程/微服务/ServiceMesh/ServiceMesh.md](/软件工程/微服务/ServiceMesh/ServiceMesh.md) Service Mesh的实现依赖于Linux网络虚拟化技术，特别是iptables流量劫持、sidecar模式等，与Linux网络虚拟化中的数据路径干预概念相关\n","metadata":"tags: ['网络']","hasMoreCommit":false,"totalCommits":5,"commitList":[{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2025-12-21T14:36:42+08:00","author":"MY","message":"docs(network): 重构 Linux 网络虚拟化文档内容与结构","hash":"a55eecdac7940431515baeb847f77c65eee678d3"},{"date":"2023-05-25T16:41:11+08:00","author":"MY","message":"✏计算机网络","hash":"9fa90391b4921ad8f18525bfe368c17388ae7582"},{"date":"2023-05-24T16:54:09+08:00","author":"MY","message":"✏计算机网络","hash":"af01305acc7b161960289554184c9a8ebf2c950b"},{"date":"2020-12-01T14:55:26+08:00","author":"cjiping","message":"➕增加 Linux网络虚拟化","hash":"d3fe15824511368a8614aefb8d8c730a550eaa00"}],"createTime":"2020-12-01T14:55:26+08:00"}