Windows主机下Vagrant(Ubuntu/Xenial)双不同网卡配置问题
解决Vagrant+VirtualBox配置双物理网卡的问题
我来帮你搞定这个双网卡绑定的问题,之前你遇到的两个网络共用同一网卡的情况,大概率是配置时没有明确区分每个网卡对应的VirtualBox网络适配器编号,或者没有单独声明两个独立的public_network。下面是一步步的解决方案:
第一步:确认物理网卡的准确名称
首先在Windows命令行里执行VirtualBox的命令,列出所有可用的桥接网卡,确保你用的名称完全正确:
VBoxManage list bridgedifs
输出里会显示每个物理网卡的名称,比如Intel(R) Ethernet Connection I219-LM或者Realtek PCIe GbE Family Controller,复制这些名称备用,注意不要写错空格或特殊字符。
第二步:编写正确的Vagrantfile配置
你需要在Vagrantfile里单独声明两个public_network,并且通过VirtualBox自定义命令明确指定每个网络适配器(nic1、nic2)绑定对应的物理网卡。示例配置如下:
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" # 第一个桥接网卡:绑定Intel I219-LM config.vm.network "public_network", ip: "10.0.2.77", mac: "080027ABCDEF", # 替换成你需要的唯一MAC地址 bridge: "Intel(R) Ethernet Connection I219-LM" # 第二个桥接网卡:绑定第二个物理网卡(替换成你的网卡名称) config.vm.network "public_network", ip: "192.168.1.100", # 要和第二个网卡所在网段匹配 mac: "080027GHIJKL", # 确保MAC地址唯一 bridge: "Realtek PCIe GbE Family Controller" # VirtualBox自定义配置:明确每个nic对应的桥接网卡 config.vm.provider "virtualbox" do |vb| # 第一个网络适配器(对应第一个public_network) vb.customize ["modifyvm", :id, "--nic1", "bridged"] vb.customize ["modifyvm", :id, "--bridgeadapter1", "Intel(R) Ethernet Connection I219-LM"] # 第二个网络适配器(对应第二个public_network) vb.customize ["modifyvm", :id, "--nic2", "bridged"] vb.customize ["modifyvm", :id, "--bridgeadapter2", "Realtek PCIe GbE Family Controller"] end end
第三步:生效配置并验证
保存Vagrantfile后,在命令行执行:
vagrant reload --provision
虚拟机重启后,进入虚拟机执行ip addr命令,应该能看到两个不同的网卡接口,分别对应你设置的两个IP地址,并且各自绑定了不同的物理网卡。
关键注意事项
- 不要合并配置:必须单独声明两个
public_network,每个对应一个物理网卡,不能把两个网卡的配置写在一起。 - 网卡编号不能重复:VirtualBox的
--nic[N]里的N必须是连续且唯一的(比如1、2),对应每个public_network的顺序。 - 名称完全匹配:
bridge参数和--bridgeadapter[N]里的网卡名称,必须和VBoxManage list bridgedifs输出的完全一致,有空格的话不要漏写。 - MAC地址唯一:两个网卡的MAC地址不能相同,否则会导致网络冲突。
如果还是有问题,你可以打开VirtualBox的虚拟机设置,手动检查「网络」选项卡下的两个适配器,确认它们的「桥接适配器」分别选择了不同的物理网卡,这样就能快速定位配置是否生效。
内容的提问来源于stack exchange,提问作者maenalee
相关产品推荐
相关产品推荐

