场景:

    此文档是虚拟化机房中外部网络与客户机交互的最新思路。依托Linux的稳定性和网络性能,在其上搭建VMware单机虚拟环境,将Windowsxp注入其中。

具体描述:

    在虚拟机房架构中由于所有的学生机均是存于VM的虚拟环境中。最初我考虑的是让客户系统通过桥接的方式来连接外部网络。而在本文我将阐述客户系统的上网方式由桥接方式转换为NAT方式的好处。【今天上午的成果哦】

1.桥接的特点

优点:

    桥接的优点是方便外界与客户机的联系,尤其在机房中存在学生端多媒体控制软件的情况下。此种方式可以使得教师端方便控制学生端。

缺点:

    学生机中所安装的软件如:用友T3,要求其与其他的学生机的主机名与网络地址不能发生冲突。桥接的方式已经决定了,学生机IP地址的特点必须是同一个网络地址,不同主机地址,且主机名也必须不同。不仅如此,客户机的MAC地址,甚至硬件编号都需要彼此各异。

    这样以来,学生机的标准化批量生成,就变成了先网络克隆,然后在逐个设置,甚是累人。

    如果,在未来的某个时间需要安装一个新的软件,最好的方式也只能是逐个机器安装,有悖虚拟化设计的初衷。

2.NAT的特点

优点:

    NAT可以屏蔽内网的细节,内网中的合法地址可以访问外网,而在外网却看不到内网,看到的只是那个外网的地址。说优点,其实又把NAT的定义解释了一遍。

    具体到我的虚拟设计中,客户机可以设置一个固定的IP地址、固定的主机名,拥有固定的MAC地址。固定就是不再变化的意思,这里的客户机指的就是学生机的意思。

    虽然一切都相同,但学生机彼此之前也不会出现任何冲突,因为,学生机彼此都被隔离在内网里面,彼此之间见到的对方,都是包裹学生机系统的宿主系统,这个我们的宿主系统的主机名和IP是不同的。【如果你原来就明白NAT是怎么一回事,现在看了我的文字,能够懂我说的是什么,如果不明白NAT是什么,最好补补课哦。】

    这样以来,学生机可以做到一模一样,方便了以后的批量更新。

缺点:

    NAT的目的就是屏蔽内网细节。我们的客户机,即学生机需要与教师机通信,这个NAT可以方便做到,教师机要与学生机通信,就不那么容易了。如何让教师机顺利的和学生机进行通信?这个问题在本文中得到了解决。这样缺点就不复存在了。

3.端口映射-完美的NAT

    由于我的VM是搭建在Linux环境下的,所以这里仅仅阐述Linux下VM中的宿主机设置NAT上网方式的时候端口地址转换的配置过程。


  1. root@sz0850:~# cd /etc/vmware/vmnet8/nat 
  2.  
  3. root@sz0850:/etc/vmware/vmnet8/nat# vi nat.conf 
  4.  
  5. # Linux NAT configuration file 
  6. [host] 
  7. # NAT gateway address 
  8. ip = 192.168.40.2 
  9. netmask = 255.255.255.0 
  10. # VMnet device if not specified on command line 
  11. device = /dev/vmnet8 
  12. # Allow PORT/EPRT FTP commands (they need incoming TCP stream ...) 
  13. activeFTP = 1 
  14. # Allows the source to have any OUI.  Turn this one if you change the OUI 
  15. in the MAC address of your virtual machines. 
  16. allowAnyOUI = 1 
  17. [udp] 
  18. # Timeout in seconds, 0 = no timeout, default = 60; real value might 
  19. # be up to 100% longer 
  20. timeout = 60 
  21. [incomingudp] 
  22. 123 = 192.168.40.18:123 
  23. 1025 = 192.168.40.18:1025 
  24. 1900 = 192.168.40.18:1900 
  25. 137 = 192.168.40.18:137 
  26. 138 = 192.168.40.18:138 
  27. 445 = 192.168.40.18:445 
  28. 796 = 192.168.40.18:796 
  29. 1037 = 192.168.40.18:1037 
  30. 1048 = 192.168.40.18:1048 
  31. 1053 = 192.168.40.18:1053 
  32. 1434 = 192.168.40.18:1434 
  33. 1688 = 192.168.40.18:1688 
  34. 1689 = 192.168.40.18:1689 
  35. 4804 = 192.168.40.18:4804 
  36. [incomingtcp] 
  37. 25 = 192.168.40.18:25 
  38. 80 = 192.168.40.18:80 
  39. 135 = 192.168.40.18:135 
  40. 139 = 192.168.40.18:139 
  41. 443 = 192.168.40.18:443 
  42. 445 = 192.168.40.18:445 
  43. 1032 = 192.168.40.18:1032 
  44. 1044 = 192.168.40.18:1044 
  45. 4630 = 192.168.40.18:4630 
  46. 796 = 192.168.40.18:796 
  47. 1688 = 192.168.40.18:1688 
[incomingudp] 部分表示udp包的端口映射,
[incomingtcp] 部分表示tcp包的端口映射

 

4.端口的实施原则

    我的原则是可以多些端口,但必需的端口一个不能少,所以在将几个确定不需要的端口没有映射外其他所有端口均做了映射。

5.端口的获取

    这里我通过一个软件方便的获取了Windows中的端口信息。

结语:

    没有做不到的,只有想不到的。一切都在那里,只要你转身就可以发现!