手把手教你搞定虚拟机的网络设置

简介

首先,阐述一下作者的运行环境,windows7系统+virtualbox4.3.20+ubuntu-14.04.1-desktop-i386。然后,表达一下我对本地虚拟机网络的诉求:

  • 虚拟机有固定的IP地址。
  • 虚拟机可以上互联网,这个是必须的。
  • 主机可以访问虚拟机,这样可以很方便的通过ssh登陆虚拟机。

解决方案

通过给虚拟机设置两个网卡,可很好满足上述诉求!

  1. 第一块网卡:连接方式为Host-Only。这样可以为虚拟机分配一个固定的IP地址(例如:192.168.56.101等),并且可以让主机访问虚拟机(即从windows系统访问虚拟机)。
  2. 第二块网卡:连接方式为NAT。这样,虚拟机可以借助主机联外网。

详细步骤

  1. 核对主机上网络配置:

    手把手教你搞定虚拟机的网络设置_第1张图片

    记住这里的192.168.56.1

  2. 全局网络设置。打开VirtualBox,进入管理–>全局设定–>网络,如下所示:

    手把手教你搞定虚拟机的网络设置_第2张图片

    双击VirtualBox Host-Only Ethernet Adapter进入,若无,可自行创建:

    手把手教你搞定虚拟机的网络设置_第3张图片

    确保这里的IP地址与查看主机上的一致(这里均为192.168.56.1,其他通用IP地址均可)。

    下面设置DHCP服务器:

    手把手教你搞定虚拟机的网络设置_第4张图片

    这里不启用DHCP服务,确保可以为虚拟机设置固定的IP地址。

  3. 虚拟机网络设置

    手把手教你搞定虚拟机的网络设置_第5张图片

    • 网卡1:网络连接方式为仅主机Host-Only适配器,如下图所示。

      手把手教你搞定虚拟机的网络设置_第6张图片

    • 网卡2:连接方式设置为NAT,确保可以借助宿主机连接外网。

      手把手教你搞定虚拟机的网络设置_第7张图片

    下面,启动虚拟机,执行如下命令查看已开启的网卡

    $ ls /sys/class/net

    结果如下,不同的系统可能会有所不同,但只要有两个eth* 和一个lo就无妨。

    interfaces

  4. 虚拟机内部网卡文件配置,首先执行

     $ sudo vim /etc/network/interfaces

    进入网络接口配置文件,输入如下内容:

    
    # The loopback network interface
    
    auto lo
    iface lo inet loopback
    
    # eth0: Host-Only mode 
    
    auto eth0
    iface eth0 inet static
        address         192.168.56.101
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255
    
    # eth1: NAT mode
    
    auto eth1
    iface eth1 inet dhcp

    保存后退出。

    重启网络

    $ sudo /etc/init.d/networking restart

    好的,到目前为止,网络配置已搞定,下面看看效果如何吧!

测试

测试的目标无非是检验一下所配置的网络是否满足开篇所提出的三个诉求!

  1. 虚拟机拥有固定的IP地址

    手把手教你搞定虚拟机的网络设置_第8张图片

    OK,搞定!

  2. 联外网

    ping百度:

    手把手教你搞定虚拟机的网络设置_第9张图片

    也搞定!

  3. 宿主机访问虚拟机

    从上面可以发现,虚拟机有两个IP地址:192.168.56.10110.0.3.15,但是,宿主机只能访问前者。

    • ping 192.168.56.101

      手把手教你搞定虚拟机的网络设置_第10张图片

    • Git进行ssh登陆

      手把手教你搞定虚拟机的网络设置_第11张图片

    到这里全部搞定!

Reference

In VirtualBox, how do I set up host-only virtual machines that can access the Internet?

你可能感兴趣的:(linux)