如何在VMware/VirtualBox中将虚拟机连接到Internet连接

时间:2020-01-09 10:37:49  来源:igfitidea点击:

Oracle VirtualBox和VMware Workstation Player具有多种类型的网络模式。
这两个是最终用户执行研发和测试最常用的虚拟化软件。

在深入探讨如何将虚拟机连接到Internet连接的主要主题之前,我们必须在环境服务器上安装Oracle VirtualBox,并且必须熟悉各种类型的网络模式,并且哪种模式可以帮助我们使用虚拟机中的Linux或者Windows操作系统。

下面是网络模式,我们必须使用这些网络模式来启用虚拟机并将其连接到Internet连接

  • 桥接网络

  • NAT(网络地址转换)

桥接网络如何工作?

通过桥接网络,Oracle VM VirtualBox使用主机系统上的设备驱动程序来过滤来自物理网络适配器的数据。

因此,该驱动程序称为净过滤器驱动程序。
这使Oracle VM VirtualBox可以拦截来自物理网络的数据并将数据注入到其中,从而有效地在软件中创建新的网络接口。

当来宾使用这种新的软件接口时,它看起来像是使用网络电缆将来宾物理连接到主机系统的主机系统。
主机可以通过该接口将数据发送给来宾,并从中接收数据。
这意味着我们可以在来宾和网络的其余部分之间设置路由或者桥接。

另请阅读:

如何在CentOS/RHEL 7中创建或者配置网桥

NAT网络如何工作?

网络地址转换(NAT)是从虚拟机访问外部网络的最简单方法。
通常,它不需要在主机网络和来宾系统上进行任何配置。

启用了NAT的虚拟机的行为就像是一台通过路由器连接到Internet的真实计算机。
在这种情况下,路由器是Oracle VM VirtualBox网络引擎,该引擎透明地映射虚拟机与虚拟机之间的流量。

如何在Oracle Virtual Box中选择/更改网络模式?

  • 假设我们已经拥有一个正在运行的虚拟机,请选择该虚拟机。

  • 从Oracle Virtual Box的顶部面板菜单中单击"计算机",然后选择"设置"。

  • 接下来,从左侧面板菜单中选择"网络"

  • 选择我们要用来将虚拟机连接到互联网的适配器

  • 接下来,从下拉菜单中选择"桥接适配器"或者" NAT"

  • 单击"确定"并保存设置。

提示:

即使虚拟机处于运行状态,也可以更改网络模式,但仍建议关闭虚拟机电源后执行此活动。

如何在VMware Workstation Player中选择/更改网络模式?

  • 再次假设我们已经有一个正在运行的虚拟机

  • 单击顶部菜单上的"播放器",从下拉菜单中选择"管理",然后单击"虚拟机设置"。
    或者,我们也可以按Ctrl + D打开虚拟机设置

  • 选择要用于将虚拟机连接到Internet连接的"网络适配器"

  • 接下来,将网络模式选择为" NAT"或者"桥接"

  • 单击"确定"并保存设置。

提示:

即使虚拟机处于运行状态,也可以更改网络模式,但仍建议关闭虚拟机电源后执行此活动。

说明:

如果尚未创建虚拟机,则在初始设置过程中,可以选择桥接或者NAT作为虚拟网络适配器的网络模式。

使用NAT将虚拟机连接到Internet连接

我假设我们已经为虚拟机的适配器选择了" NAT"作为网络模式。
对于NAT,重要的是我们保留网络设置以使用DHCP。
对于默认设置,此处不需要最终用户进行任何手动更改。

在RHEL/CentOS环境中,验证网络配置。
验证接口配置文件的BOOTPROTO指令

提示:

在我的情况下,配置文件名为ifcfg-Ethernet_connection_1,这可能因环境而异,因此请进行相应检查。

# egrep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-Ethernet_connection_1
BOOTPROTO=dhcp

另外,我们可以使用nmcli进行验证,以列出可用的网络连接

# nmcli con show
NAME                   UUID                                  TYPE      DEVICE
Ethernet connection 1  30cb1359-cb34-4dae-b994-f4b3b39542d7  ethernet  enp0s3

这里我们有一个单一的连接以太网连接1,因此请为此连接验证BOOTPROTO

# nmcli -p con show "Ethernet connection 1" | grep -i "ipv4.method"
ipv4.method:                            auto

如我们所见,我们的IPv4连接设置为auto,对于静态ip它将设置为manual

我的/etc/resolv.conf文件

# cat /etc/resolv.conf
# Generated by NetworkManager
search theitroad.com
nameserver 192.168.43.1

在Oracle VirtualBox上

重要的提示:

NAT在VirtualBox和VMware中的工作方式有所不同。
在Oracle VirtualBox NAT中,NAT很像路由器后面的专用网络,虚拟机是不可见的,并且无法从外部Internet访问。
除非设置端口转发,否则无法以这种方式运行服务器。

但是在VMware Workstation Player中,我们可以使用NAT IP地址直接连接到虚拟机。

列出可用的接口,并在"设置"中标识已将其" NAT"配置为网络模式的接口。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:d5:cb:b6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86385sec preferred_lft 86385sec

在NAT模式下,默认情况下将来宾网络接口分配给IPv4范围" 10.0.x.0/24",其中" x"对应于NAT接口" +2"的实例。
因此,当只有一个NAT实例处于活动状态时,x为2. 在这种情况下,将访客分配给地址10.0.2.15,将网关设置为10.0.2.2,并且可以在10.0.2.3处找到名称服务器。

我们可以在Windows机器上的VirtualBox主目录下,使用以下命令来更改单个虚拟机的默认NAT网络。

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "VM name" --natnet1 "192.168.100.0/24"

该命令将为VM名称的第一个NAT网络实例保留从192.168.100.0到192.168.100.254的网络地址。
访客IP将分配给192.168.100.15,默认网关位于192.168.100.2.

# ip addr show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:d5:cb:b6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.15/24 brd 192.168.100.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86138sec preferred_lft 86138sec
    inet6 fe80::a00:27ff:fed5:cbb6/64 scope link
       valid_lft forever preferred_lft forever

删除NAT网络的自定义更改

C:Program FilesOracleVirtualBox>VBoxManage modifyvm "VM name" --natnet1  default

现在尝试将虚拟机连接到Internet连接

# ping google.com
PING google.com (216.58.196.174) 56(84) bytes of data.
64 bytes from maa03s31-in-f14.1e100.net (216.58.196.174): icmp_seq=1 ttl=52 time=37.8 ms
64 bytes from maa03s31-in-f14.1e100.net (216.58.196.174): icmp_seq=2 ttl=52 time=35.0 ms
^C
--- google.com ping statistics --
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 35.036/36.428/37.821/1.405 ms

说明:

在某些情况下,如果无法使用NAT将虚拟机连接到Internet连接,请尝试切换适配器类型。
有时,"适配器类型"可能是导致问题的原因。
就VirtualBox而言,我必须使用virtio-net作为Adapter Type

如何在VirtualBox中更改适配器类型?

  • 要更改适配器类型,必须关闭相应虚拟机的电源。

  • 接下来打开虚拟机的"设置"。

  • 导航到"网络",然后选择要为其更改适配器类型的"适配器"

  • 从"适配器类型"的下拉菜单中选择首选类型。
    对我来说,我已经使用了Paravirtualized Network(virtio-net),因为IntelPRO/1000 T Server(82543GC)无法连接到互联网。

提示:

在VMware Workstation Player 15中,我找不到更改NAT网络适配器类型的任何选项。

在VMware Workstation Player上

其中我在VMware Player上的VM在DHCP上,并在VM设置中配置为NAT,我能够从Windows主机笔记本电脑连接到虚拟机。

# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:23:13:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.118.128/24 brd 192.168.118.255 scope global dynamic noprefixroute ens33
       valid_lft 1472sec preferred_lft 1472sec
    inet6 fe80::20c:29ff:fe23:13e0/64 scope link
       valid_lft forever preferred_lft forever

我的/etc/resolv.confNetworkManager自动填充

# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain theitroad.com
nameserver 192.168.118.2

我的默认网关

# ip route show
default via 192.168.118.2 dev ens33 proto dhcp metric 100

检查我们是否能够将虚拟机连接到Internet连接

# ping google.com
PING google.com (172.217.26.206) 56(84) bytes of data.
64 bytes from maa03s23-in-f206.1e100.net (172.217.26.206): icmp_seq=1 ttl=128 time=38.9 ms
64 bytes from maa03s23-in-f206.1e100.net (172.217.26.206): icmp_seq=2 ttl=128 time=45.6 ms
^C
--- google.com ping statistics --
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 38.940/42.278/45.616/3.338 ms

使用桥接网络将虚拟机连接到Internet连接

对于桥接网络模式,我们可以为虚拟机使用DHCP或者静态IP。
我希望我们已经将虚拟机适配器的网络模式更改为桥接,以便能够将虚拟机连接到Internet连接。

Oracle VirtualBox和VMware Workstation Player的使用桥接网络的步骤相同

说明:

要获得静态IP,我们必须知道路由器使用的子网,网关和DNS详细信息,以便可以将其用于系统的IP配置。

我们将继续使用DHCP来演示本文,因此请按照本文前面的说明验证网络配置

我的新IP地址现在是

# ip addr show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:d5:cb:b6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.38/24 brd 192.168.43.255 scope global dynamic noprefixroute enp0s3
       valid_lft 3486sec preferred_lft 3486sec
    inet6 fe80::a00:27ff:fed5:cbb6/64 scope link
       valid_lft forever preferred_lft forever
# ip route
default via 192.168.43.1 dev enp0s3 proto dhcp metric 100

如我们所见,IP地址已更改,现在我直接从路由器获取IP地址,该路由器应该与我们使用同一路由器的笔记本电脑从其获取IP的子网位于同一子网中。

以下是使用" ipconfig"命令从我的笔记本电脑获得的IP地址

Wireless LAN adapter WiFi:
   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2401:4900:273c:d7cf:979:d5f9:4b34:4958
   Temporary IPv6 Address. . . . . . : 2401:4900:273c:d7cf:6cf5:88f5:2444:dadf
   Link-local IPv6 Address . . . . . : fe80::979:d5f9:4b34:4958%2
   IPv4 Address. . . . . . . . . . . : 192.168.43.168
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : fe80::72dd:a8ff:fe0a:8b6f%2
                                       192.168.43.1

因此,我的笔记本电脑和虚拟机都使用192.168.0.1作为默认网关。

检查我们是否能够将虚拟机连接到Internet连接

# ping google.com
PING google.com (216.58.196.174) 56(84) bytes of data.
64 bytes from maa03s31-in-f14.1e100.net (216.58.196.174): icmp_seq=1 ttl=53 time=48.3 ms
64 bytes from maa03s31-in-f14.1e100.net (216.58.196.174): icmp_seq=2 ttl=53 time=46.7 ms
^C
--- google.com ping statistics --
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 46.668/47.499/48.330/0.831 ms

说明:

如果我们使用的是NAT或者任何其他网络模式,则必须使用VirtualBox/VMware登录到虚拟机的控制台,并使用systemctl restart network重新启动网络接口以获取新地址。