VirtualBox网络连接方式学习笔记

VirtualBox的7种网络接入模式详解

参考链接参考链接

各网络模式的默认情况下,网络连接情况

NAT模式 桥接模式 Host-Only模式
虚拟机 -> 宿主机 默认不能,需要设置
宿主机 ——> 虚拟机 x 默认不能,需要设置
虚拟机 ——> 虚拟机 x
虚拟机 ——> 同局域网下其他主机 默认不能,需要设置
同局域网下其他主机 ——> 虚拟机 x 默认不能,需要设置

参考链接

配置网络地址转换(NAT)模式

NAT模式下,宿主机访问虚拟机,虚拟机可以访问宿主机,虚拟机可以访问互联网。

访问外网

选择对应虚拟机 -> 设置 -> 网络 -> 选择连接方式为NAT -> 选择控制芯片
在这里插入图片描述
这样配置以后,启动虚拟机,执行ping www.baidu.com有响应说明配置成功。如果没有响应换一个控制芯片试试,上图框红的两个控制芯片是可以的。

宿主机访问虚拟机

配置步骤如下:
选择对应虚拟机 -> 设置 -> 网络 -> 端口转发(主机为222,子系统为22,其他不用填)
在这里插入图片描述
配置完重启虚拟机后,宿主机访问虚拟机连接如下:
在这里插入图片描述
注意,这种模式文件传输非常慢,本地上传一个10多KB的文件到虚拟机花费差不多2分钟。

配置桥接模式

桥接模式下,虚拟机和宿主机在同一网段,虚拟机可以访问外网,宿主机可以访问虚拟机,虚拟机可以访问宿主机同一局域网的其他机器。具体配置步骤如下所示:

网络连接方式设置

在这里插入图片描述
这里的MAC地址和网卡配置文件的HWADDR一致,否则会重启网络服务失败。
确定界面名称是网络的适配器,一般默认的没问题。
在这里插入图片描述
配置完桥接模式,启动虚拟机,网络就是通的,只是IP不固定。

修改网卡配置文件

这一步的目的是固定虚拟机的IP地址。
先查看宿主机的网络信息:
在这里插入图片描述
修改虚拟机的网卡配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# 改为静态
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
# 和ifcfg-enpXXX名一致
NAME=enp0s3
# 可以不写,但是写了就不能和其他网卡相同。可以用uuidgen命令生成。
UUID=40263cbd-6ed4-497c-9321-7326e27d4a29
# 和ifcfg-enpXXX名一致
DEVICE=enp0s3
# 改为yes,即开机
ONBOOT=yes
# 和宿主机在同一网段不同ip
IPADDR=10.1.18.156
# 和宿主机保持一致,否则会重启失败
NETMASK=255.255.255.0
# 和宿主机保持一致,否则会重启失败
GATEWAY=10.1.18.1
# 可以注销,不然得写正确,否则会重启失败
HWADDR=08:00:27:CB:CB:8E
# 不要写宿主机的字符串!可以网上查一个服务器,下面用的Google的DNS服务器
DNS1=8.8.8.8

测试网络

配置正常后,直接ping www.baidu.com就可以联通了。宿主机访问虚拟机,连接方式如下:
在这里插入图片描述

参考链接参考链接

NAT+HostOnly模式组合

设置主机网络管理器

在这里插入图片描述
在这里插入图片描述
这个是VirtualBox的默认设置,不是这个可以改为这个,后续配置文件就不需要改了。

网络连接方式设置

在这里插入图片描述
在这里插入图片描述
设置好后,启动虚拟机。

虚拟机网卡配置文件修改

Nat模式启动虚拟机就可以访问外网,直接ping www.baidu.com是可以连通的。

修改默认网卡配置文件(NAT)

先用ip route命令查看网卡配置文件,如下可以看到默认配置文件是/etc/sysconfig/network-scripts/ifcfg-enp0s17,如果该配置文件命名不一致需要修改,并修改里面内容的名称。

1
2
3
4
[root@localhost ~]# ip route
default via 10.0.2.2 dev enp0s17 proto dhcp metric 101
10.0.2.0/24 dev enp0s17 proto kernel scope link src 10.0.2.15 metric 101
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 100

然后修改"ONBOOT=yes",修改后配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s17
UUID=2f3b7238-96e2-4aa2-9a78-17270e4b8f5d
DEVICE=enp0s17
# 设置为yes
ONBOOT=yes

修改网卡2配置文件(HostOnly)

网卡2为HostOnly网络连接模式的配置文件,需要设置为静态ip,修改后的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# BOOTPROTO改为static,意为静态模式
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
# NAME改为enp0s8,和文件名称后缀ifcfg-xxx保持一致。和ip route中的网卡2后缀一致。
NAME="enp0s8"
# 可以不写,但是写了就不能和其他网卡相同。可以用uuidgen命令生成。
UUID="87a8c150-3d1a-4111-97aa-816692dcf504"
# DEVICE改为enp0s8,和文件名称后缀ifcfg-xxx保持一致。和ip route中的网卡2后缀一致。
DEVICE="enp0s8"
ONBOOT="yes"
# IPADDR需要在指定的IP范围内(可以在VirtualBox主机网络配置管理器DHCP服务器中查看)
IPADDR=192.168.56.102
# NETMASK也和指定的服务器子网掩码一致(可以在VirtualBox主机网络配置管理器DHCP服务器中查看)
NETMASK=255.255.255.0

宿主机通过静态ip(HostOnly方式)访问虚拟机

在这里插入图片描述
经测试,这种模式文件传输非常快。

NAT+HostOnly模式与桥接模式不同的是,IPADDR、网关的配置。

  • NAT+HostOnly模式不用配置网关,IPADDR参考的是VirtualBox主机网络配置
  • 桥接模式要配置网关,IPADDR参考的是config/all命令返回的配置

参考链接

碰到问题

使用service network restart命令失败,要么配置文件问题(确定配置文件名和路由一致),要么网卡没选对。

1
2
3
4
[root@localhost ~]# ip route
default via 10.0.2.2 dev enp0s17 proto dhcp metric 101
10.0.2.0/24 dev enp0s17 proto kernel scope link src 10.0.2.15 metric 101
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101 metric 100

ip route命令输出enp0s17 ,即网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-enp0s17。如果该配置文件命名不一致需要修改,并修改里面内容的名称。

注意enp0s9不等于enp0s09,配置文件名多个0也会启动失败!

Job for network.service failed. See ‘systemctl status network.service’ and 'journalctl -xn’问题的解决方法(含重启网络管理相关命令)

参考链接参考链接

ip route没有显示路由信息,检查下网络管理有没有开启

执行下面两个命令如下:

1
2
chkconfig NetworkManager on
service NetworkManager start

桥接模式下,无法访问外网

防火墙开启是不影响的,检查下DNS服务器。