如何在VMware/VirtualBox中将虚拟机连接到Internet连接
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.conf
由NetworkManager
自动填充
# 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重新启动网络接口以获取新地址。