早在上世纪九十年代,只有VMware工作站时,笔者就在做大量的有关虚拟机的工作。
目前笔者在帮助客户部署大范围的虚拟化项目,并指导他们使用和管理这些虚拟化架构。
在不断学习和测试各种配置的同时,笔者还建立了自己的家庭实验室,并在实验室里模拟各种环境,进行各种无法在公司里完成的实验内容,比如用非官方修改的固件刷新路由器,以获取更大的扩展性等。
最近笔者在实验室里遇到了一个有趣的虚拟化问题,拿出来与大家分享一下。由于最近常在论坛上看到有人询问关于虚拟机接入到外网的问题,所以笔者觉得这篇文章会对这些朋友有所帮助。
笔者在自己的笔记本上安装了虚拟机,用于测试和模拟。笔记本运行的是Windows7系统加IE7,虚拟机是Virtual PC 2005 R2 SP1。另外有一块外置硬盘上是Windows Server 2008和Hyper-V。
(我博客上有些朋友问我为什么不用VMware,我是打算在不久后利用一台Dell D830笔记本和外部存储设备来运行VMware。当然我还会用System Center Virtual Machine Manager 2008 R2来管理所有虚拟机。另外,我是微软虚拟机的MVP。)
子这的任务很简单,之前也做过上百次了,就是把虚拟机连接到互联网上。回顾一下:虚拟机就是只在一个文件中运行的电脑系统。对于微软的虚拟机来说,这个文件是。vhd文件。配置虚拟机,我们用另一个文件(。vmc文件)。该配置文件包含了虚拟机设置相关的全部XML代码。
配置内容包括:
内存量 硬盘类型(SCSI or IDE)和容量 启用组件,比如控制器 光驱类型(CDROM, DVDROM) 虚拟机电源开关设置 网络配置
尤其要注意的是,为了让虚拟机能连接到互联网,虚拟机必须要与主机的网卡进行通信,也就是我的Windows7系统上的网卡。
由于虚拟机实际上只是一个文件而已,因此它可以方便的模拟出一个网络并且进行通信,并不需要真正的网络硬件。换句话说,主机上的网卡和网线从来没被使用过。
虚拟机是通过模拟一种叫做Internal 的网络来实现网络传输的。如图A所示:
图A
实际上并不是只有上面两种网络,但是为了保持简单,我就不再介绍其它内容了。
使用Internal网络类型,虚拟机会认为自己是在执行网络传输任务,而实际上这和在一台电脑里把文件从一个地方拷贝到另一个地方差不多。
而在笔者的案例中,需要虚拟机真正与网卡通信,并连接到互联网上。
由于笔者要连接的是外网,所以事情就比较有趣了。
一般来说,如果是服务器,那么会内置多块网卡,只要利用其中的网卡与互联网建立连接就可以了。而在我这个案例上,我有一个以太网口连接有线网络,一个无线网卡用来连接无线网络。大部分时间我都是用无线网络的。
既然笔者用笔记本,那么设置就相对简单了。问题在于配置中的外部网络项目里。如图B所示:
图B
External Network (Intel? 82567LM Gigabit Network Connection)后面的内容由你根据自己的情况而定。外部网络可以使用计算机中的任何一块可用的网卡。如图C所示:
图C
我的一项失误就是没有修改网卡,而所选的这个网卡正在被外部网络使用。
其它的常见问题就是DHCP了。
有关网卡的配置中一般都包括了 DHCP ,或者至少有静态IP地址。如果你使用主机的网卡,并且需要DHCP,网卡获取IP信息的方式就是你虚拟机获取IP的方式。如果你只是需要静态IP,那么配置很简单。但是在企业环境里一般不会这样。
就好像普通台式机和网络设备都需要配置才能接入网络一样,虚拟机也面临着这样的问题。
Windows操作系统下的IP网络一般都默认采用DHCP,起码从Windows95开始就这样了。在虚拟机中,如果你选择从服务器获取DHCP信息,那么做法和在普通台式机上没有什么不同。
但是如果你想采用 DHCP,但是又没有DHCP服务器,这种情况下你可以选择采用虚拟DHCP服务器。如图D所示。
图D
通过配置各种 DHCP信息,我们就不在需要单独的DHCP服务器了。