首页 新闻 会员 周边

容器的 veth pair 技术和VMware

0
[已解决问题] 解决于 2026-06-16 21:15

容器的 veth pair 技术(基于 Linux 内核)veth pair  是 Linux 内核原生提供的一种特殊网络设备。它总是成对出现,像一根虚拟网线,专门用于连接不同的网络命名空间(Network Namespace)。Docker 等容器技术正是利用了这一内核特性,实现了极轻量级的进程级网络隔离和通信。

VMware 的桥接技术(基于虚拟交换机与驱动层)主要依赖虚拟交换机(Virtual Switch)和底层网络驱动来实现通信,而不是简单的  veth pair。VMware 会在宿主机上创建软件定义的虚拟交换机(例如桥接模式下的 VMnet0)。虚拟机本质上就是挂载在这个虚拟交换机端口上的“终端节点”

核心原因:工作的协议层不同

  • 桥接和仅主机模式工作在“数据链路层”(第 2 层):

    • 它们处理的是数据帧(MAC 地址、以太网帧)。

    • 操作网卡、转发数据帧、维护 MAC 地址表——这些事情需要极高的实时性和直接访问硬件的权限

    • 只有内核驱动.sys 文件,运行在 ring 0)才能操作物理或虚拟网卡的寄存器、中断、DMA(直接内存访问)。

    • 如果让一个 .exe 用户态程序去干这个,每处理一个数据包都要在内核态和用户态之间切换无数次,性能会差到无法使用。

  • NAT 模式工作在“网络层和传输层”(第 3、4 层):

    • 它处理的是IP 数据包和 TCP/UDP 端口

    • NAT 的核心工作是:

      1. 修改 IP 数据包的源地址(虚拟机私网 IP → 宿主机物理网卡 IP)。

      2. 修改 TCP/UDP 数据包的端口号,并维护一个连接追踪表(conntrack table)。

      3. 处理 ICMP、FTP ALG(应用层网关)等协议。

    • 这些工作虽然需要高性能,但不要求直接控制硬件,而是处理 Windows 操作系统已经收到的 IP 包。

      • 物理世界:
        [虚拟机] ---(虚拟网卡)---> [VMnet0 虚拟交换机] ---(桥接)---> [宿主机物理网卡] ---> 外部局域网/互联网

        宿主机没有连到 VMnet0 的虚拟网卡,
        所以宿主机想访问虚拟机,需要走物理网卡的外部 IP。

        仅主机世界:
        [虚拟机] ---(虚拟网卡)---> [VMnet1 虚拟交换机] <---(虚拟网卡)---> [宿主机]

        宿主机有专门的虚拟网卡(VMware Network Adapter VMnet1/8),
        可以直接和虚拟机通信。

        • VMnet0 = 桥接模式的虚拟交换机

        • VMnet1 = 仅主机模式的虚拟交换机

          • VMnet8 = NAT 模式的虚拟交换机

NAT 模式 vmnat.exe 应用程序/服务 后台进程 (在 SysWOW64 文件夹) 实现 IP 地址转换,让虚拟机共享宿主机 IP 上网-2-4
桥接模式 vmnetBridge.sys 内核驱动 与物理网卡交互 让虚拟机直接使用宿主机物理网卡,像局域网内一台独立电脑-4
仅主机模式 vmnetAdapter.sys 内核驱动 配合虚拟网卡 VMnet1 建立宿主机与虚拟机之间的私有网络,无法访问外网-2

NAT模式:

虚拟机发出数据包 -> VMnet8虚拟交换机-> 虚拟NAT设备(这是由 vmnat.exe 服务在背后驱动的虚拟路由器-> 宿主机物理网卡 -> 外网

宿主机上的虚拟网卡如

VMware Network Adapter VMnet8/1就是走内核数据帧和虚拟通信,不走用户态

*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1746
提问于:2026-06-16 21:09
< >
分享
最佳答案
0

vmnat.exe 就是 VMware 虚拟网络中的 NAT 设备(虚拟路由器);但从物理和软件架构上来说,它是一个运行在宿主机用户态(Ring 3)的后台服务进程。

这个虚拟路由器(vmnat.exe)和虚拟交换机相连
  • 虚拟机访问外网:数据包走向是 虚拟机 -> VMnet8 虚拟交换机 -> 虚拟 NAT 设备 (vmnat.exe) -> 宿主机物理网卡 -> 互联网
  • 宿主机访问虚拟机:数据包走向是 宿主机 -> VMnet8 虚拟网卡 -> VMnet8 虚拟交换机 -> 虚拟机(这条路完全不经过 vmnat.exe)。
 
*Tesla* | 小虾三级 |园豆:1746 | 2026-06-16 21:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册