当前位置: > 虚拟化 Virtualization > VirtualBox >

VirtualBox 虚拟机的网络设置

时间:2016-06-08 17:05来源:linux.it.net.cn 作者:IT

用 VirtualBox 创建虚拟机的时候,默认会使用网络地址转换(NAT)模式,也称为 Host-only 模式,为虚拟机创建网络连接。这可以让虚拟机通过母机的网络连接来访问互联网。但是母机却不一定能够访问虚拟机的网络资源。这时,可以给虚拟机添加一块“桥接网卡”来使母机及其它家庭网络上的设备直接访问虚拟机。当然,如果还有另一个虚拟机也这么设置了网络连接,虚拟机之间也可以顺利访问。

 

目录 Contents
  • 0. 使用情景
  • 1. 添加“桥接网卡”
  • 2. 虚拟机系统中桥接网卡的设置
    • A. 虚拟机使用 Windows 操作系统
    • B. 虚拟机使用 CentOS 操作系统

0. 使用情景

但是因为各家的上网情况可能有所不同,这里预设一种情景:使用路由器在家里的各台设备之间共享网络连接。目前,这应该是一种很常见的方式吧?!这里假设无线路由器的 IP(网关的 IP)是 192.168.0.1,那么家里各台电脑就是 192.168.0.2、192.168.0.3 等等。(当然别的局域网 IP 也可以,比如 192.168.56.*。)

假设当前使用的电脑(母机)的 IP 是 192.168.0.2,而 192.168.0.10 这个 IP 目前还没有设备使用,我们将它分配给虚拟机使用。实际上,使用 DHCP 自动分配 IP 地址的话,虚拟机的桥接网卡也能自动从路由器获取 192.168.0.* 的 IP。

为什么要给固定下来呢?因为我们的目的是用虚拟机来模拟一个 VPS 服务器,让它的 IP 地址固定就可以使用 HOSTS 文件来欺骗电脑使之可以通过域名访问虚拟机上的网站。

要通过域名访问虚拟机,需要修改母机的 HOSTS 文件(即文件 %systemdrive%/windows/system32/drivers/etc/hosts,Linux 的话一般是/etc/hosts),在后面添加下面的内容:

192.168.0.10 domain.com
192.168.0.10 www.domain.com

保存。以后就可以直接通过域名 domain.com 和 www.domain.com 访问虚拟机了:

ping domain.com

如果家庭网络上的其它计算机也要通过域名访问这个虚拟机,也需要类似修改其 HOSTS 文件。

1. 添加“桥接网卡”

给虚拟机安装操作系统可以参考:给 VirtualBox 虚拟机安装最小化 CentOS 操作系统。如果想安装 Windows,可以参考前文加载 Windows 安装光盘映像来启动安装,剩下的应该不困难了吧。

在 VirtualBox 中创建了虚拟机并安装操作系统之后,就可以给它添加另一块网卡(当然是虚拟网卡)了。

创建了 CentOS 虚拟主机的 VirtualBox 主界面

创建了 CentOS 虚拟主机的 VirtualBox 主界面

方法:

关闭虚拟机,在 VirtualBox 主界面(如上图所示),选中要添加第二块网卡的虚拟机,这里举例用的是 CentOS 这个虚拟机,然后单击上面的“设置”按钮打开虚拟机设置界面,并从左侧栏切换到“网络”条目。如下图所示。

VirtualBox 虚拟机的网络设置界面

VirtualBox 虚拟机的网络设置界面

其中“网卡 1”已经默认设置为“网络地址转换(NAT)”模式,可以让虚拟机通过母机的网络来访问互联网。

点击“网卡 2”,勾选“启用网络连接”,将“连接方式”更改为“桥接网卡”,其它不需要修改,但是需要点开“高级”然后记下 “MAC 地址”后面的字符(我这里是 080027f26be7)。上面的“界面名称”实际是虚拟机内部的网卡需要桥接到的母机网卡的名称。

然后单击窗口下面的“确定”保存设置。添加网卡完成!

2. 虚拟机系统中桥接网卡的设置

下面按照虚拟机里的操作系统分两种情况,Windows 和 CentOS Linux,分别说明“桥接网卡”的设置。

A. 虚拟机使用 WINDOWS 操作系统

虚拟机里安装了 Windows 操作系统的话,也许不需要这块”桥接网卡“就可以与母机双向通信。但是,如果想要家庭网络上的其它计算机也可以自由访问虚拟机的话,还是需要桥接网卡的。

Windows 中设置桥接网卡非常方便,因为 Windows 开机启动之后会自动添加新硬件。等它添加了新的网卡之后,我们只需要在”网络连接“里面将新网卡的 IP 设置为 192.168.0.10(举例),同时配置”网络掩码“为 255.255.255.0,网关为 192.168.0.1,再配置自己喜欢的 DNS(比如Google 的公共 DNS)或者直接用路由器作为 DNS(192.168.0.1)即可。

B. 虚拟机使用 CENTOS 操作系统

Linux 的发行版太多了,而且各自的配置文件还不一定相同,所以这里只举例说明 CentOS 中的设置情况。下面的命令行指令直接输入到虚拟机启动后其操作系统界面里的 # 号后面并回车即可,因为这里的目的主要是模拟 VPS,并没有使用图形界面。

  1. 修改网络配置文件 ifcfg-eth0,
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
  2. 这会打开一个文本编辑区域。按 i 键开始编辑,用上下左右键将光标移动到 ONBOOT=no那里,删除 no,输入 yes。
  3. 然后按 Ctrl+c 键退出编辑状态,再按 shift+; 组合键输入 : ,紧接着输入 wq 保存并退出文本编辑器。
  4. 将 ifcfg-eth0 复制一份另存为 ifcfg-eth1:
     cp -rf /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1

    然后编辑 ifcfg-eth1(编辑方法同前述编辑 ifcfg-eth0 的方法):

    vi /etc/sysconfig/network-scripts/ifcfg-eth1

    将其中的内容改为(其中 HWADDR 就是刚才记下的那一串字符,只不过用 : 分割开了):

    DEVICE="eth1"
    HWADDR=08:00:27:F2:6B:E7
    TYPE=Ethernet
    NM_CONTROLLED=no
    ONBOOT=yes
    IPADDR=192.168.0.10
    NETMAK=255.255.255.0
    GATEWAY=192.168.0.1

    然后保存退出编辑器。接着执行下面的指令重新启动所有网络连接:

    service network restart

    应该能看到类似下面的反馈信息:

    Shutting down loopback interface:                      [  OK  ]
    Bringing up loopback interface:                        [  OK  ]
    Bringing up interface eth0:
    Determining IP information for eth0... done.           [  OK  ]
    Bringing up interface eth1:                            [  OK  ]

    如果没有看到“Bringing up interface eth1:    [ OK ]”这样的反馈信息,那有可能是因为 eth1 没有安装好。试着执行下面的指令让 CentOS 自动检测新硬件并安装:

    start_udev

    等它完成了再重新重启所有网络连接。

  5. 如果没什么意外的话,现在,从母机(也就是安装了 VirtualBox 的系统)里应该可以 ping 到这个虚拟机了:
    ping 192.168.0.10
  6. 也可以试试直接通过域名 domain.com 和 www.domain.com 访问虚拟机:
    ping domain.com



(责任编辑:IT)
------分隔线----------------------------