Wetts's blog

Stay Hungry, Stay Foolish.

0%

vagrant-网络

vagrant 中一共提供了三种网络配置。

端口映射(Forwarded port)

这种方式,就是把本机和虚拟机的端口进行映射。比如:我配置本机计算机的8080端口为虚拟机的 80 端口,这样我访问该机器的 8080 端口,vagrant 会把请求转发到虚拟机的 80 端口是那个去处理。

1
config.vm.forwarded_port 80, 8080

通过这种方式,我们可以有针对性的把虚拟机的某些端口公布到外网让其他人去访问。

端口转发隐含着一个 provider 的 NAT 网络将被首先创建。所以,如果你单独定义一条端口转发的配置语句的话,VM 将会自动建立 NAT 网络环境。

私有网络(Private network)

这种方式是只允许主机访问虚拟机。如果多个虚拟机设定在同一个网段,那么几个虚拟机之间也可以互相访问。这种方式,就好像是搭建了一个私有的 linux 集群。而且只有一个出口,那就是该主机。

1
config.vm.network "private_network", ip: "192.168.21.4"

使用这种方式,非常安全,因为只有一个出口,但是你的虚拟机只允许你自己进行操作。团队成员不能操作,那你的电脑就成服务器主机了。

值得注意的是,ip 地址“192.168.21.4”不是随便指定的。首先你可以不指定,这表示虚机启动时会 DHCP 到一个可用的 IP 地址(例如:192.168.33.101),这是 vagrant 通过 virtualbox 私有网络的 DHCP 机制获得的。如果你要自行指定明确的 IP 地址,要保证该地址是在恰当的网段中,例如 192.168.33.71。

多台虚拟机在私有网络模式下也可以互相访问,只要设置为相同的网段就可以。本质上说,这是使用 provider 的 HostOnly 模式。

公有网络(Public network)

虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3 版本之后也可以设定静态 IP。设定语法如下:

1
config.vm.network "public_network", ip: "192.168.1.120"

这种网络配置方式,方便团队开发,别人也可以访问你的虚拟机。当然,你和你的虚拟机必须在同一个网段中。

可以不指定ip,也可以指定 LAN 网段中的一个可用的地址,但需要注意不要和 LAN 中已有的主机或者保留的 IP 地址相冲突。

本质上说,这是使用 provider 的桥接网络模式。