gucuiwen 发表于 2004-9-16 16:35:49

gt;gt; Vmware 虚拟机网络设置[补充] lt;lt;

>> Vmware 虚拟机网络设置[补充] <<

author: gucuiwen email: [email protected]

先前写过一篇关于WMWARE虚拟机网络设置的文章贴在论坛里,有幸被版主收入到精华区,但是那篇文章只讲了虚拟系统和主系统通信的部分,对于虚拟系统和外部网络通信则一笔代过了.而且自己在后来看的时候也发现了很多错误.最近正好有时间研究一下关于网络服务器的项目,又要用到虚拟机器,所以顺便又研究了一下VMWARE和外部网络通信的过程.现在写出来作为对上次那篇文章的补充.
有问题请联系 [email protected] 转载请注明出处和作者.

[预备知识]
计算机和INTERNET联接的方式:

一,直接联接 (我暂且这么称乎)
在这种联接方式中,你的计算机有世界唯一的公共网络IP地址,可直接和世界上任何一台计算机直接通信.
我们平时用调制解调器拨号上网就是这种方式.当你拨号到ISP那里的时候,ISP会分配给你的猫一个全球唯一的IP地址,
在你连线期间,这个IP地址一直是全球唯一的,你可直接和世界上任何一台主机通信.(请注意,这里的"直接联接"概念和直接专线联接有区别).
这种方式就是所谓的 host-only 方式

二,NAT联接 (网络地址转换 network address translation)
NAT是为了解决IP地址不够用而研究出得一种解决方案,是目前企业和学校上网用的最普遍的一种方式.
其核心内容是:IP地址很有限,你只能得到很少甚至只有一个世界唯一的IP地址,但是你却有很多电脑需要上网,那怎么办呢?
我们可以先把需要上网的电脑连成一个局域网,因为这个局域网是私有的(即IP地址不是全世界唯一指定的)所以IP地址可以任意设置,并且设置任意多个. 再用一台拥有公共网络IP地址的主机作为中间人,当局域网中的电脑需要上INTERNET时,先请"中间人"去联接,中间人再把它的IP地址翻译成自己的IP地址,这样,在外部看来,好像是有"中间人"直接联接的一样.当外部把主机请求的内容反回给主机时,中间人又把外部主机的IP地址翻译成局域网中那台主机的地址,就好像他们在直接通信.这样就解决了IP地址不够的问题 .这样一个"中间人"就是NAT路由器.校园网络或者一般公司的上网都是用这种模式.另外ADSL设置成路由模式上网时也是NAT模式.

三,桥接 (bridge)
这种方式和NAT在形式上有点相象.不同的是NAT一次可以为很多主机作"中间人",而桥接只能联接一台,就好比一座"桥"一样把具有独立IP的机器和没有独立IP的机器联接起来,或者说把没有独立IP的机器映射到有独立IP的主机上,使得在外部看来这两台主机就是一台主机.平时用ADSL
拨好上网就是这种模式,ADSL猫获得一个独立的IP,成了一台有独立IP的主机,再和你的电脑桥接,使你的电脑连上INTERNET.

vmware中用软件来实现以上三种方式,使得虚拟主机可以通过真实主机上网.
这三种方式各有优缺点,可以根据需要选择.我将在下面具体讲解.

以下以WMWARE的安装开始讲解网络设置过程.因为在先前的文章中已经讲过VMWARE的安装,
这里重点讲述WMWARE安装过程中的网络相关部分.本文是讲解在linux系统上安装windows系统的.
请配合本人以前写的那篇文章阅读.如果弄懂原理,在其它系统上装也是一样的.

一.安装
解压VMWARE并运行安装程序:
cd vmware-distirb
./vmware-install.pl

以下文中的"//"表示对安装过程的说明,其它是安装过程的输出信息.
..........
//一些关于vmware安装目录的询问,一般默认回车就可以了.
..........
//以上是软件的LISENCE

VMware (R) is a registered trademark of VMware, Inc.

Do you accept? (yes/no) yes

//输入 yes 表示同意并回车

Thank you.

Trying to find a suitable vmmon module for your running kernel.

The module up-2.4.20-8.i686-RH9.0 loads perfectly in the running kernel.

Trying to find a suitable vmnet module for your running kernel.

The module up-2.4.20-8.i686-RH9.0 loads perfectly in the running kernel.

Do you want networking for your virtual machines? (yes/no/help) //询问是否需要网络通信,默认为YES,直接回车

Configuring a bridged network for vmnet0.   //请看这里,配置bridged(即桥接)模式,桥接的虚拟设备为 vmnet0

Do you want to be able to use NAT networking in your virtual machines? //询问是否需要NAT上网模式,默认为YES

Configuring a NAT network for vmnet8. //NAT的虚拟设备为vmnet8

Do you want this program to probe for an unused private subnet? (yes/no/help)
//自动检测未用的IP地址和网段给NAT使用

Probing for an unused private subnet (this can take some time)...

The subnet 172.16.221.0/255.255.255.0 appears to be unused. //检测到的未用地址作为NAT网络,记住这个地址,每次配置不一样.

Do you want to be able to use host-only networking in your virtual machines?
yes//询问是否需要host-only网络,默认为NO,这里我回答YES,因为需要做host-only 网络设置说明

Configuring a host-only network for vmnet1.

Do you want this program to probe for an unused private subnet? (yes/no/help)
//自动检测未用的IP地址和网段给host-only使用

Probing for an unused private subnet (this can take some time)...

The subnet 192.168.132.0/255.255.255.0 appears to be unused. //检测到的未用地址作为host-only网络,记住这个地址,每次配置不一样.

The following hostonly networks have been defined:

. vmnet1 is a host-only network on private subnet 192.168.132.0.//请注意这里虚拟设备是vmnet1

Do you wish to configure another host-only network? (yes/no) //一个就够了

Do you want this program to automatically configure your system to allow your
virtual machines to access the host's filesystem? (yes/no/help)

Starting VMware services:
   Virtual machine monitor                                 [确定]
   Virtual ethernet                                        [确定]
   Bridged networking on /dev/vmnet0                     [确定]
   Host-only networking on /dev/vmnet1 (background)      [确定]
   Host-only networking on /dev/vmnet8 (background)      [确定]
   NAT service on /dev/vmnet8                              [确定]

The configuration of VMware Workstation 4.5.2 build-8848 for Linux for this
running kernel completed successfully.

You can now run VMware Workstation by invoking the following command:
"/usr/bin/vmware".

Enjoy,

--the VMware team

以上是VMWARE安装过程中网络部分的配置.
如果你已经安装好了WMWARE,想重新配置网络,可运行vmware-config.pl来重新配置网络安装.

通过以上设置我们得出结论:vmware默认安装的网络相关虚拟设备如下:

vmnet0 <==>bridge-network 桥接模式网络
vmnet1 <==>host-only独立主机模式
vmnet8 <==>NAT 网络地址转换模式

用ifconfig查看对应的IP地址,显示如下:

vmnet1    Link encap:EthernetHWaddr 00:50:56:C0:00:01
          inet addr:192.168.132.1Bcast:192.168.132.255Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric: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:100
          RX bytes:0 (0.0 b)TX bytes:0 (0.0 b)

vmnet8    Link encap:EthernetHWaddr 00:50:56:C0:00:08
          inet addr:172.16.221.1Bcast:172.16.221.255Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:196 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)TX bytes:0 (0.0 b)

即192.168.135.1 和 172.16.221.1
这两个IP地址的分配是随机的,每次都不一样.


二,vmware虚拟机和外部网络相连
(1)桥接方式:
在vmware中桥接方式是最容易实现虚拟系统连上INTERNET的方式.
首先,安装系统,在提示选择网络模式的时候选择bridge.
装完后还可以通过虚拟机的配置文件修改,方法为:

vmware菜单-->VM-->setttings-->点中Network Adpater,在旁边的network connection中选择.

安装并启动虚拟系统,将虚拟系统中的虚拟网卡的IP地址设置成与真实系统的真实网卡在同一网段的IP

如:
真实系统中真实网卡的IP地址为:192.168.0.100 掩码为255.255.255.0
则设置虚拟系统中设置虚拟网卡为:192.168.0.101掩码为255.255.255.0
网关和DNS设置成和真实系统的相同即可.打开浏览器就可以上网.

这种方式的优点是简单.缺点是你的虚拟系统不是独立的,比如你想在真实系统上运行FTP服务,在虚拟系统上运性HTTP服务用于实验,
那么由于在外部电脑看来,这两个系统是同一个系统,所以不能实现.

(2)NAT方式:
先查看
/etc/vmware/vmnet8/nat/nat.conf文件
其中有四行:

# NAT gateway address
ip = 172.16.221.2
netmask = 255.255.255.0
# or ip = 172.16.221.2/24

看到了吗?
NAT 网关的地址是172.16.221.2 ***并不是***虚拟设备vmnet8的地址(172.16.221.1)

这个问题我一开始没有注意到,想当然的认为网关地址是vmnet8的地址.所以总是不能成功的用NAT方式上网.后来阅读文档才注意到.

具体步骤:

vmware菜单-->VM-->setttings-->点中Network Adpater,在旁边的network connection中选择
Custom :Specific virtual network
在下拉框中选择/dev/vmnet8 (因为vmnet8,是vmware中实现NAT的虚拟设备)
也可以直接选择上面的NAT:Used to share the host's IP address.
但是我第一次试没成功,所以干脆直接选择了vmnet8,建议其它读者也这样,避免麻烦.

确定以后就可以在虚拟系统中设置IP地址了.
这个修改连网方式的过程不需要重新起动虚拟系统就可完成.

在主系统中把IP地址设置成和vmnet8再同一网段地址
如我的vmnet8地址为172.16.221.1 掩码为255.255.255.0
我就设置虚拟系统中的虚拟网卡的IP地址为 172.16.221.3 掩码为255.255.255.0
注意不能设置为172.16.221.2 因为这是网关的地址,具体是什么请查看文件
/etc/vmware/vmnet8/nat/nat.conf

把网关设置为172.16.221.2,DNS和真实系统相同.
这样就可以让虚拟上网了.

(3)host-only方式:

vmware菜单-->VM-->setttings-->点中Network Adpater,在旁边的network connection中选择
Custom :Specific virtual network
在下拉框中选择/dev/vmnet1(vmnet1 是vmware中实现host-only的虚拟设备)

将虚拟系统的虚拟网卡的IP设置为 vmnet1同一网段的IP地址:
vmnet1 :192.168.132.1netmask 255.255.255.0
虚拟系统的网卡: 192.168.132.5 netmask 255.255.255.0
虚拟系统网关:192.168.132.1
DNS : 和真实系统相同.

开启真实系统的路由功能:
echo "1" >/proc/sys/net/ipv4/ip_forward

这样虚拟系统就可以和真实系统所在网络的主机通信.
即由linux系统充当路由器联接了虚拟和真实两个网络.

虚拟网络: 192.168.132.5 <==> 192.168.132.1
真实网络: 192.168.119.115 <==> 192.168.119.254 (我的配置)
其中 192.168.132.1 和 192.168.119.115 在主系统中作为路由器的两个网络接口.


在host-only方式访问INTERNET还有一点问题,可能是网络的其它原因.
找了些资料还是没能解决,有待以后再解决.如果有高手知道该怎么做请告诉我.
文中难免还有错误,请不吝指正.

文中有些表述不是很确切,语言比较奥口请谅解.
email: [email protected]

lotusland 发表于 2004-9-16 17:32:03

好文章,非常感谢,目前正在找这方面的资料呢!
页: [1]
查看完整版本: gt;gt; Vmware 虚拟机网络设置[补充] lt;lt;