跳至主要內容

配置_网络

LincZero大约 3 分钟

配置_网络

网络类型

Warning

本节以VirtualBox为例,VMware和Hyper-V的配置有所不同,且一些网络功能受限

vagrant总是会将虚拟机的第一个网卡 (虚拟机的虚拟网卡) 设置为NAT (默认值)

且这第一个网卡不可修改,你可以在此基础上加上一些其他的网络模式,会自动创建其他的虚拟网卡

配置完成后,也可以在 VritualBox 中查看,就能看到多个虚拟机网卡了

网络地址转换 NAT

配置方式: (默认值)config.vm.network "forwarded_port", guest: 80, host: 8080

特点:

  1. 只能用于虚拟机向外访问 (通常用来访问互联网),主机不能直接访问虚拟机
  2. 主机只能通过端口转发访问虚拟机,例如ssh默认有22端口转发
  3. 虚拟机与虚拟机之间不能通信

优点:可以访问虚拟机内的服务

缺点:不适合搭建分布式集群

桥接

配置方式: config.vm.network "public_network", ip: "10.150.36.191", bridge: "en4: USB-eth"

特点:

  1. 特点:Bridge网络将虚拟机等同为网络中的真实主机,可以像访问其他主机一样访问虚拟机

仅主机网络
(Host-Only)

配置方式: config.vm.network "private_network", ip: "192.168.56.20"

特点:

  1. 只能从宿主机访问虚拟机,无法从外部主机访问虚拟机 (Host-only顾名思义)
  2. 虚拟机之间可以互相访问

仅主机适配器
(Host-Only)

(已过时)

内部网络

通用驱动

NAT网络

注意:网络地址转换(NAT)NAT网络(NAT network) 不一样,是两种不同的网络模式。NAT network 也叫 NAT service,可以在虚拟机与虚拟机之间互相访问

云网络

(试验功能)

未指定

Vagrant 网络:

  • NAT(默认)
  • 私有网络
  • 共有网络

(1) NAT 网络地址转换(默认)

介绍、设置

Vagrant总是将虚拟机的第一个网卡设置为NAT(网络地址转发)。

NAT模式下,虚拟机只能单向访问外部网络(通常用来访问互联网),虚拟机对外部互联网是不可见和无法访问的,虚拟机之间也是相互隔离的。

端口转发

在NAT模式下,如果想访问虚拟机中的端口,可以使用端口转发

配置方式:

config.vm.network "forwarded_port", guest: 80, host: 8080

(3) 私有网络 (仅主机、HostOnly)

介绍、设置

私有网络可以实现虚拟机之间的网络访问,在Virtual Box下,Vagrant将网卡设置为仅主机访问(Host-only)模式

config.vm.network "private_network", ip: "192.168.56.20"

VirtualBox默认将192.168.56.0/21范围内的地址分配给虚拟机

验证

reload 后,可以简单验证一下:

  1. ssh时使用新ip
ssh vagrant@192.168.56.20
  1. ssh连接后,在主机终端 ping 192.168.56.20

  2. 也可以在 VirtualBox 中查看虚拟机的网络设置来验证

查看IP地址范围

可以使用以下命令查看IP地址范围

VBoxManage list hostonlynets # 好像报错?

DHCP

也可以使用 DHCP 自动获取IP (不推荐dhcp)

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

注意项

  1. Windows 下使用Hyper-V创建私有网络无法指定IP,IP由Hyper-V进行分配。详见:https://developer.hashicorp.com/vagrant/docs/providers/hyperv/limitationsopen in new window
  2. VMware 在 macOS 11 之后,无法指定IP,并且不支持端口转发。详见:https://developer.hashicorp.com/vagrant/docs/providers/vmware/known-issuesopen in new window

(4) 外部网络 (桥接模式)

如果要从别的主机进行访问,也可以设置公有网络。

在VirutualBox中,使用bridge网络实现。

特点:Bridge网络将虚拟机等同为网络中的真实主机,可以像访问其他主机一样访问虚拟机。

设置方式:

  1. 首先要查看桥接网络接口:
VBoxManage list bridgedifs

打印:

  1. 然后要设置桥接网络:(这里的bridge值就是刚刚查到的名字)
config.vm.network "public_network", ip: "10.150.36.191", bridge: "en4: USB-eth"

注意:bridge的名称中不能包含中文,Vagrant无法识别,需要修改

  1. 验证

同一网络的其他主机ping一下,或者在本机上运行:

~ ip addr
# 然后就会看到显示结果中多了一个