Synix / 虚拟机 / Vmware使用指南

0 0

   

Vmware使用指南

2009-03-16  Synix

运用VMware虚拟机分析恶意软件

2007-08-19 17:42

作者:茫然的风 编译 

作为网管员,恶意软件分析可能并不是我们的最主要工作。不过,如果一个恶意软件影响了你的桌面应用程序的使用,你也许会考虑一下这种不熟悉的恶意代码的性质。一般来说,从行为分析入手开始你的调查工作,也就是观察恶意软件怎样影响文件系统、注册表及网络,可以很快地就产生极有价值的结果。一些虚拟化软件,如VMware在这个分析过程中具有很大的帮助作用。 

VMWare是一个“虚拟PC”软件.它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。不过今天我们要讨论的是如何运用VMware分析恶意软件的问题。 

用VMware分析恶意软件的益处 

VMware支持同时运行在一个物理系统上的多个计算机的仿真。与一个使用完全不同的物理结构部件的实验环境相比,这种方法用于恶意软件的行为分析有多种好处: 

在分析实验室中,拥有几个系统通常是有益的,因而恶意软件只会与模拟的Internet部件交互。通过VMware,就可以构建一个多部件的试验室,而不用承担多个物理系统的臃肿之苦。 

在感染恶意软件之前,能够捕捉系统状态的快照;而且通过定期的快照分析可以节省时间。这项功能可以提供一种几乎瞬间就恢复到目标系统的简单方式。VMware通过其集成的快照特性使这种恢复相当容易。VMware Workstation作为一种商业产品,允许生成多个快照。VMware Server是一种免费软件,只支持单一快照。VMware Player也是一个免费的软件,不能捕捉系统快照。 

VMware的host-only网络选项对于通过仿真网络连接虚拟系统极其方便,而不需增加额外的硬件。这项设置使得分析人员对将实验室环境连接到生产网络不会太感兴趣。在用混杂模式(promiscuous mode) 监听时,Host-only网络允许虚拟系统在模拟的网络上查看所有的数据通信。这使得对监视网络的交互性变得很容易。 

开始运用VMware分析恶意软件 

准备一个基于VMware的分析实验室是相当简单的事情。你需要一个拥有一个大容量内存及磁盘空间的系统,用以充当一个物理主机。你还需要必需的软件:VMware Workstation 或 Server,以及要部署在实验室的操作系统的安装媒体。 

VMware模仿计算机硬件,因此你必须将操作系统安装到每一个虚拟机之中,这些虚拟机是用VMware的新虚拟机向导(Virtual Machine Wizard)创建。操作系统安装好后,再安装VMware 工具包(VMware Tools package),这样会优化VMware的操作。然后,安装适当的恶意软件分析软件。 

笔者推荐实验环境拥有几种不同的操作系统的虚拟主机,每一个操作系统代表恶意软件可能攻击的目标。这就便于我们在本地环境中观察恶意程序。如果使用VMware Workstation,你应该在安全更新安装过程中,在不同的时点上捕获虚拟系统的快照,从而可以在不同补丁级别上分析恶意软件。 

保障生产系统的安全 

在对付恶意软件时,必须采取预防措施不要让生产系统网络受到感染。如果不进行地正确的处理或恶意程序样本滥用了VMware安装程序中的一个漏洞,这种感染和破坏就会发生。在VMware中已经有几个众所周知的漏洞,这些漏洞从理论上讲,可允许恶意代码从虚拟系统找到通向物理主机的方法。感兴趣的读者可从此获得相关的文档资料(http://taviso.decsystem.org/virtsec.pdf)。 

为了减轻这些风险,笔者建议如下的方法: 

跟上VMware安全补丁的步伐,经常浏览其网站,下载其最新的补丁。 

将某物理主机用于基于VMware的试验环境,就不要将它用于其它目的。 

不要将物理试验系统连接到生产性网络。 

用基于主机的入侵检测软件监视物理主机,如一个文件集成检查器。 

用克隆软件定期重镜象物理主机,如Norton Ghots。如果这样做速度太慢,可以考虑使用硬件模块,如Core Restore,用于撤消对系统状态的改变。 

使用VMware进行恶意软件分析的一个挑战就是恶意代码可能会检测到它是否运行在一个虚拟系统之内,这会向恶意软件指明它正在被分析。如果你不能修改其代码来删除这项功能,你可以重新配置VMware来使它更加秘密地运行,可参考如下文档(http://handlers.sans.org/tliston/ThwartingVMDetection_Liston_Skoudis.pdf)对VM的.vmx文件进行设置。这些设置的最大问题是它们可能会降低虚拟系统的性能,此外还要注意这些设置并不被VMware支持。 

虚拟化选择和策略 

当然,VMware并非可用于恶意软件分析的唯一虚拟化软件。常用的选择还包括微软的Virtual PC和Parallels Workstation。 

虚拟化软件为构建一个恶意软件分析环境提供了一个方便省时的机制。不过,一定要为防止恶意软件逃离你的测试环境而建立必需的控制。借助一个配置良好的试验环境,我们就可以充分利用恶意软件的分析技巧。 

参考文章: 
Lenny Zeltser《Using VMware for malware analysis》 

虚拟机的网络设置(原理篇)


     在正式开始之前,我想有必要先来学习一些必要的网络知识。否则,在不懂得任何原理的情况下依葫芦画瓢虽然可解一时之需要,但遇到具体情况改变的情况下就只能干瞪眼了。由于篇幅限制,这里只讲和VMware设置有关的一点简单网络知识。
1,什么是网络?
     Internet是指“互连网”,好象这句话说的有点多余,不过确实有很多人对他有错误的理解,“互连网”是指一个个网络互连,而不是像有些人想象的那样把一台台电脑杂乱无章的互连。当我们需要用电脑和远方的电脑通讯的时候,先把本地电脑组成一个网络,当然,远方的电脑也要组成一个网络,在把这两个网络“互连”起来,组成“互连网”。用电话线和MODEM拨号上网的时候是通过电话线先把自己的电脑连到ISP(Internet Service Provider 网络服务提供商)的网络中,再经过ISP的网络和世界各地的电脑通信。
2,电脑如何通过网络传递数据?
     每一个网络需要一个网络地址,网络中的电脑需要一个在网络中唯一确定的标识,网络号和电脑的标识号组成了IP地址,所以IP地址是由网络号和主机号组成的。当你的电脑要和其他的电脑通信的时候,电脑会先根据IP地址和子网掩码确定目标主机是在本地网络中还是在远程网络中,如果在本地网络中则直接把一个包含信息的IP数据包发送到本地网络上,目标主机会检测到并接收,如果目标主机在远程网络则需要通过一台被称为网关的的电脑转发到远程网络,网关(geteway)可以看做是连接网络和网络的桥梁,网关的概念很广,这里为了简化起见,我们暂且认为它和路由器是同一个概念。路由器(router)是一种连接网络和网络,并选择IP数据包传送的路径的一台特殊计算机。很多情况下网关的概念等同于路由器。
3,网络中电脑的IP地址有何要求?
     在同一个网络中,每台电脑必须具有相同的网络号,这样电脑才认为目标主机是在本网络中并且可以正确送达,如果网络号不同,即使目标主机已经用网线连到本网络中数据也不能直接送达,即使这两台电脑近在咫尺,在电脑看来仍旧是一台远程电脑.比如一个网络的网络号为192.168.0,则该网络中的计算机的IP地址必须以192.168.0开头。假如要传送一个数据包到网络号为192.168.1的网络,则必须通过路由器转发,如果该网络中没有路由器,则发送失败。因此,为了连接两个网络,一台路又器至少要有两个网络接口(网卡、调制解调器等联网设备称为网络接口)。网络和路由器的关系见下图:


---------------            --------------            --------------
|   网络A     |            |   路由器     |          |   网络B    |
|                |            |                  |          |                |
|           --|--------- |--      --|--------|--         |
|          1    |            |   2        3    |          |   4          |
---------------            --------------           --------------

           图 一
图中的小方框表示网卡或其他网络接口。
可以看到路由器至少有两个网络接口。
假设网络A的地址为192.168.0 网卡1的地址为192.168.0.1
     网络B的地址为192.168.1 网卡4的地址为192.168.1.1
则路由器上的网卡2必须属于网络 192.168.0 地址为192.168.0.x (x为任意小于255的数)
   路由器上的网卡3必须属于网络 192.168.1 地址为192.168.1.x (x为任意小于255的数)
就是说,路由器既属于网络A,又属于网络B,这样才起到桥梁的作用。
当数据从网络A发往网络B时,路由器从网卡2接收数据,经过改装后通过网卡3发送数据到网络B。
这样,我们称网卡2的地址 192.168.0.x为网络A的网关
             网卡3的地址 192.168.1.x为网络B的网关

4,VMware虚拟机提供了那些虚拟网络设备?
    
     默认安装的情况下VMware提供了虚拟网卡vmnet1和vmnet8,还有在虚拟系统上的虚拟网卡 "AMD   PCNET Family PCI Ethernet Adapter"
     请注意,vmnet1和vmnet8是主系统上虚拟设备,用ifconfig命令可以看到,而"AMD   PCNET Family PCI Ethernet Adapter"是虚拟系统上的虚拟设备,在安装完虚拟系统后可以在设备管理器中看到,前两个隶属于真实系统,是你的真实电脑中的设备,后一个隶属于虚拟系统,是虚拟电脑中的设备,不要搞混淆。
---------------            --------------           --------------
|   网络A      |            |   路由器   |          |   网络B    |
|                |            |                |          |                |
|           --|----------|--    --|--------|--           |
|          1   |            |   2      3    |           |   4           |
---------------            --------------           --------------

   ----------------            -------------------------       --------------         
|    虚拟系统    |           |   主系统(路由器)    |      | 真实网络   |
|                     |           |                               |      |                |        
|                --|---------|--     <--->-----|------|--           |
|AMD PCNET卡          |vmnet1 vmnet8 真实网卡 |   4            |   
    ----------------            -------------------------       --------------   
                              图 二
让我们来和上面的网络和路由器的关系做一个比对。
可以看到要想虚拟系统和主系统通信必须使AMD PCNET 网卡和vmnet1组成一个网络。
而vmnet1本来就在主系统中,系统可以直接访问,所以主系统又充当了路由器的功能,只要有这两个虚拟设备主系统和虚拟系统就可以通讯。

关键在于三点:
1.确定网卡AMD PCNET和vmnet1的网络号相同。
2.在虚拟系统里设置网络属性,把网关地址设为vmnet1的地址。
3.开启主系统的路由功能,使它成为一台路由器。
     事实上,如果你只需要虚拟系统和主系统通信,而不需要和主系统所在的真实网络上的其他主机通信的话只要满足第一点就可以了。因为满足第一点,主系统和虚拟系统就在同一网络中了,不需要路由器便可通信。但是大多数情况下我们需要虚拟系统和主系统所在的真实网络通信,这就需要满足其他两点了。

虚拟机的网络设置(实施篇)


1,   我们先来让虚拟系统和主系统联系上。
      在VMware安装的时候安装程序会自动给vmnet1分配一个IP地址,下面是笔者电脑上例子:
vmnet1     Link encap:Ethernet   HWaddr 00:50:56:C0:00:01  
           inet addr:192.168.221.1   Bcast:192.168.221.255   Mask:255.255.255.0
           UP BROADCAST RUNNING MULTICAST   MTU:1500   Metric:1
           RX packets:191 errors:0 dropped:0 overruns:0 frame:0
           TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:100 
           RX bytes:0 (0.0 b)   TX bytes:0 (0.0 b)
     在第二行可以看到安装程序给vmnet1分配的IP地址为192.168.221.1(注意每次安装VMware IP地址是随机分配的,实际的情况与这里的例子会不同)。即虚拟网卡vmnet1属于网络192.168.221。因此我们需要启动虚拟系统,设置网络属性,把虚拟系统的网卡"AMD   PCNET Family PCI Ethernet Adapter"的IP地址设置为192.168.221.x (x为除1以外2~254之间的任意数字笔者把它设置为2),把网关设置为vmnet1的地址:192.168.221.1(如果不和外界真实网络通信的话网关可以不设)

windows 2000和XP 设置后立即生效,win98需要重新启动,linux需要重新启动网络服务:
#service network restart

在主系统上ping一下虚拟系统:
#ping -c 3 192.168.221.2 

PING 192.168.221.2 (192.168.221.2) from 192.168.221.1 : 56(84) bytes of data.
64 bytes from 192.168.221.2: icmp_seq=1 ttl=128 time=6.91 ms
64 bytes from 192.168.221.2: icmp_seq=2 ttl=128 time=0.425 ms
64 bytes from 192.168.221.2: icmp_seq=3 ttl=128 time=0.527 ms

--- 192.168.221.2 ping statistics ---
3 packets transmitted, 3 received, 0% loss, time 2001ms
rtt min/avg/max/mdev = 0.425/2.623/6.917/3.036 ms

yeah!通了!

再在虚拟系统上ping主系统:

C:\>ping 192.168.221.1

Pinging 192.168.221.1 with 32 bytes of data:

Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64
Reply from 192.168.221.1: bytes=32 time<10ms TTL=64

Ping statistics for 192.168.221.1:
     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
     Minimum = 0ms, Maximum =   0ms, Average =   0ms

yeah!又通了!主系统和虚拟系统顺利联系上啦!

2, 让虚拟系统和主系统所在的真实网络通信

     首先在你的电脑上需要有一块与真实网络相连真实的网卡(如图二所示)。vmnet8就在与真实网络通讯的时候起作用了,vmnet8会和真实网卡对应起来,虚拟系统要发送数据包到真实网络中的时候,真实系统是一台路由器,首先数据发到虚拟网卡vmnet1,然后经过路由器(这里就是主系统linux)发到vmnet8,由于vmnet8和真实网卡是对应起来的,这一机制是有vmware完成的,所以发到vmnet8上的网卡就等于传送到了真实网卡上,然后数据包再通过真实网卡发送到真实网络,整个过程请看图二。如果你的系统上有两块以上的真实网卡,在安装的时候安装程序会询问把虚拟网卡对应到哪个真实网卡上。可以根据实际情况选择。

     把vmnet8的IP地址设置为和真实网卡在同一网络的地址,假设真实网络的网络号为192.168.0,真实网卡的IP地址为192.168.0.1则可设置vmnet8的IP地址为192.168.0.2
在linux中方法如下:

#ifconfig vmnet8 down
#ifconfig vmnet8 192.168.0.2 up


回顾一下上面讲的三个条件:
--------------------------------------------------------------
关键在于三点:
1.确定网卡AMD PCNET和vmnet1的网络号相同。
2.在虚拟系统里设置网络属性,把网关地址设为vmnet1的地址。
3.开启主系统的路由功能,使它成为一台路由器。
--------------------------------------------------------------

     前两点我们已经在第一部分中做好了,现在只要开启了linux的路由功能虚拟系统就可以和外界通讯了。
linux是一个天生的网络操作系统,他在网络方面的强大功能使得它在网络服务器领域有广泛的应用。用linux来做路由器甚至不需要额外的软件,linux的内核直接支持静态路由的功能。我们要做的只是把路由功能打开就可以了。

可以先看看路由表:
#route
确定所有网卡的IP地址或网络地址都在Destination一栏里,如下图:
-------------------------------------------------------------------------------
Kernel IP routing table
Destination      Gateway          Genmask          Flags Metric Ref     Use Iface
192.168.0.0      *                255.255.255.0    U      0       0         0 eth1
192.168.0.0      *                255.255.255.0    U      0       0         0 eth1
192.168.0.0      *                255.255.255.0    U      0       0         0 vmnet8
192.168.221.0    *                255.255.255.0    U      0       0         0 vmnet1
127.0.0.0        *                255.0.0.0        U      0       0         0 lo
default         www.gucuiwen.co 0.0.0.0          UG     0       0         0 eth0
-------------------------------------------------------------------------------

默认情况下启动网络设备的时候系统会把该设备的IP地址添加到路由表中,如果没有的话可以重新启动一下网络服务:

#service network restart


再来开启路由功能:

# echo 1 > /proc/sys/net/ipv4/ip_forward

     至此,linux的路由功能已经打开,你的linux系统已经成了一台路由器,连接着虚拟的网络和真实网络。虚拟网络和真实网络间就可以通信了。出于安全考虑,如果有必要的话还需要用iptables命令来设置一下路由规则。


五、Windows下的虚拟机网络设置。

     在Windows下的虚拟机的网络设置大致和linux下的相同,只不过需要安装额外的路由软件,在Windows平台上有很多这样的软件可以用,比如 SysGate WinGate等,如果用的是Windows 2000 Server 或者是Windows NT Server 的话可以用系统自带的“路由和远程访问”软件。具体的设置就不祥述了,相信只要懂了其中的原理就不难找到合适的解决方案了。如果你的电脑硬件足够的好,有1G以上的内存和2G以上的CPU的话,那你也可以同时运行几台虚拟机,把这几台虚拟机组成一个网络,这样在一台电脑上就可以有一个功能强大的网络实验平台了。


                         Vmware(虚拟机工作站)网络配置


vmware通过虚拟网络组件把虚拟机器同真实的物理网络连接起来。
虚拟网络组件主要有如下几种:

交换机:跟真实的交换机一样,它允许把多个网络组件连接起来,在vmware软件安装时根据需要自动安装,最多允许挂接9个交换机,名称分别为VMnet0-8。其中有3个已经默认分配给网桥(VMnet0),宿主机虚拟网络适配器(VMnet1)和网络地址转换NAT设备(VMnet8)。

通过在虚拟机的“Editing this machine settings”的网络适配器条目,可以把虚拟机器连接到未被分配的交换机。

网桥:网桥把虚拟机器连接到你的宿主机所在的局域网LAN上。其实现的方式就是把虚拟机器上的虚拟适配器连接到你的宿主机上的物理网络适配器上。创建虚拟机的向导中如果选择了“typical”或者“Using bridged networking”的网络连接方式,那么网桥会自动生成。

上面图中给出了网桥连接方式下虚拟机网络适配器与宿主机物理适配器之间的关系。这是让虚拟机访问宿主机所在网络的最容易的一种方式。这种情况下虚拟机需要自己独立的标识,比如TCP/IP网络中就需要自己的IP地址,这个IP地址从网络管理员处获得,还有其它的一些网络细节都需要手工设置。网桥方式下虚拟机跟宿主机一样是本地网络中的一个独立体,如同一个物理的机器一样。如果在vmware中同时运行多个虚拟机,那么每个虚拟机都应该有一个独立的IP地址。

宿主机上的虚拟适配器:就是出现在宿主机上的供vmware工作站使用的一个虚拟的网络适配器。允许虚拟机与宿主机通信,但是这个虚拟适配器不会连接到任何外部的网络,只有在宿主机上建立起特殊的软件诸如代理服务器才能把虚拟适配器和物理适配器连接起来。实际上虚拟机只和宿主机进行网络连接,这种方式也称为host-only。

在创建虚拟机的向导中选择了自定义网络设置,并且选择了“Use Host-only networking”,那么这种网络连接方式就会被自动建立起来。此时,宿主机操作系统可以看到有一个虚拟的网络适配器。宿主机与虚拟机可以通信。很适合建立一个与外部网络隔绝的独立私有TCP/IP网络。虚拟机的IP地址由虚拟的DHCP服务器提供。这种连接方式结合Windows2000/XP/2003上的网络共享的特性,就可以允许虚拟机连接到外部Internet。

网络地址转换设备:如果宿主机只有一个IP地址可用于外部物理网络的连接,那么使用NAT可以把虚拟机连接到外部网络。

如果在创建虚拟机的向导中选择自定义网络设置,并选择“Use network address translation”,那么这样的连接就会被创建。如果宿主机所在网络不能给该虚拟机一个IP地址,那么NAT就是最容易的一种让虚拟机访问宿主机网络的方式。由于虚拟机没有外部物理网络的IP地址,因此vmware在宿主机上建立一个独立的私有网络,通过虚拟的DHCP服务器获得ip地址。NAT能够把多个虚拟机的网络数据加以区分并在虚拟机与外部物理网络之间进行传送。NAT方式下许多标准的TCP/IP协议都可以在虚拟机上使用,比如HTTP/FTP/TELET等。但是默认情况下外部网络上的计算机不能连接到虚拟机上,因此虚拟机不能提供诸如WEB浏览这样的服务。

DHCP服务器:为虚拟机提供一个IP地址,只适用于NAT和host-only(指虚拟机只和宿主机进行网络连接)。

网络适配器:当用向导生成一个虚拟机时,为虚拟机建立一个虚拟网络适配器。在虚拟机的操作系统中,可以看到一个名称为AMD PCNET PCI适配器。在vmware的适配器设置中,可以建立最多3个虚拟网络适配器。


                                配置虚拟机上网


     一般主机上网有两种方式,一是本机在局域网环境中,多台计算机通过交换机访问Internet,则交换机是拨号主机而不是本机,那么主机(交换机)就有一个IP地址,这种情况类似办公室的电脑。另外一种方式是本机直接拨号上网,如家庭电脑。根据本机不同的上网方式,其虚拟的计算机上网设置方法也有所区别,我们分开来介绍。

  一、局域网环境

  局域网环境下设置虚拟机上网其实非常简单,例如笔者的Windows XP系统计算机在局域网内分配的IP地址是192.168.0.2,而局域网环境下交换机的主机IP地址是192.168.0.1,那么VMware虚拟的Windows 2000系统可以把它看作是局域网内的一台计算机,给它分配一个IP地址为192.168.0.4即可。

  设置过程:

  首先在VMware程序的“虚拟机”菜单下打开“设置”命令窗口,然后在硬件设置中选择“以太网”设置一下虚拟机使用的网卡,这里选择“自定义VMnet0默认桥接”即可。

  接下来在虚拟机Windows 2000系统中设置网络连接属性,在Windows 2000系统桌面上选中“网上邻居”点击右键打开“属性”窗口,然后选择“本地连接”点击右键打开其属性窗口,选中“Internet协议(TCP/IP)”点击属性按钮,设置虚拟机的IP地址,如我们上面为它分配了虚拟机在局域网的地址为“192.168.0.4”,默认网关输入局域网主机的IP地址,首选DNS服务器指定为局域网主机的IP地址(图1)。设置好后确定。 

  打开虚拟机Windows 2000的IE浏览器,输入一个网址访问检测是否能正常访问Internet了。

  二、本机拨号上网

  如果用本机拨号上网,那么与局域网环境就不同了,本机没有一个IP地址,虚拟机该如何设置自己的IP上网呢?VMware虚拟运行环境有一个虚拟网络(虚拟局域网)的功能,在VMware中配置一下虚拟网络的主机IP,虚拟机(即Windows 2000系统)就可以利用虚拟网络主机的网关访问Internet了。

  设置过程:

  首先在VMware程序“编辑”菜单下选择“虚拟网络设置”命令,然后虚拟网络编辑器窗口的“摘要”选项卡下看到VMware能够模拟的网络类型,其中有“虚拟网络8”。

  下面要添加一个虚拟网络的网卡硬件,在“主机虚拟适配器”选项卡下添加名为“VMnet8”的虚拟网络,点击“添加”按钮,选择VMnet8添加。

  接着在“NAT”选项卡下查看虚拟的主机“VMnet8”的网关IP地址,VMware默认设置的网关IP地址是192.168.59.2,我们也可以自己修改它。

  同样我们要在“虚拟机设置”中定义一下“以太网”的硬件设备,这里选择网络连接的方式是“自定义VMnet8(NAT)”。 

  最后在虚拟机的“Internet协议(TCP/IP)”中设置当前环境下的虚拟计算机IP、网关、子网掩码,如分配这台虚拟机的IP为192.168.59.3,网关是上一步在“NAT”中设定的网关IP,然后单击“确定”按钮完成设置。

  现在打开虚拟机的IE浏览器,输入网址便可在虚拟机中访问Internet,享受冲浪的乐趣了


                            vmware,qemu各种方式上网设置


vmware三种网络连接,qemu两种网络连接实现 虚拟机<--->主机 虚拟机<--->互联网通信的方法。
  
  顺便写了下如何不重新编译整个内核支持某个功能,对系统无影响,编译速度要快于编译整个内核。
  
  如果你的XXX卡没被内核支持,又怕自己编译的内核会造成系统损坏就可以试试这个方法喽 ^_^
  
  vmware三种网络连接上网设置:
  
  1.bridge :
  
  默认使用vmnet0
  
  将虚拟机的ip设置与主机同网段未使用ip,其余与主机相同:
  
  例如主机ip是10.70.54.31,设置虚拟机ip为10.70.54.22。netmask,broadcast,gateway,dns都与主机相同即可实现虚拟机<--->主机 虚拟机<---->互联网 通信。
  
  2.nat :
  
  默认使用vmnet8
  
  将虚拟机设置成使用dhcp方式上网,windows下选择"自动获取ip",linux下开启dhcp服务即可
  
  也可以手动设置:
  
  ip设置与vmnet8同网段,gateway设置成vmnet8的gateway(/etc/vmware/vmnet8/nat/nat.conf)中可以查到vmnet8的gateway,通常是xxx.xxx.xxx.2。
  
  netmask,broadcast设置与vmnet8相同,dns设置与主机相同。
  
  例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2
  
  虚拟机设置: ip :172.16.249.100 gw: 172.16.249.2
  
  3.host-only :
  
  默认使用vmnet1
  
  将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同
  
  例如 vmnet1 ip :172.16.245.1
  
  虚拟机设置: ip :172.16.245.100 gateway :172.16.245.1
  
  这样就实现了虚拟机<--->主机 通信,但是 虚拟机<--->互联网 仍无法通信
  
  虚拟机与互联网通信:
  
  1.开启主机路由功能
  
  2.设定iptables,使主机成为一台nat server
  
  1. echo 1 >/proc/sys/net/ipv4/ip_forward 这样就主机就具有了路由功能
  
  2. iptables -t nat -A POSTROUTING -o eth0 -s 172.16.245.0/24 -j MASQUERADE
  
  这条规则意思是将来自172.16.245.0/24封包的来源ip伪装成eth0的ip,实现虚拟机与互联网通信
  
  如果网络接口是ppp+或pppoe则需要修改成-o pppoe
  
  当然-s 172.16.245.0/24 也要根据实际情况修改
  
  qemu两种上网方式:
  
  user mode network :
  
  这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。
  
  tap/tun network :
  
  这种方式要比user mode复杂一些,但是设置好后 虚拟机<-->互联网 虚拟机<-->主机 通信都很容易
  
  这种方式设置上类似vmware的host-only,qemu使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.
  
  首先内核中支持tap/tuns设备:
  
  Device Drivers --->
  Networking support --->
  [M] Universal TUN/TAP device driver support
  
  如果当前内核没有支持,可以重新只编译相应模块加入,方法很简单:
  
  将当前内核配置文件cp到内核源码目录下:
  
  [root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux
  [root@LFS ~]#cd /usr/src/linux
  
  配置内核,将TUN/TAP选择模块(M),如上所示:
  
  [root@LFS ~]#make menuconfig
  
  重新只编译模块(M),不编译核心(*)支持的东东:
  
  [root@LFS ~]#make modules
  
  编译好后在/usr/src/linux/drivers/net下可以找到tun.ko:
  
  [root@LFS net]#ls -l /usr/src/linux/drivers/net/tun.ko
  -rw-r--r-- 1 root root 11116 Mar 23 20:29 /usr/src/linux/drivers/net/tun.ko
  [root@LFS net]#
  
  将它cp到当前内核的模块目录的相应位置:
  
  [root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
  
  重新建立模块依赖关系:
  
  [root@LFS net]#depmod
  
  现在就可以加载它了 :
  
  [root@LFS net]#modprobe tun
  
  检查一下:
  
  [root@LFS net]#lsmod |grep tun
  tun 8704 0
  [root@LFS net]#
  
  OK. 成功不重新编译整个内核加入特殊模块支持
  
  如果你的xx卡不被内核支持,又可以编译成模块,自己怕重新编译内核后出问题就可以用这个办法只编译自己需要的模块,然后手动安装到相应位置,再加载它。
  
  这样编译速度要也比编译整个内核快,不会对系统有任何损害,就可以使用上XX卡喽。^_^
  
  要注意三点:
  
  1.内核源码必须与当前内核版本完全一致,否则编译出的模块是不能用的。
  
  2.注意只make modules(编译模块),没有make modules_install(自动安装模块到/lib/modules下)
  
  3.加载新编译的模块前必须先运行depmod,否则modprobe找不到它
  
  其实使用当前内核配置文件(/boot/config-[kernel-version]),只加入自己需要的模块,不做任何其他改,make modules_install应该也不会有问题的。
  
  不过最稳妥的办法还是手动安装它,控制权在自己手里更踏实嘛 :-)
  
  OK,转回qemu上网问题
  
  如果使用udev管理设备(通常2.6.x内核的发行版都已经使用udev),当modprobe tun后就会自动建立/dev/net目录,并创建出tun设备,做好相关链接:
  
  [root@LFS net]#ls -l /dev/net/tun
  lrwxrwxrwx 1 root root 6 Mar 25 15:35 /dev/net/tun -> ../tun
  [root@LFS net]#
  
  如果很不幸,你没看到它,就需要自己手动做这些工作了
  
  [root@LFS ~]#mkdir /dev/net
  [root@LFS ~]#mknod /dev/net/tun c 10 200
  
  OK,相关设备已经准备好了,还需要一个tun/tap的初始化脚本 :
  
  /etc/qemu-ifup :
  #!/bin/sh
  /sbin/ifconfig $1 172.20.0.1
  
  再给予qemu-ifup x执行权限放在/etc下就可以了。
  
  这个脚本只能root用户执行,如果需要普通用户使用qemu,就需要改成sudo /sbin/ifconfig .....再设置sudo相关权限。
  
  启动qemu后,它会在主机上增加一块虚拟网络设备(tun0):
  
  [root@LFS ~]#ifconfig tun0
  tun0 Link encap:Ethernet HWaddr 0A3:8A:5D:97:CD
  inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
  UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:500
  RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
  [root@LFS ~]#
  
  现在就可以启动qemu配置虚拟机网络参数了,和vmware host-only一样:
  
  ip与tun0相同网段,gateway为tun0 ip 其余参数与tun0相同,dns与主机相同:
  
  tun0 : ip :172.20.0.1 broadcast:172.20.255.255 netmask :255.255.0.0
  qemu : ip :172.20.0.100 broadcast:172.20.255.255 netmask :255.255.0.0 gateway:172.20.0.1
  
  与host-only一样,这样只实现了虚拟机<---->主机间通信,还需要设置router,nat才可以连上互联网
  
  [root@LFS ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
  [root@LFS ~]#iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE
  [root@LFS ~]#
  
  OK,虚拟机<--->主机 虚拟机<---->互联网通信 都完成啦

VMware

2007-06-18 06:29

首先发几个软件下载地址 
[VMware下载] 这个就不说了,fans上就有 
序列号S/n:8UX0R-686FT-Z054V-4PDQP(有可能要调整时间的) 
[redhat linux9 高速下载] http://www.linuxiso.org/distro.php?distro=7(国外的镜相可以达到120kYE!!) 
好言归正传: 

1、 VMware是什么? 

从某种意义上说,一台物理计算可以做什么,VMware Workstation 的虚拟机就可以做什么。从理论上讲,VMware 可以做的事情只受到硬件和想象力的限制。它支持的客户操作系统涵盖绝大多数主流操作系统,包括 Microsoft 全系列的操作系统以及大多数版本的 Linux。由于虚拟机运行时使用同一个虚拟 BIOS 以及一系列统一的虚拟硬件,在一定程度上实现了虚拟机的硬件无关性,并且客户操作系统中的所有内容在主机上以文件形式存在,所以又具有可携带性和可迁移性。最值得关注的是 VMware 强大的网络功能,你可以在一台计算机上建立一个局域网,这个网络的行为与真实的网络完全一致,而且你不用担心虚拟网卡和虚拟交换机会损坏,这样你就可以抛开真实网络中各种琐碎的硬件冲突的可能性,潜下心来通过虚拟网络研究物理网络的核心逻辑。 
VMWare支持如下Guest OS: 
MS-DOS、Win3.1、Win9x/Me、WinNT、Win2000、WinXP、Win.Net、Linux、FreeBSD、NetWare6、Solaris x86。 
不支持的Guest OS: 
BeOS、IBM OS/2 and OS/2 Warp、Minix、QNX、SCO Unix、UnixWare。 
2.Vm安装 
这个和WINDOWS的其他软件一样,用默认的安装方法就可以。 
3.VM的配置 
1)选择菜单理的FILE>>NEW>>Virtual Machine创建一个新的虚拟机. 
2)选择下一步.Typical,典型设置 
3)下一步是选择你要设置的虚拟机操作系统,这个我选的是LINUX.根据个人的需要可以选择你要的操作系统.我不清楚选择其他操作系统是否对虚拟机有影响,但是我选OTHERS装的LINUX也是正常使用的. 
4)填写你的虚拟机安装的位置和你使用的名字,名字么,选个形象好记的就行,位置要注意,因为VM是装在WINDOWS操作系统下的,所以如果你选择的硬盘空间不够,那就无法安装. 
5)network connection网络连接,第一个是和现有的网络相连,第二个使用NAT,第三个是选择独立的主机,并和主机相连,第四个是不使用网络连接.我选择的是第一个,后面再讲网络的具体设置. 
6)磁盘空间这里有两个选项,第一个是手动设置磁盘大小,第二个是使用磁盘的剩余空间.安装2000最少要在系统上预留4G的空间,因为划分的空间不可修改,所以你一定要规划好你的硬盘大小,不然以后只能重新安装了.LINUX我设置的是5个GB.,最小也要给3个G因为,LINUX安装了编译器和系统服务最少就要这么多的空间了.建议划分5G以上. 
7)设置完成. 

二.安装完后在系统中左侧出现了你设置的系统名字我这里是REDHAT LINUX,但是必须要安装了系统之后才能使用. 
选择你的系统名称.右侧出现的是你系统的配置. 
COMMAND栏目有3项,第一个是启动虚拟机.START有个绿色的三角的. 
第二个是编辑虚拟主机设置 
第三个是COPY你已经安装好的系统.这个功能我没有用过,应该是连系统带软件都可以复制过去的. 
三.编辑主机的设置. 
虚拟主机的设置有内存大小,磁盘位置,网卡,USB设备,声卡,CPU等项目,在你希望修改的项目上双击就可以进出现配置对话框. 
首先的是内存,VM默认的是使用你当前可用内存的一半.你可以根据你系统的实际情况调整你的虚拟机使用的内存. 
第二个是硬盘,这个一般不用改,除非你有两块物理硬盘. 
第三个是CDROM.双击进入设置对话框. 
Divice status设备状态:一个是连接,另一个在开机时连接.默认选择的2,这里所谓的开机连接是你启动虚拟机时进行连接. 
底下有连接选项.第一个是使用物理设备.Use Physical divice.也就是使用你的物理光驱.点开下拉菜单你可以进行选择.值得注意的一点.是你使用DEMON TOOLS所创建的虚拟光驱盘符也会出现在这里,也就是说你可以使用虚拟光驱的文件进行安装.和光驱没有什么不同.另一个选择项是使用ISO文件(use ISO,如果你没有装虚拟光驱,用ISO文件也是可以的.比如我就是将从网上下载的Redhat linux安装镜相.映射为光盘进行安装的. 
第四个是network.的设置. 
网络的设置是VM的强项,你机器要是有网卡的话,并且你希望和你安装VM的机器通讯.那你要注意以下的内容, 
网络如果和现有网络相连(我使用的是这个,用来和你的主机通讯)而且它不仅可以和现有主机通讯还可以和你现有网络通讯.*_^很强八.下面我把VM的帮助理的内容翻译下. 
 Connected — Check or uncheck this option while the virtual machine is running to connect or disconnect the virtual network adapter. 
连接=选择此项当虚拟机启动时自动连接到你的虚拟网卡. 
Connect at power on 
当启动时连接,当虚拟机启动时自动连接你的网卡,如果你不选择此项目,则网卡会在系统启动后不启动,其实说白点就是系统启动后,你的虚拟网卡没有激活,需要你手动激活. 
Under Network connection, you can choose: 
在网络连接中你可以选择: 
1. Bridged=网桥.这个和物理网桥的功能类似. 
2. Bridged — If the host computer is on an Ethernet network, bridged networking is often the easiest way to give your virtual machine access to that network. With bridged networking, the virtual machine appears as an additional computer on the same physical Ethernet network as the host. A virtual machine with bridged networking may transparently use any of the services available on the network to which it is bridged, including file servers, printers, gateways and so on. Likewise, any physical host or other virtual machine configured with bridged networking can use resources of that virtual machine. 
3. 如果你的真实主机在一个以太网络内,桥网通常是最容易的办法,给你的虚拟主机访问以太网.当桥网络,虚拟主机成为了附加在物理以太网的一台主机.,一个使用桥网络的虚拟主机可以使用物理网络的任何服务,同样也可以提供任何服务,比如文件服务器,打印机,网关等.(翻译的很烂,但就是这个意思)就是说你的虚拟机器可以变成一台真正的服务器?,建议使用此配置. 
4. NAT (Network Address Translation) — If you want to connect to the Internet or other TCP/IP network using the host computers dial-up networking connection and you are not able to give your virtual machine an IP address on the external network, this is often the easiest way to give the virtual machine access to that network. The virtual machine does not have its own IP address on the external network. Instead, a separate private network is set up on the host computer. The virtual machine obtains an address on that network from the VMware virtual DHCP server 
5. NAT(网络地址传输)-如果你希望连接到互联网或者其他的TCP/IP网络,使用物理主机的拨号网络并且你不能给你的虚拟主机在现有网络一个IP地址,这是最容易的办法.一个私有网络地址可以设置在你的物理主机上,而虚拟机则可以从VMware的虚拟DHCP服务器上获得一个IP地址.(这个主要用于拨号连接,我不清楚这里所说的虚拟DHCP是什么东西.但是我个人认为可能指的是以前的猫拨号的情况.现在应该不需要的.或者可以使用主机的NAT解决ADSL拨号的问题,) 
6. Host-only — When you use this type of network connection, the virtual machine is connected to the host operating system on a virtual private network, which normally is not visible outside the host. Multiple virtual machines configured with host-only networking on the same host are on the same network. 
7. 只是主机=当你使用这种网络连接,虚拟主机被连接到物理主机操作系统上,一个虚拟私有网络.在此主机之外,外网是不可见的.只有在这个主机上配置多个虚拟主机才可以访问此网络.(这个话翻译的不通,我觉得是这样,就是你设置成这种模式,只有你本机和你的虚拟机可以访问这个网络,你的物理网络的设备是访问不到你的虚拟机器的), 
8. Custom —自定义咯,你自己要怎么设置随你.:)不多说了. 

我是这样作的.首先把网卡设置为桥的形式,然后到EDIT菜单的Virtual network setting理把Autobridging 选择上,让系统自动去连接网桥上的虚拟网卡. 
然后把DHCP理设置的两个虚拟网卡,删除 
把主机虚拟网卡,删除 
把HOSTMAPPING 设置为bridge to an automatically chose adapter, 
也就是让桥去自动选择网卡.设置完后选择应用.VM的设置就完成了. 

第五个是设置USB控制器,这里VM是和你的主机共用的USB接口.也就是你USB接口上的东西,VM理的系统是都可以用的,当然你要把自动连接选择项加上,不然你在VM理识别不到. 
下一个是AUDIO,你要是想在虚拟机发声音,就把这个设置上巴.一般默认就可以了.虚拟机自己会识别的,当然你所安装的系统也要识别你的声卡. 
最后的是你的CPU,你可以设置1个或者2个.当然这只会是你一向情愿.骗下你虚拟机的系统识别罢了.性能上是不可能有任何提升的. 

以上为VM的设备设置 
设置完后,你可以把光驱或者ISO映象加载到你的光驱理,然后选择绿箭头启动你的虚拟机了.虚拟机理还有它的BIOS你可以F2进去看看?设置下.然后就可以开始你的系统安装了, 
那就和VM没多大关系, 

最后说两点,一个是要注意你的虚拟机要设置和你主机在同一个网络段理否则是无法访问的. 
第二个是笑三少所说的文件传输的问题,他说的可以直接把文件拖进虚拟机的窗口就可以拷贝文件了,可能2003是可以这样,毕竟都是微软出的操作系统.但是我在linux下测试的是不行的,因为LINUX的文件系统是EX3的.于是我想了个办法是在windows底下装个UltraISO,虚拟机要使用什么文件我都做成ISO文件,然后挂到虚拟机的光驱上,然后在linux底下MOUNT上去用.一点也不麻

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章
    喜欢该文的人也喜欢 更多