网络配置
所有的网络设置都可以通过配置Vagrantfile来实现。具体来说,就是在Vagrantfile中调用config.vm.network进行相关的设置。
vagrant支持以下三种网络配置:
- Forwarded port(端口映射)
- Private network(私有网络)
- Public network(公有网络)
一、端口映射
是指将宿主计算机的端口映射到虚拟机上的某个端口上,访问宿主计算机的该端口时,请求实际会被转发到虚拟机上指定的端口。例如虚拟机上在运行一个web服务器监听80端口,可以通过端口映射映射到宿主机上的8080端口上。这样就可以在宿主机上用localhost:8080访问网站了。配置文件设置语法为:
config.vm.network “forwarded_port”, guest: 80, host: 8080
上面的设置可以允许通过宿主机的8080端口访问虚拟机的80端口。
端口转发的方式简单,很容易实现外网访问虚拟机。需映射很多端口时较麻烦、不支持在宿主机器上使用小于1024的端口来转发(如:不能使用SSL的443端口来进行https连接)。
端口转发的方式也意味着任何一台在宿主机网络上的设备都可以直接访问虚拟机。如果需要限制访问,可以设置guest_ip和host_ip.
参数设置
1)auto_correct: boolean类型。默认是false,当设置true的时候,宿主机端口如果被占用,会自动
2)guest: int型。虚拟机向宿主机开放的端口号,可以是任意一个端口。
3)guest_ip:string型。虚拟机开放端口绑定特定的ip,如果这一项没有设置,那么虚拟机的端口会面向所有的ip开放,默认为空。
4)host:int型。宿主机开放给虚拟机通讯的端口,端口号必须大于1024.
5)host_ip:string型。宿主机上端口绑定的ip地址。
6)protocol:string型。网络协议,默认为tcp。
7)id号:string 型。
端口转发协议
默认情况下,任何定义的端口都将只转发TCP协议。如果需要支持其他的协议,例如UDP,需要在Vagrantfile中进行设置,如果虚拟机和宿主机的protocol不一致,需要在设置中“显式”地定义两种protocol,例如:
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "tcp"
config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "udp"
end
二、私有网络
vagr