使用vagrant安装之后一直使用127.0.0.1进行访问。但是一直使用这个ip肯定满足不了的。我们装肯定是有需求的,那么本节就讲解一下用vagrant的网络配置。
vagrant中一共提供了三种网络配置。
1. 端口映射(Forwarded port)
这种方式,就是把本机和虚拟机的端口进行映射(把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际上是被转发到虚拟机上指定的端口)。比如:我配置本机(本地)的8080端口为虚拟机的80端口,这样我访问本机器的8080端口,vagrant会把请求转发到虚拟机的80端口是那个去处理。
config.vm.forwarded_port 80, 8080
以上访问宿主计算机的8080端口的请求都被转发到虚拟机的80端口上进行处理。
默认只转发TCP包,UDP需要额外添加以下语句:
config.vm.forwarded_port 80, 8080, protocol: "udp"
如:我们访问:127.0.01:8080
通过这种方式,我们可以有针对性的把虚拟机的某些端口公布到外网让其他人去访问。
优点:
- 简单易理解
- 容易实现外网访问虚拟机
缺点:
- 如果一两个端口需要映射很容易,但是很多的端口,比如Mysql,MongoDB,tomcat 等服务,端口较多时,就比较麻烦。
- 不支持在宿主主机上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。
配置文件Vagrantfile说明:
Vagrant.configure(2") do |config|
config.vm.network
"forwarded_port"(必选) //端口转发标示
,guest(必选): //虚拟端口
,host(必选): //宿主机端口,值必须大于1024
,gust_ip(可选): //虚拟机端口绑定虚拟机ip地址
,host_ip(可选): //虚拟机端口绑定宿主机端口ip
,protocol(可选): //指定通信协议,可以使用tcp/udp,默认tcp
,auto_correct(可选): //ture/fasle,开机是否自动检测端口冲突
end
注意:若guest_ip和host_ip两项配置为空,则局域网下的所有设备都可以访问该虚拟机。
示例配置,如下:
Vagrant.configure(2") do |config|
config.vm.network "forwarded_port", guest:80, host:8080,
auto_correct:true
end
私有网络(Private network)
既然是private,那么这种方式是只允许主机访问虚拟机。如果多个虚拟机设定在同一个网段,那么几个虚拟机之间也可以互相访问。这种方式,就好像是搭建了一个私有的linux集群。而且只有一个出口,那就是该主机。
config.vm.network "private_network", ip: "192.168.21.4"
使用这种方式,非常安全,因为只有一个出口,但是你的虚拟机只允许你自己进行操作。团队成员不能操作,那你的电脑就成服务器主机了。
注意:IP可以自己随便设定,但是如果宿主机的主机IP为192.168.1.xxx字段,那就不要再 这个区段,可以使用2.xxx 或 3.xxx 或者其他,以免造成冲突
优点:
- 安全,只有自己能访问
缺点:
- 因为私有的原因,所以团队成员其他人无法和你协作。
公有网络(Public network)
虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3版本之后也可以设定静态IP。设定语法如下:
config.vm.network "public_network", ip: "192.168.1.120"
这种网络配置方式,方便团队开发,别人也可以访问你的虚拟机。当然,你和你的虚拟机必须在同一个网段中。
了解一下vagrant的网络配置之后,修改vagrantFile文件,重新执行vagrant up命令,重启虚拟机即可。
注意:这种方式的虚拟机相当于局域网中的一员。
优点:
- 方便团队协作,别人可以访问你的虚拟主机。
缺点:
- 需要有网络,有路由器分配IP