相信各位MCT都会遇到这种场面:上课时需要指导学生使用Virtual PC做实验,而实验中需要用多个虚拟机组网才能完成。比较麻烦的是,如果学生的计算机不足以同时跑多个虚拟机,这时只能让一台PC跑一个虚拟机,然后和物理网卡桥接,组网来做实验。这下问题来了,如果学生很多,只能分组做实验,每组拷贝一套虚拟机,然后教室里面就会乱了套,什么IP地址冲突啊、主机名和SID冲突啊、DHCP相互干扰啊都来了,看着眼前黑压压的人头攒动,相信很多老师都会有晕倒的感觉。
不知道大家是怎么处理这个问题的,总之对我而言是困扰了我很久,最近总算是找出了一条完美的解决方法,特与大家分享之。
主要的解决思路是将多个虚拟的网络环境和实际的网络环境进行隔离,以达到以下目标:
1)
通过对虚拟机发出的数据包进行处理,使多部虚拟机可以运行在分割开的虚拟网络上,虚拟网络的分割使用类似VPN或者VLAN的技术。
2)
分割的虚拟网络对实际的网络通信没有影响,实际的PC仍然是连接在一起的。
3)
在虚拟网络中,能够实现虚拟机间TCP/IP各层的通信,这些通信在同一个虚拟网络内是透明的。
4)
软件可以产生一个虚拟的网络适配器,虚拟机可以选择这个网络适配器进行通信,软件和Virtual PC完全兼容。
实际上,上面提到了VLAN,使用硬件交换机划分VLAN可以完全解决这个问题,你只需要做好几个通用的配置文件,上课前将其导入交换机,OK,网络就分了好几块。在三层交换机上,只对物理网卡的IP数据包进行路由,不对虚拟机上的数据包进行路由,VLAN本身又可以隔离广播域,相信只要实验设计充分,是可以做到的。但是使用VLAN有一个问题:很多上课的场合,要么没有支持VLAN的交换机或者没有可以在VLAN间路由的三层交换机,要么根本不让你动交换机,如之奈何?
于是我想到能不能用软件实现这样的功能,实际上就是对虚拟机发出的数据包进行再一次的封装,可惜我不会编程,只有看看有没有现成的软件可以使用。虚拟VLAN的软件倒是没有找到,不过让我找到了一个VPN的软件。说实话,普通的VPN软件还真不容易实现我的目标,抱着实验一下的想法,没有想到这个免费的VPN软件——SoftEther却通过模拟以太网卡的方法,恰好解决了我的问题。
SoftEther这个软件可以模拟HUB功能,并同时使用tunnel特性,实现多个VPN的连接。它使得系统把此软件完全无碍的识别成一块网卡,然后在OSI
Level2(数据链路层)上软件模拟网络通讯,把这块虚拟网卡物理层的通讯内容重新封包到TCP
Package里去(软件模拟Ethernet);然后把自己的通讯包变成SSL Session,利用隧道进行远程连接。其实这个软件根本不是用在我这样的场合,本来是为了穿越NAT进行通信而开发的。
这就是所谓的歪打正着了!^_^
让我们来看看怎么用它:
1)首先在每台机器上都安装SoftEther,安装完毕出现配置界面时,注意虚拟网卡核心服务都必须开启,但是虚拟Hub服务只需要有一台主机开启。

2)安装完毕之后,我们会发现出现了虚拟的网络连接。

同时,我们在设备管理器中也可以发现新的网络适配器,之所以强调这一点,是因为必须要有一个虚拟的网络适配器供虚拟机软件选择。
现在,我们需要为每台机器上的虚拟网卡配置IP地址,注意最好不要和实际环境在一个子网中。
3)在开启了虚拟Hub的主机上运行虚拟Hub管理器,因为我不需要太复杂的功能,这里主要是对虚拟Hub设置一个用户名和密码,其他参数全部直接回车“pass”。这里的配置是通过基于Telnet的菜单实现的。

5)
在每台机器上运行连接管理器,创建一个新的到这个Hub的连接。


这里只需要你输入刚才在Hub上加入的用户名和密码,然后在直接TCP/IP连接的配置上输入开启了Hub服务PC的物理网卡的IP地址,如果是本机输入127.0.0.1,7777是默认的端口,端口数值可以在虚拟Hub管理器中配置。配置完毕后,接下来在连接管理器中连接到相应的Hub就OK了。

6)
好,现在准备工作完毕,我们看看在Virtual PC中的设置。
这下大家看到网络设置中的那个虚拟网卡选项了吧!
有了这个工具,以后做实验再不同担心了。不过提醒大家一下,这个软件还是在小环境下使用教佳,如果数据量大了,对于虚拟Hub负担还是比较大的,当然你可以在连接中取消使用SSL加密以降低虚拟Hub的负担。(最后悄悄的说一声这个方法对于VMWare也是有效的)
10月11日,Virtual PC 2007 Beta就要出来了,据说使用了Virtual Server 2005 R2的引擎,对Windows平台的性能好了许多,如果能够直接集成这个功能就更好了,呵呵。
希望这个帖子可以对大家有所帮助,如果有任何建议可以联系zyarthur@gmail.com。转载请著名作者和出处,谢谢大家。