Laravel Homestead移除Host Only适配器,改用单一Bridged适配器
解决Laravel Homestead仅保留Bridged Network适配器的问题
我之前也踩过这个坑!Homestead的默认配置会自动添加NAT和Host Only适配器,要只保留Bridged的话,咱们直接修改核心配置文件就行,不用瞎折腾调试脚本,步骤很清晰:
1. 修改 homestead.rb 中的网络配置
找到Homestead安装目录下的 homestead.rb 文件(通常在 ~/.composer/vendor/laravel/homestead/ 或者你本地克隆的Homestead仓库里),定位到处理网络的代码块——通常是一段判断settings["ip"]来创建private_network(也就是Host Only)的逻辑。
替换成Bridged网络配置
把原来的Host Only配置代码:
if settings["ip"] config.vm.network "private_network", ip: settings["ip"] else config.vm.network "private_network", ip: "192.168.10.10" end
替换为Bridged网络的配置:
# 添加Bridged网络适配器 config.vm.network "public_network", bridge: "你的网卡名称", # 比如Windows的"以太网"、macOS的"Wi-Fi" use_dhcp_assigned_default_route: true # 禁用Vagrant默认自动创建的NAT适配器 config.vm.network :forwarded_port, disable: true
如果你不想手动指定网卡名称,可以去掉
bridge: "你的网卡名称"这一行,Vagrant启动时会弹出列表让你选择可用的网卡。
2. 更新 Homestead.yaml 配置
打开你项目根目录的 Homestead.yaml,删掉里面的ip字段——这个字段是用来配置Host Only适配器的IP的,留着会让Homestead自动创建Host Only适配器,导致出现三个网卡的问题。
3. 重新加载Vagrant配置
在终端切换到Homestead目录,执行命令重新加载并配置虚拟机:
vagrant reload --provision
额外注意事项
- 禁用NAT后,原来的端口转发(比如80→8000、3306→33060)会失效,你可以直接用Bridged网络分配给虚拟机的局域网IP访问应用,比如
http://192.168.1.100(具体IP可以在虚拟机里用ip a查看)。 - 如果调试
homestead.rb的话,重点看configure_network方法,Homestead所有网络相关的逻辑都在这里处理,确保没有额外的private_network配置被悄悄添加。
内容的提问来源于stack exchange,提问作者addi2113
相关产品推荐
相关产品推荐

