如何配置 VirtualBox 中的客户机与宿主机之间的网络连接

news/2024/5/20 7:33:21 标签: 运维, 数据库, 操作系统

当你在 VirtualBox 虚拟机软件 中安装了各种操作系统时,你可能需要实现宿主机与虚拟机之间的相互访问。

在这篇文章中,我们将会以最简单明了的方式来说明如何配置客户机与 Linux 宿主机的网络,以实现两者相互访问或者让客户机连接到外网。(LCTT 译注:客户机指 Oracle VirtualBox 虚拟机软件中安装的操作系统,如本文中用到的 CentOS 7 和 Ubuntu 16.10 。宿主机就是你自己的笔记本电脑或台式机,注意这篇文章中作者的宿主机上安装的操作系统是 Linux Mint 18 ,而不是我们平时使用的 Windows 系统。)

本文测试环境: 1、宿主机操作系统—— Linux Mint 18 2、客户机操作系统—— CentOS 7 和 Ubuntu 16.10

要求

  1. 宿主机上安装的  VirtualBox 虚拟机 能正常使用。
  2. 你得事先在 Oracle virtualBox 虚拟机软件中安装好客户机操作系统,比如 Ubuntu、Fedora、CentOS、 Linux Mint 或者其它的 Linux 系统也行。
  3. 在你配置网络前,请先关闭客户机。

为了让宿主机和客户机能够互相联通,这两个机器的默认网卡 IP 必须设置在同一网段,你可以为客户机添加多达 4 块网卡。

默认网卡(网卡 1)通常用于使用 NAT 连接方式连接到宿主机进行上网。

重要提示:通常总是设置第一块网卡与宿主机通信,第二块网卡连接到外网。

为客户机和宿主机创建网卡

在下面的 VirtualBox 管理器界面,创建客户机和宿主机之间的通信网卡。

打开文件->首选项配置,或者使用组合键 Ctrl + G :

Virtualbox 首选项界面

Virtualbox 首选项界面

在下图中有两个选项,单击并选择仅主机Host-only网络。然后使用右侧的 + 按钮来添加一个新的仅主机网络。

设置客户机网络

设置客户机网络

这样就创建好了一个名为 vboxnet0 的新的仅主机模式网卡。

如果你愿意,你可以使用中间的 - 按钮来删除这个网卡,你可以单击编辑按钮来查看这个网卡的详细配置信息。

你也可以根据自己的实际环境修改配置信息,比如网络地址,子网掩码等等。

注意:下图中的 IPv4 地址就是你的宿主机的 IP 地址。

宿主机网络信息

宿主机网络信息

下图中,如果你想让客户机使用动态 IP 地址,你可以通过配置 DHCP 服务来完成(在使用前请确保启用 DHCP )。但是我建议你为客户机配置一个静态 IP 地址。

在下面的设置所有网络界面单击 OK 按钮来保存修改的配置。

为客户机设置静态 IP 地址

为客户机设置静态 IP 地址

配置客户机网络设置

注意:你可以根据下面的步骤来为任何需要与宿主机通信的客户机添加网卡。

回到 VirtualBox 管理器界面,选择客户机,比如  Ubuntu 16.10 Server 或者 CentOS 7 ,然后单击设置菜单。

配置客户机网络设置

配置客户机网络设置

配置客户机网卡以连接到宿主机

从下图的界面中选择网络选项。然后配置第一块网卡( 网卡 1 )的信息如下:

  1. 勾选选项:“启用网卡”来开启该网卡。
  2. 在连接方式选项:选择仅主机Host-only网络。
  3. 然后选择网卡名称:vboxnet0

如下图所示,单击 OK 来保存设置:

启用客户机网络

启用客户机网络

配置客户机网卡连接外网

之后添加第二块网卡(网卡 2 )来让客户机连接到宿主机进行上网。使用下面的设置:

  1. 勾选选项:“启用网络连接”来激活这块网卡。
  2. 在连接方式选项:选择 NAT 方式。

Enable Network Adapter for VM

Enable Network Adapter for VM

为客户机启用网络连接

为客户机设置静态 IP 地址

启动客户机,登录系统并配置静态 IP 地址。在客户机上执行下面的命令来查看所有网卡配置信息,然后分配一个 IP 地址:

 
 
  1. $ ip add

为客户机配置静态 IP 地址

为客户机配置静态 IP 地址

从上面的截图中可以看出客户机已启用了三块网卡:

  1. lo ——回环网络接口
  2. enp0s3 (网卡 1)—— 前一步我们配置的连接方式为仅主机Host-Only模式并且已启用 DHCP 的网卡,之后我们又配置成了静态 IP 地址。
  3. enp0s8 (网卡 2)—— 用于连接到外网。该网卡默认情况下使用 DHCP 来动态获取 IP 地址。
在 Debian/Ubuntu/Linux Mint 系统下的配置

重要提示: 这里我使用的是 Ubuntu 16.10 Server , IP 地址为 192.168.56.5 。

使用你喜欢的编辑器及管理员账号打开 /etc/network/interfaces 配置文件:

 
 
  1. $ sudo vi /etc/network/interfaces

修改网卡 enp0s3 的配置信息如下(根据你的实际环境进行修改):

 
 
  1. auto enp0s3
  2. iface enp0s3 inet static
  3. address 192.168.56.5
  4. network 192.168.56.0
  5. netmask 255.255.255.0
  6. gateway 192.168.56.1
  7. dns-nameservers 8.8.8.8 192.168.56.1

保存并退出。

然后使用下面的命令来重启网络服务:

 
 
  1. $ sudo systemctl restart networking

或者,正常重启系统,然后检查网络配置是否为新的 IP 地址:

 
 
  1. $ ip add
在 RHEL/CentOS/Fedora 系统下的配置

重要提示: 这里我使用的是 CentOS 7 系统, IP 地址为: 192.168.56.10 。

使用管理员帐号及你喜欢的编辑器打开 enp0s3 (仅主机网络)的网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 :

 
 
  1. $ sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

创建或修改配置文件信息如下(根据你实际的环境进行修改):

 
 
  1. BOOTPROTO=static
  2. ONBOOT=yes
  3. IPADDR=192.168.56.10
  4. NETWORK=192.168.56.0
  5. NETMASK=255.255.255.0
  6. GATEWAY=192.168.56.1
  7. DNS=8.8.8.8 192.168.56.1
  8. NM_CONTROLLED=no #use this file not network manager to manage interface

保存并退出。然后使用下面的命令重启网络服务(也可以重启系统):

 
 
  1. $ sudo systemctl restart network.service

检查修改的配置地信息是否生效:

 
 
  1. $ ip add

在宿主机上使用 SSH 工具来管理客户机

在宿主机上使用 SSH 工具来管理你的客户机。在下面的实例中,我将使用 SSH 工具连接到 CentOS 7 服务器(192.168.56.10):

 
 
  1. $ ssh tecmint@192.168.56.10
  2. $ who

使用 SSH 工具连接客户机

使用 SSH 工具连接客户机

原文发布时间为:2017-03-01

本文来自云栖社区合作伙伴“Linux中国”


http://www.niftyadmin.cn/n/712991.html

相关文章

深入浅出iframe

前言 说起iframe,大家都会觉得很嫌弃或者很不愿接近,原因大概都是:能耗高,安全问题,spider不喜欢它...也有(不少)同学内心独白就是:不!这很low很dirty,我才不…

ios 消息推送原理

一、消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1-1 1、 Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,…

qt如何优化程序内存_Python基础教程:(小窍门)如何优化Python占用的内存

概述如果程序处理的数据比较多、比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题。下面我…

python生成表格乱码_Python程序中使用SQLAlchemy时出现乱码的解决方案

今天对clubot进行了升级, 但是导入数据后中文乱码, 一开是找资料说是在创建引擎的时候添加编码信息:?但是这并不行, 然后查看表信息:?发现原来创建表的时候用的latin1编码, 而老的表是用utf-8编码创建的, SQLAlchemy中并没有发现有创建表时指定指定编码的方法. 所以只能在MyS…

ZZULIOJ-1092,素数表(函数专题)(Python)

题目描述: 输入两个正整数m和n,输出m和n之间的所有素数。 要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。 int prime(int n) { //判断n是否为素数&#xff0…

计算机硬件的组成要素

不清楚cpu(处理器)、内存、I/O的小伙伴们,重点来了! 计算机硬件的主要组成要素如下图:CPU是计算机的大脑,在其内部可对数据执行运算并控制内存和I/O。内存用于存储指令和数据。I/O负责把键盘、鼠标、显示器…

python 短路运算符_Python中三目计算符的正确用法及短路逻辑

今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘.短路逻辑Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接看代码print True and 1# 1print True or 1# Trueprint False and 1# Falseprint F…

ZZULIOJ-1093,验证哥德巴赫猜想(函数专题)(Python)

题目描述: 哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是对于任给的一个不小于6的偶数,来寻找和等于该偶数的所有素数对。做好了这件实事,就能说明这个猜想是成立的。 要求程序定义一个prime()函数和一个main()函数&#x…