我正在使用 Vagrant 启动虚拟机,但客户虚拟机中的桥接网络适配器获取了无效 IP。因此我无法从主机与其通信。
当我这样做时,我选择了您在 Vagrantfile 中看到的界面vagrant up
要使用的 WiFi 网络:public_network
==> default: Available bridged network interfaces:
1) wlp4s0
如果我查看该网络中主机的 IP,它的 IP 在以下范围内192.168.2.0/24
:
wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.172 netmask 255.255.255.0 broadcast 192.168.2.255
...
但客户机获得的 IP 地址范围对于该网络来说似乎无效:
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.28.128.3 netmask 255.255.255.0 broadcast 172.28.128.255
...
我的 Vagrantfiule 看起来像这样:
Vagrant.configure(2) do |config|
config.vm.box = 'bento/ubuntu-18.04'
config.vm.hostname = 'ubuntu'
config.vm.provider "virtualbox" do |v|
v.name = 'MyVM'
v.memory = 2048
end
# This is the bridged network:
config.vm.network "public_network", dhcp: true
end
如果我像这样更改网络以指定确切的 IP,则网络将按预期工作:
config.vm.network "public_network", dhcp: true, ip: "192.168.2.180"
但我无法在那里硬编码一个 IP,因为这取决于我的用户在执行操作时选择的网络vagrant up
。
我的 Vagrantfile 中是否做错了什么?
请注意:我所在的地方没有有线网络插座,所以我无法测试此问题是否也发生在以太网上。
答案1
我发现这个问题,默认情况下,我的网络的适配器类型设置为“英特尔 PRO/1000 MT 台式机”。我将其改为“PCNet FAST III”,然后网络就可以正常工作并且我的机器会获得有效的 IP。
有一个相关问题这里。
有关不同适配器类型的更多信息,请参阅VirtualBox 的文档:
PCNet FAST III 是默认选项,因为它几乎受所有操作系统以及 GNU GRUB 启动管理器支持。作为例外,英特尔 PRO/1000 系列适配器被选为某些不再附带 PCNet 卡驱动程序的客户操作系统类型,例如 Windows Vista。
Intel PRO/1000 MT 桌面型适用于 Windows Vista 及更高版本。Intel PRO/1000 卡的 T 服务器变体可被 Windows XP 客户机识别,无需安装额外驱动程序。MT 服务器变体便于从其他平台导入 OVF。