虚拟机网络配置

学会配置虚拟机的几种不同类型的网络:端口转发,私有网络,公有网络。

虚拟机网络

配置虚拟机的网络,主要就是要把在虚拟机上安装的服务公开,比如我们在虚拟机上安装了一个 Web 服务器,你想在虚拟机之外访问安装在这个虚拟机上的 Web 访问器,就需要配置一下虚拟机的某种类型的网络,可以是端口转发,私有网络或公有网络。

启动虚拟机以后,你的虚拟机就可以使用 nat 这种上网方式,也就是如果你的电脑能上网,在你的虚拟机的内部也是可以上网的。做个试验:

打开命令行,进入到一开始我们创建的项目,然后启动虚拟机:

  1. cd ~/desktop/awesome-project
  2. vagrant up

在启动虚拟机返回的日志里,你会看到网络相关的配置:

  1. ==> default: Clearing any previously set forwarded ports...
  2. ==> default: Clearing any previously set network interfaces...
  3. ==> default: Preparing network interfaces based on configuration...
  4. default: Adapter 1: nat
  5. ==> default: Forwarding ports...
  6. default: 22 (guest) => 2222 (host) (adapter 1)

一开始会清理之前配置的端口转发与网卡的配置。然后会根据我们在 Vagrantfile 里做的网络配置重新配置虚拟机内部的网络。Adapter 1 表示网卡 1,类型是 nat 。最后又设置了一个转发的端口(Forwarding ports),把主机(host)上的 2222 端口转发到虚拟机(guest)上的 22 端口。这个配置是 Vagrant 自动配置的,从主机使用 SSH 连接到虚拟机的时候需要用到这个端口转发 22 (guest) => 2222 (host) 的网络配置。

连接到虚拟机,执行:

  1. vagrant ssh

现在命令行的提示符会像这样:

  1. [vagrant@localhost ~]$

这就表示你已经进入到虚拟机的内部了,在里面的操作都相当于是在虚拟机内部去做的。

做个试验,验证一下你的虚拟机是否可以访问某个网站,执行命令:

  1. ping ninghao.net

如果返回下面类似形式的信息,说明是可以连接到指定的网站的:

  1. PING ninghao.net (116.62.90.68) 56(84) bytes of data.
  2. 64 bytes from 116.62.90.68 (116.62.90.68): icmp_seq=1 ttl=63 time=22.8 ms
  3. 64 bytes from 116.62.90.68 (116.62.90.68): icmp_seq=2 ttl=63 time=22.5 ms

ping 命令会往你指定的主机上发送一些数据包,主机一般收到这种数据包以后会返回给你一些信息,你的虚拟机能收到这个回馈,就证明虚拟机能够连接到这台主机。不过要注意,有些服务器可能会禁止接收 ping 命令发送的数据包,这样虽然你能连接到它,但是不会收到服务器的回馈。大部分的操作系统都可以使用这个 ping 命令。