我的 Vagrantfile
config.vm.network :private_network, ip: "172.16.0.22"
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--cpus", 2]
v.customize ["modifyvm", :id, "--memory", 2048]
v.customize ['modifyvm', :id, '--nicpromisc1', 'allow-all']
vangrant up 之后
The IP address configured for the host-only network is not within the
allowed ranges. Please update the address used to be within the allowed
ranges and run the command again.
Address: 172.16.0.22
Ranges: 10.0.0.0/8, 192.168.0.0/16, 2001::/64
据我了解,172.16.xx 是私有 IP。我的 wlo1
wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c8:94:32:93:05:p2 brd ff:ff:ff:ff:ff:ff
altname wlp3s0
inet 192.168.1.19/24 brd 192.168.1.255 scope global dynamic noprefixroute wlo1
valid_lft 3068sec preferred_lft 3068sec
我更改了 network.conf 文件,通过添加 172.16.0.0 cat /etc/vbox/networks.conf
* 10.0.0.0/8 192.168.0.0/16 172.16.0.0
* 2001::/64
同样的问题仍然存在。
为什么IP不在网络范围之内?
答案1
因此,按照 OP 的说法,vagrant 显然根据文件确定哪些 IP 子网块可用于仅主机网络/etc/vbox/networks.conf
。
IP 子网仅在带有子网掩码或前缀长度(它们在不同的表示形式中本质上是同一件事)时才有效,因为它表示子网的大小。地址/子网 ID 等172.16.0.0
仅表示块的“起点”,否则被视为单个任意主机地址。
因此,如果您想允许整个172.16.0.0/12
块在 RFC 中定义,请将其(整个内容)放入 conf 文件中。(或者,如果必要和/或需要,我确信您可以只允许部分块,只要您具有有效的子网 ID 和前缀长度组合即可。我不会在这里讲述子网划分 101 的完整故事。)