news 2026/7/20 17:34:20

03-虚拟机网络模式详解NAT桥接仅主机及对宿主机的影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
03-虚拟机网络模式详解NAT桥接仅主机及对宿主机的影响

虚拟机网络模式完全指南:NAT、桥接、仅主机的原理与排障

你有没有遇到过:虚拟机里跑了个代理,宿主机的网络却跟着挂了?或者虚拟机里能上网但宿主机不能?理解虚拟机网络模式,是排查这类"诡异"故障的前提。


一、虚拟机网络的三种基本模式

虚拟机本身没有物理网卡,它通过虚拟化技术借用宿主机的网卡来通信。不同的"借用方式"就是不同的网络模式。

VMware、VirtualBox、Hyper-V 等主流虚拟化软件都支持以下三种基本模式:

┌─────────────────────────────────────────────────────┐ │ 宿主机 (Host) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 物理网卡 │ │ VMnet1 │ │ VMnet8 │ │ │ │ (真实网络)│ │ 仅主机 │ │ NAT │ │ │ └─────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ ┌─────┴───────────────┴───────────────┴─────┐ │ │ │ 虚拟机 (Guest) │ │ │ │ 桥接模式 → 直接连物理网卡 │ │ │ │ NAT 模式 → 通过 VMnet8 共享主机 IP │ │ │ │ 仅主机 → 通过 VMnet1 只能和宿主机通信 │ │ │ └───────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────┘

二、桥接模式(Bridged)—— 虚拟机就是局域网里的一台独立设备

2.1 原理

桥接模式下,虚拟机通过宿主机的物理网卡直接连接到物理网络,相当于在路由器上多插了一根网线。

┌──────────────────────────────────────────┐ │ 局域网 192.168.1.0/24 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌─────────┐│ │ │ 宿主机 │ │ 虚拟机 │ │ 路由器 ││ │ │ .100 │ │ .200 │ │ .1 ││ │ └──────────┘ └──────────┘ └─────────┘│ │ ↑ ↑ │ │ └──────┬──────┘ │ │ 同一个物理交换机/路由器 │ └──────────────────────────────────────────┘

2.2 特点

特性说明
IP 地址由物理路由器 DHCP 分配,和宿主机同一网段
网络可见性局域网内所有设备都能看到这台虚拟机
上网方式虚拟机直接通过物理路由器访问互联网
宿主机通信通过物理交换机/路由器转发,和普通局域网通信一样
适用场景需要虚拟机提供局域网服务(如 Web 服务器、NAS)

2.3 常见问题

  • 公司网络 MAC 地址绑定:虚拟机有自己独立的 MAC 地址,可能被交换机拒绝
  • IP 地址冲突:如果手动设了和局域网其他设备相同的 IP
  • Wi-Fi 环境限制:大部分 Wi-Fi 驱动不支持桥接,需要特殊配置

三、NAT 模式(Network Address Translation)—— 虚拟机"藏"在宿主机后面

3.1 原理

NAT 模式下,虚拟化软件创建了一个私有子网(如 192.168.56.0/24),宿主机充当这个子网的"路由器",做地址转换。

┌─────────────────────────────────────────────────────┐ │ 外部网络 │ │ ↑ │ │ │ 所有虚拟机流量都显示为 │ │ │ 宿主机的 IP 地址 │ │ ┌────┴──────────────────────────┐ │ │ │ 宿主机 │ │ │ │ 物理网卡: 192.168.1.100 │ │ │ │ VMnet8: 192.168.56.1 (网关) │ │ │ │ ↑ │ │ │ │ │ NAT 子网 │ │ │ │ ┌────┴──────┐ │ │ │ │ │ 虚拟机 │ │ │ │ │ │ 192.168.56.128 │ │ │ │ └───────────┘ │ │ │ └───────────────────────────────┘ │ └─────────────────────────────────────────────────────┘

3.2 NAT 转换过程

虚拟机 (192.168.56.128:50000) → 发包到 baidu.com:80 ↓ 宿主机 VMnet8 (192.168.56.1) 接收 ↓ 宿主机做 NAT:将源 IP 替换为 192.168.1.100:60000 ↓ 通过物理网卡发到互联网 ↓ 百度回复到 192.168.1.100:60000 ↓ 宿主机查找 NAT 表 → 转发到 192.168.56.128:50000

3.3 特点

特性说明
IP 地址虚拟化软件 DHCP 分配,与宿主机不同网段
网络可见性局域网内其他设备看不到这台虚拟机
上网方式通过宿主机做地址转换,共用宿主机 IP
宿主机通信可以通过 VMnet8 网关 IP (如 192.168.56.1) 互通
适用场景日常开发调试,不需要对外暴露服务

四、仅主机模式(Host-Only)—— 与世隔绝的实验环境

4.1 原理

仅主机模式下,虚拟机和宿主机通过一个内部虚拟交换机连接,这个交换机不通外网

┌──────────────────────────────────────┐ │ 宿主机 │ │ VMnet1: 192.168.174.1 │ │ ↑ │ │ │ 虚拟交换机(无外网出口) │ │ ┌────┴──────┐ │ │ │ 虚拟机 │ │ │ │ .128 │ ❌ 无法访问互联网 │ │ └───────────┘ │ └──────────────────────────────────────┘

4.2 特点

特性说明
能否上网不能
与宿主机通信✅ 可以
虚拟机之间通信✅ 可以
适用场景恶意软件分析、漏洞测试、隔离实验

五、三种模式对比总结

对比维度桥接 (Bridged)NAT仅主机 (Host-Only)
虚拟机能否上网
局域网设备能否访问虚拟机
宿主机 ↔ 虚拟机互通✅ (经路由器)✅ (经 VMnet8)✅ (经 VMnet1)
虚拟机之间互通✅ (同一 NAT 子网)
IP 地址来源物理路由器 DHCP虚拟 DHCP虚拟 DHCP
对宿主机网络的"侵入性"极低

六、虚拟机的代理如何影响宿主机?

一个常被忽视的场景:虚拟机里跑代理,宿主机网络断了。这不是 bug,而是 NAT 模式 + Allow LAN 的组合效果。

6.1 场景还原

假设你在 VirtualBox 里运行了一个 Linux 虚拟机,并在虚拟机中启动了一款网络代理软件:

┌──────────────────────────────────────────────────┐ │ Windows 宿主机 (192.168.1.100) │ │ │ │ 系统代理设置: 192.168.56.101:7890 ←──┐ │ │ │ │ │ ┌─────────────────────────────────────│───┐ │ │ │ Kali 虚拟机 (NAT 模式) │ │ │ │ │ VMnet8 IP: 192.168.56.101 │ │ │ │ │ │ │ │ │ │ 代理软件: │ │ │ │ │ Allow LAN: ✅ 开启 │ │ │ │ │ 监听地址: 0.0.0.0:7890 ←────────┘ │ │ │ │ 转发服务: 💀 全部超时 │ │ │ │ └──────────────────────────────────────┘ │ └──────────────────────────────────────────────────┘

6.2 为什么宿主机会受影响?

  1. Allow LAN 的作用:代理软件的 Allow LAN(允许局域网连接)选项,使代理端口监听0.0.0.0(所有网络接口),而不仅仅是127.0.0.1。这意味着来自 VMnet8 子网的连接也会被接受

  2. NAT 模式的双向通信:VMnet8 虚拟网卡使宿主机(192.168.56.1)能和虚拟机(192.168.56.101)互通。这种互通是双向的——宿主机可以连接虚拟机的端口。

  3. 三要素齐备

    • 宿主机手动设置了代理地址为192.168.56.101:7890(指向虚拟机的代理软件)
    • 虚拟机的代理软件开启了 Allow LAN,接受外部连接
    • 虚拟机的代理软件转发服务失效

结果:宿主机浏览器 → 连接虚拟机 7890 端口 → 连接成功 → 但节点挂了 → 请求超时 → 宿主机"断网"。

6.3 排查方法

# 在宿主机 Windows 上检查是否能连接到虚拟机代理端口netstat-ano|findstr7890# 如果看到 ESTABLISHED 到 192.168.56.x → 确认是虚拟机代理# 查看当前系统代理设置netsh winhttp show proxy

6.4 修复方法

  1. 在虚拟机中:关闭代理软件的 Allow LAN 开关
  2. 在宿主机中:关闭系统代理开关
  3. 完全隔离:将虚拟机网络改为"仅主机"模式(但这样虚拟机也上不了网了)

七、TUN 模式的跨虚拟机影响

TUN 模式比 Allow LAN 更危险,因为它修改的是系统路由表而不是代理设置:

Kali 虚拟机中代理软件开启虚拟网卡模式: → Kali 的路由表被修改 → 但由于虚拟机是隔离的,路由修改只影响 Kali 内部 → 宿主机不受直接影响 但如果虚拟机的 TUN 网卡配置了错误的网关: → 在 NAT 模式下,可能导致 VMnet8 子网的路由混乱 → 宿主机通过 VMnet8 访问虚拟机时出现路由环路

结论:TUN 模式的跨虚拟机影响较小(路由表是隔离的),Allow LAN 的影响更大(端口监听暴露到了虚拟网络接口)。


八、实战:检查虚拟网卡的跃点数

Windows 中,当你同时有多个网卡(物理网卡 + VMnet1 + VMnet8 + VPN 虚拟网卡),系统通过**跃点数(Metric)**决定走哪个:

# 查看路由表及跃点数route print-4

示例输出:

IPv4 路由表 =========================================================================== 目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 25 0.0.0.0 0.0.0.0 192.168.56.1 192.168.56.1 50

越小的跃点数优先级越高。如果 VMnet8 的默认路由跃点数比物理网卡还小(不常见但可能被手动修改过),流量就会错误地发往虚拟机。

手动修改接口跃点数

控制面板 → 网络和共享中心 → 更改适配器设置 → 右键 VMnet8 → 属性 → Internet 协议版本 4 → 属性 → 高级 → 取消"自动跃点" → 设为 50 或更高

九、总结

知识点核心要点
桥接模式虚拟机 = 局域网独立设备,有独立 IP,对外可见
NAT 模式虚拟机藏在宿主机后面,共享宿主机 IP,对外不可见
仅主机模式与世隔绝,只有宿主机和虚拟机之间能通信
Allow LAN代理监听所有网络接口,通过 NAT 反向暴露给宿主机
跃点数多网卡时决定走哪条路由,数字越小越优先
虚拟机代理影响宿主机NAT 双向通信 + Allow LAN + 手动代理设置 = 宿主机"被断网"

虚拟机网络的复杂性在于看似隔离实则连通。理解了 NAT 模式的双向通信本质,就能理解为什么虚拟机里的代理会影响到宿主机。


本文是"网络故障排查系列"的第三篇。下一篇将讲解:DNS 域名解析的完整原理,以及 DNS 故障的系统排查方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 17:30:39

合并lora权重到基础模型权重

合并lora权重到基础模型权重 无论是用NEMO_ENABLE_USER_MODULES1 CUDA_VISIBLE_DEVICES0,1 automodel --nproc-per-node2 train-Qwen-Qwen-2.5-0.5B-Instruct.yaml执行 继续预训练,还是SFT微调,都支持lora微调方法,使用lora微调后会得到adapt…

作者头像 李华
网站建设 2026/7/20 17:29:08

深入解析ePWM动作限定器与死区生成:精准控制与安全设计

1. 项目概述:深入理解ePWM的核心控制逻辑在嵌入式电机驱动、数字电源或者任何需要精确功率控制的领域,脉宽调制(PWM)技术是当之无愧的基石。它的核心思想很直观:通过快速开关一个信号,并精确控制“开”和“…

作者头像 李华
网站建设 2026/7/20 17:27:40

AM335x控制模块寄存器深度解析:从引脚复用到底层硬件控制

1. 从寄存器到引脚:嵌入式硬件控制的底层逻辑 如果你在嵌入式领域摸爬滚打过几年,一定会对“寄存器”这个词又爱又恨。爱的是,它给了你直接与硬件对话的权力,让你能精确到每一个比特位去控制芯片的行为;恨的是&#xf…

作者头像 李华
网站建设 2026/7/20 17:25:04

如何用drawDB快速将SQL脚本转换为可视化数据库图表:终极指南

如何用drawDB快速将SQL脚本转换为可视化数据库图表:终极指南 【免费下载链接】drawdb Free, simple, and intuitive online database diagram editor and SQL generator. 项目地址: https://gitcode.com/GitHub_Trending/dr/drawdb 你是否曾经面对复杂的SQL脚…

作者头像 李华