现存问题
windows系统主要使用vmare和virtualbox两种虚拟机,virtualbox相对于vmare更加轻便,但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后,决定写一篇文章介绍virtualbox虚拟机上网的流程。
需求
1. virtualbox虚拟机与宿主机能够通信,便于宿主机通过ssh协议连接虚拟机
2. virtualbox虚拟机能够访问互联网,便于下载互联网资源
方法
下载安装
首先在官网根据自身系统下载对应版本的virtualbox。创建虚拟机有以下三种方式。
- 本地存在.ova或者.ovf文件(现成的虚拟操作系统文件),则按以下图片直接导入电脑即可
- 若之前注册过虚拟机,则会将相关的虚拟机文件保存到某个文件夹下,此时可以直接使用注册,选择该文件夹下的.xml或.vbox文件
- 通过以下页面,也可以新建一个虚拟机
网卡配置(重要)
首先需要知道virtualbox的网卡有以下几种常见的模式,它们分别的作用记录在表格中。
网络类型 | 作用 |
NAT(网络地址转换模式) | 1. 通过宿主机的网络来访问公网 2. 宿主机不能和虚拟机进行通信 |
Bridged(桥接模式) | 1. 拥有独立的ip地址,访问公网 2. 要和宿主机器处于同一网段才能进行通信 |
Host-only(主机模式) | 1. 虚拟机无法访问公网 2. 宿主机能和虚拟机进行通信 |
根据各种不同的模式,目前想要实现目的,通常有两种方法。一种是使用NAT模式,然后通过端口转发的方式解决宿主机和虚拟机通信的问题;另一种是使用两块网卡,一块使用NAT模式访问公网,另一块使用Host-only模式访问宿主机。这里采用第二种方式,来配置网卡,具体的配置信息如下图所示。
配置修改
然后需要修改每一块网卡的配置, 这里使用netplan实现。具体命令如下:
cd /etc/netplan
sudo vim 00-installer-config.yaml
sudo netplan apply
其中上述第二步中 00-installer-config.yaml 中需要保存的内容如下,要注意用缩进来表示层级关系,每个冒号之后要有个空格。这里设置了两张网卡,第一张网卡enp0s3对应上一步中的NAT模式,因此开启DHCP协议,自动获取IP地址用于访问互联网。第二张网卡enp0s8对应上一步的Host-only模式,因此关闭DHCP协议。addresses字段需要指定一个固定IP地址(自己想一个合法的)。
network:
ethernets:
enp0s3: # 配置的网卡名称,可以使用ifconfig -a查看本机的网卡
dhcp4: true # 动态IP配置协议
nameservers:
addresses: # 要设置的DNS地址
- 8.8.8.8
- 114.114.114.114
enp0s8:
dhcp4: no
dhcp6: no
addresses:
- xx.xx.xx.xx/24
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
version: 2
配置完成后,可以使用以下命令依次检查是否配置成功:
- ifconfig: 检查virtualbox界面上网卡的mac地址与实际配置的mac地址是否对应(具体而言,我将enp0s3网卡的信息配置为NAT模式,而"网卡1"也是NAT模式,所以查看两者的mac地址是否一样,结果发现均为0800271A58F6)
验证
配置完成后,需要验证网卡是否起作用。首先是使用 ping baidu.com 是否能够上网,正确结束如下:
然后宿主机和虚拟机相互ping通即可,宿主机的ip地址使用cmd输入ipconfig可以查询,而虚拟机的ip地址就是上述自己所设置的。