Linux 网络虚拟化

——从第一性原理到架构模型的系统性理解


一、问题起点:为什么需要网络虚拟化?

在任何计算系统中,网络的本质目标只有一个

在逻辑上独立的通信实体之间,提供可控、可扩展、可隔离的通信路径

但 Linux 面临的现实约束是:

👉 网络虚拟化的本质,就是在“单一物理网络资源”之上,构造“多个逻辑网络世界”。


二、第一性原理:Linux 网络虚拟化在解决的三个不变问题

所有 Linux 网络虚拟化技术,无论名字多么不同,本质都落在以下三个稳定问题空间中

1️⃣ 通信路径如何被「感知、拦截、重写」?

—— 控制数据“怎么走”


2️⃣ 如何在同一内核中构造「多个网络端点」?

—— 制造“看起来像独立网卡”的逻辑接口


3️⃣ 如何跨越物理边界,扩展网络语义?

—— 让逻辑网络突破物理网络限制


⚠️ 后文所有技术,都是这三类问题的不同工程实现


三、Linux 网络通信的稳定模型(非实现细节)

在理解虚拟化之前,必须先明确 Linux 网络的稳定抽象结构

3.1 网络通信的不可变分层模型

应用视角  ↓Socket(通信抽象)  ↓传输层(TCP / UDP)  ↓网络层(IP)  ↓网络设备抽象(Net Device)  ↓驱动 & 物理介质

关键认知:


四、数据路径干预:Netfilter 的抽象意义

4.1 Netfilter 不是防火墙,而是「路径控制框架」

Netfilter 的五个 Hook 并不是实现细节,而是一个稳定的路径切分模型

Hook抽象语义
PREROUTING数据刚进入系统
INPUT发往本机
FORWARD需要转发
OUTPUT本机发出
POSTROUTING即将离开系统

👉 这是 Linux 网络“可治理性”的基础。


4.2 稳定能力总结

Netfilter 提供的不是功能,而是能力:


五、虚拟网络设备:在内核中制造「逻辑网卡」

5.1 虚拟设备的统一抽象

所有虚拟网卡,本质上都是:

实现 Net Device 接口的“软件对象”


5.2 tun / tap:制造“虚拟网络入口”

设备抽象层级核心用途
tunL3IP 级隧道
tapL2以太级接入

稳定理解:


5.3 veth:连接两个网络世界的“虚拟网线”

veth 的抽象本质:

一根内核中的“点对点以太网线”

稳定特性:

👉 veth 是容器网络的基础连接原语


5.4 macvlan:虚拟“网络身份”

macvlan 的本质不是链路,而是:

在同一物理网卡上,制造多个 MAC 身份

适用场景:


六、虚拟交换结构:构造广播域与二层语义

6.1 Linux Bridge 的稳定角色

Linux Bridge ≠ VMware BridgeLinux Bridge 的抽象角色是:

软件实现的二层交换结构

稳定能力:


6.2 Bridge 在虚拟化中的地位

👉 它是“逻辑二层网络”的核心实现


七、隧道与 Overlay:突破物理网络限制

7.1 GRE:最小抽象的隧道模型

GRE 的本质:

IP-over-IP

稳定特性:


7.2 VXLAN:Overlay 网络的标准形态

VXLAN 的出现并非偶然,而是为了解决:

稳定抽象:

L2-over-L3 的逻辑网络封装


八、统一能力矩阵(稳定认知核心)

技术抽象层解决的问题
Netfilter路径数据如何流转
tun/tap接口虚拟网络入口
veth链路网络空间连接
bridge交换二层语义
macvlan身份多 MAC 隔离
GRE隧道简单封装
VXLANOverlay大规模虚拟网络

九、演进视角:Linux 网络虚拟化的必然路径

物理网络  ↓VLAN(硬件隔离)  ↓Linux Bridge(软件二层)  ↓Namespace + veth(进程级网络)  ↓Overlay(VXLAN)  ↓云原生网络

技术在变,但“隔离、扩展、治理”这三个目标不变


十、稳定知识与不稳定知识的边界

稳定知识(值得长期记忆)

不稳定知识(随时间淘汰)

关联内容(自动生成)