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

发布时间:2026/7/20 17:34: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 服务器、NAS2.3 常见问题公司网络 MAC 地址绑定虚拟机有自己独立的 MAC 地址可能被交换机拒绝IP 地址冲突如果手动设了和局域网其他设备相同的 IPWi-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:500003.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 为什么宿主机会受影响Allow LAN 的作用代理软件的 Allow LAN允许局域网连接选项使代理端口监听0.0.0.0所有网络接口而不仅仅是127.0.0.1。这意味着来自 VMnet8 子网的连接也会被接受。NAT 模式的双向通信VMnet8 虚拟网卡使宿主机192.168.56.1能和虚拟机192.168.56.101互通。这种互通是双向的——宿主机可以连接虚拟机的端口。三要素齐备宿主机手动设置了代理地址为192.168.56.101:7890指向虚拟机的代理软件虚拟机的代理软件开启了 Allow LAN接受外部连接虚拟机的代理软件转发服务失效结果宿主机浏览器 → 连接虚拟机 7890 端口 → 连接成功 → 但节点挂了 → 请求超时 → 宿主机断网。6.3 排查方法# 在宿主机 Windows 上检查是否能连接到虚拟机代理端口netstat-ano|findstr7890# 如果看到 ESTABLISHED 到 192.168.56.x → 确认是虚拟机代理# 查看当前系统代理设置netsh winhttp show proxy6.4 修复方法在虚拟机中关闭代理软件的 Allow LAN 开关在宿主机中关闭系统代理开关完全隔离将虚拟机网络改为仅主机模式但这样虚拟机也上不了网了七、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 故障的系统排查方法。