网络虚拟化是啥啊?
🧠 首先:什么是“虚拟网络”?
在虚拟机或容器的世界里,所有“机器”都是假造的。那么这些虚拟机器之间要通信,就得有“假造的网卡、交换机、路由方式”,这就是虚拟网络。
🧩 一、vNIC(Virtual Network Interface Card)虚拟网卡
✅ 什么是 vNIC?
- 虚拟机或容器内部看到的网卡,就像真实电脑里的网卡一样。
- 每台虚拟机创建时都会配一个或多个 vNIC。
📌 你可以理解为:
一台虚拟机长了一个“虚拟耳朵”,用来听网络的声音,它其实是映射到宿主机上的虚拟网卡。
🎯 特点:
- 每个 vNIC 有自己的 MAC 地址
- 绑定到某个虚拟交换机(vSwitch)上
- 支持多种模式(桥接/NAT/仅主机等)
🧩 二、vSwitch(Virtual Switch)虚拟交换机
✅ 什么是 vSwitch?
- 类似于你现实中见过的交换机(插很多网线的那种),但它是“运行在宿主机上的软件交换机”。
- 把多个虚拟机的 vNIC 连起来,形成一个虚拟局域网。
📌 类比一下:
多个虚拟机就像多个办公室,vNIC 是办公室的电话,vSwitch 是整个公司的交换台。
🎯 技术实例:
- Linux Bridge:最简单的虚拟交换机
- Open vSwitch(OVS):功能更强的开源 vSwitch,支持 SDN、VXLAN、DPDK
🧩 三、桥接(Bridged)模式
✅ 定义:
虚拟机通过 vNIC 接到 vSwitch 上,然后 vSwitch 与物理网卡直接“桥接”。
📌 特点:
- 虚拟机就像直接连到真实局域网中,能被其他真实设备访问。
- 会占用一个实际 IP(路由器会给它分配 IP)。
📦 举个例子:
你用 VirtualBox 创建一台虚拟机,设置为“桥接模式”,你的路由器会给它分配一个和你电脑一样网段的 IP,比如 192.168.1.123。
🧩 四、NAT(Network Address Translation)模式
✅ 定义:
虚拟机通过宿主机“代理”访问外网,自己没有公网 IP,只能通过宿主机访问网络。
📌 特点:
- 宿主机相当于“网关”
- 虚拟机能访问外网(比如上网),但外网不能访问虚拟机
- 不占用局域网 IP,适合开发环境
📦 举个例子:
就像你家电脑通过路由器上网一样,外网看不见你家的内部设备(这是 NAT 原理)。
🧩 五、Overlay 网络(覆盖网络)
✅ 定义:
在物理网络之上“再构建一张虚拟网络”,用于连接跨主机的虚拟机/容器。
📌 常用技术:
- VXLAN(最主流)
- GRE、Geneve
📌 应用场景:
- 容器跨主机通信(Kubernetes)
- 云平台中的租户隔离(如多个用户的私有网络)
📦 举个例子:
多台物理机上的虚拟机需要像“同一局域网”一样互相通信,但它们其实跨了不同的服务器。Overlay 网络让它们“假装自己在一个网段”。
🧱 总结对比表
概念 | 是什么 | 用来干嘛 | 是否常见 |
---|---|---|---|
vNIC | 虚拟网卡 | 虚拟机/容器连接网络的“耳朵” | ✅ 必需 |
vSwitch | 虚拟交换机 | 在宿主机内实现局域网 | ✅ 必需 |
桥接 | 让虚拟机进入真实局域网 | 真实 IP,和主机平等 | ✅ 常用 |
NAT | 虚拟机通过主机代理上网 | 开发常用,不被外部访问 | ✅ 常用 |
Overlay | 跨主机的虚拟网络 | 用于容器、云平台、租户隔离 | ✅ 云原生场景必备 |
🖼️ 结构图示意(文字版)
+--------------------------------------+
| 宿主机(Host) |
| |
| +----------------------+ |
| | 虚拟交换机 vSwitch | <--------> 物理网卡(eth0) ←→ 路由器
| +----------------------+ |
| | | |
| vNIC1 vNIC2 |
| | | |
| [虚拟机A] [虚拟机B] |
+--------------------------------------+桥接:vSwitch 和物理网卡桥接,VM 直接进入局域网
NAT:VM 经宿主机代理访问外网,IP 不暴露
Overlay:多台宿主机之间用 VXLAN 隧道连接,形成跨机虚拟局域网
📘 学习建议(按顺序学):
- 学会在 VirtualBox 或 VMware 中设置网络模式(桥接 vs NAT)
- 学习 vNIC 和 vSwitch 的概念
- 用 Linux 创建一个桥接网络(brctl、ip link)
- 了解 Overlay 网络(VXLAN 工作原理)
- 学习 Docker / Kubernetes 中的虚拟网络实现(Flannel、Calico)