使用Vagrant 2.1.1与VMware Fusion 10.1.2配置静态IP遇双网卡问题
我来帮你把这个问题掰扯清楚——你遇到的双网卡情况,其实是Vagrant和VMware Fusion集成时的默认行为导致的,咱们一步步拆解:
为什么会出现双网卡(eth0 + eth1)?
这是Vagrant针对VMware Provider的预设逻辑,核心原因有两个:
- 默认NAT接口(eth0):Vagrant会自动给VMware虚拟机配置一个NAT网络接口,目的是让虚拟机能够访问外部网络(比如下载软件包、联网更新)。这个接口的IP由VMware内置的DHCP服务器分配,不管你有没有手动添加
private_network,这个NAT接口都会默认存在。 - 手动配置的私有静态IP接口(eth1):这就是你在Vagrantfile里通过
config.vm.network "private_network", ip: "192.168.245.5"添加的接口,用来实现虚拟机和宿主机/其他机器的固定IP通信,满足你“启动后其他机器能稳定连接”的需求。
为什么
auto_config: false没效果? 你添加的auto_config: false作用是告诉Vagrant不要自动为你配置的private_network接口生成网络配置,但它完全不会影响Vagrant默认创建的NAT接口(eth0)。所以eth0还是会被VMware的DHCP分配IP,双网卡的情况依然存在。
如何只保留静态IP的单网卡?
如果你确实不需要虚拟机访问外部网络,或者打算用其他方式(比如桥接网络)实现联网,可以直接禁用Vagrant默认的NAT接口,在Vagrantfile里添加这行配置:
config.vm.network "private_network", ip: "192.168.245.5" # 禁用默认的NAT网络接口 config.vm.network :nat, disabled: true
这样启动虚拟机后,就只会有一个带有静态IP的eth0接口(原来的eth1会变成eth0,因为NAT接口被禁用了)。
注意:禁用NAT接口后,虚拟机将无法直接访问外部网络。如果需要虚拟机联网,建议保留NAT接口——毕竟双网卡本身不会影响静态IP的使用,只是多了一个DHCP分配的IP而已。
关于VMware Fusion 10覆盖
dhcp.conf的问题 VMware Fusion在每次启动虚拟机时,都会根据自身的网络配置规则重新生成dhcp.conf文件,所以你手动修改这个文件的自定义配置会被自动覆盖。这种情况下,所有网络配置都应该通过Vagrantfile来完成,不要直接修改VMware的底层配置文件,Vagrant的VMware Provider已经封装了这些逻辑。
内容的提问来源于stack exchange,提问作者frob1719
相关产品推荐
相关产品推荐

