虚拟机不同网络模式之间能不能互通,取决于虚拟网卡接在哪个虚拟交换机上、IP由谁分配、出网流量是否经过主机做地址转换,桥接模式让虚拟机直接借物理网卡进入局域网,NAT模式让虚拟机躲在主机身后共享上网,仅主机模式只保留主机与虚拟机之间的私密通道,三条互通路径分别是同网段直连、主机端口转发、路由转发加双网卡。
先弄清虚拟网络的三层“身份”
虚拟机联网不是插根网线那么简单,VMware Workstation和VirtualBox这类软件,会在宿主机里悄悄建起几张虚拟网卡和几个虚拟交换机,虚拟机的网络行为全由这套东西决定。
- 虚拟网卡:宿主机上多出来的VMnet1、VMnet8,或者VirtualBox的vboxnet0,就是虚拟机通往外部世界的“门”。
- 虚拟交换机:把多台虚拟机和宿主机接在同一块逻辑交换机上,同交换机内容易互通,跨交换机就要靠路由。
- 虚拟DHCP与NAT服务:VMware里对应VMware DHCP Service和VMware NAT Service,服务没启动,虚拟机会出现“网卡有地址但上不了网”的怪现象。
搞清这层关系,后面所有配置都是在这三样东西上做文章。
虚拟机三种网络模式区别:IP到底是谁给的
桥接模式:和你的电脑平起平坐
桥接模式把虚拟机网卡直接“桥”到物理网卡上,虚拟机会像一台真实设备那样,向路由器的DHCP申请地址,拿到和宿主机同网段的IP,局域网里其他电脑能直接ping通它,它也能访问打印机、NAS这类内网设备。
代价是占用一个局域网IP,公司网络如果做了MAC地址绑定或端口安全,虚拟机可能被踢下线。
NAT模式:躲在主机背后的合租室友
NAT模式下,虚拟机和宿主机通过VMnet8这块虚拟网卡相连,虚拟机拿到的是192.168.x.0/24这类私有网段地址,出网流量由主机做源地址转换,外部看不到虚拟机,虚拟机却能正常上网。
宿主机默认能访问NAT网段里的虚拟机,但局域网其他机器想访问,就得靠端口转发。
仅主机模式:只在这台机器里说话的密道
仅主机模式对应VMnet1,虚拟机和宿主机之间有一条独立通道,虚拟机没有外网出口,做安全实验、搭建隔离测试环境、模拟纯内网攻防时最常用。
| 对比项 | 桥接模式 | NAT模式 | 仅主机模式 |
|---|---|---|---|
| 虚拟机IP来源 | 物理网络DHCP或手动同网段 | 虚拟DHCP,私有网段 | 虚拟DHCP,私有网段 |
| 能否上外网 | 能 | 能,经主机转换 | 不能 |
| 局域网能否访问虚拟机 | 能 | 默认不能,需端口转发 | 不能 |
| 是否占用局域网IP | 是 | 否 | 否 |
| 典型场景 | 对外提供服务、联调 | 日常开发上网 | 隔离实验 |
虚拟机NAT模式如何与主机互通:三条可验证的路径
主机直接访问VMnet8网段
这是最省事的方式,在虚拟机里执行ip addr或ipconfig,记下地址,回到宿主机ping一下,通就说明链路没问题。
如果ping不通,按顺序查:
- 宿主机
ipconfig /all确认VMnet8处于启用状态且地址正常。 - 虚拟机内防火墙是否放行,Linux执行
sudo ufw status或sudo firewall-cmd --state,Windows查看“文件和打印机共享”规则。 - 虚拟网络编辑器里VMnet8是否勾选了“将主机虚拟适配器连接到此网络”。
端口转发把服务暴露到主机端口
想在宿主机浏览器访问虚拟机里的Web服务,或者让同事从局域网连你的测试环境,端口转发最直接。
操作路径:VMware菜单“编辑 → 虚拟网络编辑器 → 更改设置 → 选中VMnet8 → NAT设置 → 添加”,填写主机端口、虚拟机IP、虚拟机端口,协议选TCP,保存后,宿主机访问http://127.0.0.1:主机端口即可。
VirtualBox对应的是“设置 → 网络 → 高级 → 端口转发”,逻辑一致,验证时可以先用ss -lntp确认服务真的在监听,再测转发。
双网卡让虚拟机“两条腿走路”
既想上网稳定,又想被局域网访问,最实用的做法是给虚拟机加两块网卡:网卡1用NAT负责上网,网卡2用桥接负责对内提供服务,这样不用改路由器,也不受公司DHCP策略影响。
在虚拟机设置里“添加 → 网络适配器”,分别指定自定义VMnet8和桥接,进系统后用ip route确认默认路由指向NAT网卡,桥接网卡只承载内网访问流量。
VMware桥接模式和NAT模式对比:何时该换模式
两个模式没有绝对优劣,取决于你要解决什么问题。
- 需要被局域网其他设备主动访问,选桥接,配置最少。
- 只在自己电脑上开发调试,选NAT,不占用公司IP,换Wi-Fi也不用重配。
- 公司网络做了802.1X认证或MAC白名单,桥接容易失败,NAT更稳。
- 需要固定IP对外提供服务,桥接加静态地址更直观。
业内专家指出,开发环境中相当一部分“虚拟机突然不能联网”的问题,根源是笔记本切换了无线网络后桥接网卡绑定的物理网卡没跟着变,此时在虚拟网络编辑器里把VMnet0的桥接目标改成“自动”或手动指定当前网卡即可恢复。
家庭宽带环境下虚拟机桥接模式怎么设置
家里路由器一般不做MAC绑定,桥接是最顺的模式,按下面走一遍基本能通:
- 关闭虚拟机,打开“虚拟机 → 设置 → 网络适配器”,选择“桥接模式”。
- 进入“编辑 → 虚拟网络编辑器”,点“更改设置”,选中VMnet0,桥接到当前正在用的无线或有线网卡,笔记本双网卡时不要选“自动”,直接指定具体网卡更可靠。
- 启动虚拟机,执行
dhclient eth0或ipconfig /renew重新获取地址。 - 在虚拟机里
ping 网关,再ping 8.8.8.8,最后ping www.baidu.com,三层都通说明DNS和出口都正常。 - 回到宿主机
arp -a,能看到虚拟机IP对应的MAC,说明二层已经通了。
如果虚拟机拿不到地址,先确认路由器没有开启“AP隔离”,这个功能会阻止同一Wi-Fi下的设备互访,是家庭环境里很常见的隐藏问题。
企业内网虚拟机跨网段互通配置方法
公司网络通常分多个VLAN,虚拟机放在NAT网段里,又要访问另一个网段的测试服务器,这时需要一个“网关”。
Linux宿主机方案:开启转发并做地址伪装。
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
把168.100.0/24换成虚拟机所在网段,eth0换成宿主机对外的物理网卡,持久化写进/etc/sysctl.conf,再按发行版保存iptables规则。
Windows宿主机方案:用“网络连接”里的Internet连接共享,把物理网卡共享给VMnet8,系统会自动把VMnet8地址改成192.168.137.1并下发配置,缺点是地址段固定,和已有网段冲突时要手动调整。
配完记得在虚拟机里加一条路由:ip route add 目标网段 via 网关地址,否则包出得去、回不来。
免费虚拟机软件的网络模式够用吗
VirtualBox免费,NAT网络模式支持多台虚拟机互相通信,比传统NAT更灵活;VMware Workstation Player免费版在个人使用场景下桥接和NAT都能配,只是虚拟网络编辑器的部分高级功能受限,行业共识认为,学习和中小型开发测试场景,免费版本提供的网络模式已经覆盖绝大多数需求,真正需要付费的点通常集中在快照管理、克隆和团队协作功能上,而非网络互通本身。
收束
虚拟机网络互通的关键不在记命令,而在想清楚“谁给地址、谁做转发、流量走哪张网卡”,把这三件事对应到桥接、NAT、仅主机三种模式上,再复杂的组网需求也能拆成可验证的小步骤。
Q&A:虚拟机网络模式互通常见疑问
问:虚拟机NAT模式下,局域网同事为什么ping不通我的虚拟机?
NAT模式做了源地址转换,外部主机没有到私有网段的路由,解决办法是配端口转发,或者给虚拟机加一块桥接网卡,让局域网流量走桥接那条路。
问:一台虚拟机同时用桥接和NAT,会不会路由冲突?
不会,但要保证默认路由只指向一个网关,通常让NAT网卡做默认路由负责上网,桥接网卡只保留同网段直连路由,用ip route核对优先级即可,两块网卡都下发默认网关时,才会出现时通时不通。
问:桥接模式下虚拟机获取不到IP,最可能是什么原因?
优先检查虚拟网络编辑器里VMnet0绑定的物理网卡是否选错,其次是路由器或交换机是否开启了AP隔离、MAC地址过滤或端口安全,把虚拟机网卡临时改成NAT模式能上网,基本可以锁定问题出在物理网络的接入策略上。