VirtualBox 虚拟机网络连接之NAT

目录
[隐藏]

1、配置环境

宿主机系统:Windows 10

虚拟机系统:CentOS7.3-1611-Minimal

虚拟机软件:Virtual Box

作为一个刚接触 Linux 的小菜鸟,要想较为熟练的使用 Linux,必须得多尝试、多记录。正好博客要上线了,就以这篇文章作为博客一个开端吧。

Virtual Box 中对虚拟机网卡的设置在 设置 -> 网络 中,如下图所示:

                                 

  连接方式 一般选择这三种:网络地址转换(NAT)、桥接网卡、仅主机(Host-Only)适配器。第一次装虚拟机,按照网上的教程直接设置 网卡1 连接方式 为 网络地址转换(NAT) 就完了。但并不了解为什么,所以在后面使用虚拟机过程中遇到不少问题,所以特意对不同这三种方式进行了实验,记录在这里,方便以后查阅,也希望能帮到又需要的朋友。

2、网络地址转换(NAT)

   该模式是最简单的一种模式,计算机网络中也学过,就是将许多 内网IP地址 通过算法转换成一个可访问外网的外网IP,从而达到节约网络地址资源的目的。但这是单向,内网IP 可以访问 外网,外网是访问不到内网IP的。

2.1 虚拟机连接外网

   网上教程大都是说配置了这个模式,进入虚拟机系统就可以直接访问外网了。但其实不然,下面慢慢说。

   在安装系统时,会看到一个 “网络与主机名” 的选项,进去点击开启,如下图所示:

                                   

 在这一步,其实系统就已经为我们创建了一个名为 enp0s3 (CentOS7 开始命名方式改了,不同机可能不同)的以太网网卡,并且配置好了 IP 地址、默认路由(网关)等。因为当时宿主机是连上以太网的,所以这里的 DNS 就是 ISP 提供的那个DNS。进入系统后。立即执行"ip addr" 命令,查看当前网卡信息,会如下图。

  

能看到一个名为 "lo" 的环回网卡和一个名为 “enp0s3”的网卡信息 ,这个 “enp0s3”就是上图中创建的网卡,这里也能看到该网卡此时的ip地址为 10.0.2.15(因为宿主机是联网的),如果宿主机没联网,那看到应该是下面这样的:

  

同样是两张网卡,但“enp0s3”没有ip地址的信息了。接着已经联网的来,没联网的情况后面再提。宿主机已经联网了,虚拟机网卡也分配了 ip地址啦,赶紧 ping 一下外网,看能不能访问,如下图:

    

并没有 ping 通外网。为什么呢?因为CentOS7 默认是不启动网卡的,必须手动启动网卡。要启动网卡,这里就涉及到系统的配置文件了,CentOS7 中网卡的配置文件在 "/etc/sysconfig/network-scripts" 这个目录下,我们切到这个目录看一下内容:

    

我们只关注 ifcfg-enp0s3 和 ifcfg-lo 这两个文件,因为这两个文件就是前面提到的两张网卡对应的配置文件了!从名字也能看得出来,“ifcfg-网卡名字” 这样的格式。用 vim 打开 enp0s3 看下内容:

                           

内容格式还是比较简单的,能看懂。重点关注 BOOTPROTO="dhcp",ONBOOT="no" 这两个,前者表示IP地址由 dhcp 动态分配,后面 ONBOOT 表示是否启动该网卡,no 表示未启动,这是CentOS7 的默认值,修改为 ONBOOTY="yes" 保存退出,然后执行"systemctl restart network.service" 重启网络服务。如果什么都没发生那就是重启好了(毕竟Linux中最好的事就是什么都不发生了)。再次尝试ping一下外网

                  

很明显已经可以 ping 通了。这个系统 ping 接收包,不像 Windows 4次后自动停止了。所以数据显示了几个后可以用 ctrl+c 或 ctrl+z 停止掉,不然就会一直接收下去。

   到这里就完成了 网络转换模式(NAT) 下虚拟机对外网的访问了,首先宿主机得连上以太网。

2.2 宿主机与虚拟机互ping

   首先查看一下宿主机的ip地址,虚拟机的ip地址前面已经看到了,我这里是 10.0.2.15 。然后互相ping吧。虚拟机 ping 宿主机如下图

                        

显然 ping 通了,很棒。然后宿主机 ping 虚拟机

                        

BOOM,失败了。不要想着怎么解决了,这个模式下宿主机是 ping 不通虚拟机的。下面说下原因。

3、网络地址转换(NAT) 原理

    网络地址转换(NAT)模式,就是让虚拟机通过NAT功能,通过宿主机所在的网络来访问外网,NAT模式下虚拟机的TCP/IP配置信息都是由虚拟网络的DHCP服务器自动分配的,而网关、DNS这些是和宿主机一致的。再回顾一下互ping的情况

    宿主机IP: 172.16.196.58, 子网掩码: 255.255.255.0

    虚拟机IP: 10.0.2.15,         子网掩码: 255.255.255.0

  显然两台机子是不在同一个网段的,那应该是互相ping不通啊。按理说应该互相ping不通,但NAT的网络连接模式就是虚拟机通过宿主机的网络来访问外网,所以虚拟机肯定得知道宿主机的ip了,所以虚拟机可以ping通宿主机,但反过来,宿主机是不清楚到达 10.0.2.15 地址要经过哪些路由,所以 宿主机ping不通虚拟机。

4、总结

   网络地址转换(NAT) 这种连接方式,很适合只要求虚拟机联网的情况,因为不需要手动配置IP、网关、DNS这些,只要确保ONBOOT="yes",BOOTPROTO="dhcp",就能上网了。但也正因为自动配置,所以无法通过手动配置让虚拟机和宿主机处于同一网段,从而实现互ping。那如何实现互ping呢?肯定要换连接方式了,下篇文章继续。

   要分享一篇好的记录,确实需要蛮多精力的,但记录的过程也是学习的过程,也便于自己日后查阅,也希望能帮到又需要的朋友。以后会坚持写博客的,坚持记录,坚持分享。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To