原文地址

Vagrantfile 配置文件中私有网络的标识符:private_network,例如:

config.vm.network "private_network", type: "dhcp"

Vagrant 私有网络允许你通过某些无法从全球互联网公开访问的地址访问你的虚拟机。通常,这意味着你的机器在私有地址空间中分配了地址。

同一个专用网络中的多台机器(通常也只能使用同一个 provider 的支持)可以在专用网络上相互通信。

客户操作系统支持。私有网络通常需要配置虚拟机上的网络适配器。此过程因操作系统而异。Vagrant 提供有关如何在各种客户操作系统上配置网络的知识,但如果用的是特别旧或新的操作系统,则私有网络可能无法正确配置。

1. DHCP

使用私有网络的最简单的方式,是允许通过 DHCP 自动分配 IP。

Vagrant.configure("2") do |config|
  config.vm.network "private_network", type: "dhcp"
end

这会从保留的地址空间中自动分配 IP 地址。通过 vagrant ssh 登录到机器后,使用合适的命令行工具(ifconfig 等)可以查看分配到的 IP 地址。

2. 静态 IP

可以为机器指定静态 IP,这样就可以通过已知的静态 IP 访问 Vagrant 机器。示例:

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "192.168.50.4"
end

用户需要确保静态 IP 不会与同一网络上的其他机器发生冲突。

尽管可以选择任何 IP,但你应该使用来自保留的私有地址空间的 IP。这些 IP 永远不会被公开路由,并且大多数路由器会阻止到这些 IP 的来自外部世界的流量。

对于某些操作系统,可以使用静态 IP 地址的其他配置选项,例如设置默认网关或 MTU。

警告:不要选择与系统上任何其他 IP 空间重叠的 IP。这可能导致网络无法访问。

3. IPv6

可以分配 IPv6 的静态 IP 地址。不支持用于 IPv6 的 DHCP。要使用 IPv6,只需要将 IPv6 地址指定为 IP 地址即可:

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "fde4:8dba:82e1::c4"
end

这会将该 IP 分配给机器。整个 /64 子网将被保留。请确保使用经批准用于 IPv6 的保留地址。

改变 netmask 选项可以修改前缀长度(默认是 64):

Vagrant.configure("2") do |config|
  config.vm.network "private_network",
    ip: "fde4:8dba:82e1::c4",
    netmask: "96"
end

Vagrant 从 1.7.5 版开始支持 IPv6,部分 provider 不支持 IPv6。

4. 关闭自动配置

如果需要手动配置网络接口,可以通过 auto_confit 选项关闭 Vagrant 的自动配置特性:

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "192.168.50.4",
    auto_config: false
end

如果在设置 auto_config 之前已经启动了 Vagrant,那么它最初放置的文件将保留在那里。这种情况下,必须手动删除这些文件或销毁并重新创建机器。

由 Vagrant 创建的文件取决于操作系统。例如,对于许多 Linux 发行版,是 /etc/network/interfaces。你需要查看为你的发行版配置网络接口的正常位置。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐