宿主机上网页刷得飞快,切到 CentOS 7 虚拟机里敲一条ping 192.168.1.1却半天没反应——这大概是很多人第一次碰 VMware 虚拟机网络配置时最容易撞上的那堵墙。我当年也是在这个位置卡了整整一个下午:虚拟机里ip addr明明显示有地址,网关也填了,可就是出不去,而宿主机一切正常。后来才发现,问题根本不在 CentOS 内部,而是桥接模式在宿主机那一侧压根没接对物理网卡。这篇就把 VMware 里 CentOS 7 的桥接模式从头到尾拆一遍:它到底把虚拟机挂到了哪张网络上、宿主机要做哪些前置确认、ifcfg-ens33每个字段为什么这么写、配完不通时该沿着哪条链路一层层往下查。内容偏向 Linux 基础和虚拟化入门,手工配置网络偏多,如果你正在做服务器实验、集群练习,或者单纯想弄明白"虚拟机的 IP 凭什么能和室友的电脑互相 ping 通",那这篇就是写给你的。
1. 桥接模式把虚拟机放进了哪张网络
1.1 从宿主机网卡到虚拟交换机的真实链路
先把一句话结论摆这儿:桥接模式下,虚拟机和宿主机在局域网里是平级的两台独立主机,而不是"一台跑在另一台里面的程序"。这和 NAT 模式有着本质区别。
VMware Workstation 在安装时会往系统里注册几个虚拟网络设备,你可以把它们理解成几个"内置的交换机"。安装完成后在"编辑 - 虚拟网络编辑器"里能看到它们:
- VMnet0:桥接模式使用的虚拟交换机,它不是一个独立网段,而是一座桥
- VMnet1:仅主机模式(Host-Only)使用的虚拟交换机,对应宿主机上一个名为 VMware Network Adapter VMnet1 的虚拟网卡
- VMnet8:NAT 模式使用的虚拟交换机,对应宿主机上的 VMware Network Adapter VMnet8
桥接的"桥"字是关键。开启桥接后,VMware 会把 VMnet0 和宿主机的一张物理网卡对接起来,虚拟机产生的以太网帧带着自己的 MAC 地址,直接进入宿主机所在的物理局域网,由那台真实的路由器或交换机转