VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。
1.bridged(桥接模式)
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟 系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。手动修改虚拟机的ip地址、子网掩码,通过
vi /etc/sysconfig/network-scrips/ifcfg-eth3 ,由于我的虚拟机是eth3,不同的电脑可能是不同的,有的网卡接口是eth0等。
TYPE=Ethernet #网卡类型
DEVICE=eth0 #网卡接口名称
ONBOOT=yes #系统启动时是否自动加载
BOOTPROTO=static #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
IPADDR=192.168.1.11 #网卡IP地址
NETMASK=255.255.255.0 #网卡网络地址
GATEWAY=192.168.1.1 #网卡网关地址
DNS1=10.203.104.41 #网卡DNS地址
HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址
BROADCAST=192.168.1.255 #网卡广播地址
同时,由于这个虚拟系统是局域网中的一个独立的主机 系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。
使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。
2.host-only(主机模式)
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
提示:在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。
如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。
3.NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟 系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚 拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机 器能访问互联网即可。
如果你想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。
虚拟机的网络设置(原理篇) }@+0/ W?\.
1,什么是网络? E,U+o $
,/F~ Y&1I
Internet 是指"互连网",好象这句话说的有点多余,不过确实有很多人对他有错误的理解,"互连网"是指一个个网络互连,而不是像有些人想象的那样把一台台电脑杂乱无章的互连。当我们需要用电脑和远方的电脑通讯的时候,先把本地电脑组成一个网络,当然,远方的电脑也要组成一个网络,在把这两个网络"互连"起来,组成 "互连网"。用电话线和MODEM拨号上网的时候是通过电话线先把自己的电脑连到ISP(Internet Service Provider 网络服务提供商)的网络中,再经过ISP的网络和世界各地的电脑通信。 [D4SW#
2,电脑如何通过网络传递数据? /]Md~=yNp
agDM~=#F
每一个网络需要一个网络地址,网络中的电脑需要一个在网络中唯一确定的标识,网络号和电脑的标识号组成了IP地址,所以IP地址是由网络号和主机号组成的。当你的电脑要和其他的电脑通信的时候,电脑会先根据IP地址和子网掩码确定目标主机是在本地网络中还是在远程网络中,如果在本地网络中则直接把一个包含信息的IP 数据包发送到本地网络上,目标主机会检测到并接收,如果目标主机在远程网络则需要通过一台被称为网关的的电脑转发到远程网络,网关(geteway)可以看做是连接网络和网络的桥梁,网关的概念很广,这里为了简化起见,我们暂且认为它和路由器是同一个概念。路由器(router)是一种连接网络和网络,并选择IP数据包传送的路径的一台特殊计算机。很多情况下网关的概念等同于路由器。 3ym',q
3,网络中电脑的IP地址有何要求? ZG8DIV\D7
^A&1^B
在同一个网络中,每台电脑必须具有相同的网络号,这样电脑才认为目标主机是在本网络中并且可以正确送达,如果网络号不同,即使目标主机已经用网线连到本网络中数据也不能直接送达,即使这两台电脑近在咫尺,在电脑看来仍旧是一台远程电脑.比如一个网络的网络号为192.168.0,则该网络中的计算机的IP地址必须以192.168.0开头。假如要传送一个数据包到网络号为192.168.1的网络,则必须通过路由器转发,如果该网络中没有路由器,则发送失败。因此,为了连接两个网络,一台路又器至少要有两个网络接口(网卡、调制解调器等联网设备称为网络接口)。网络和路由器的关系见下图: sBg.u
z,p~z*4
[]1C$.5DD
KRRdXx\~
iz PDd{[
/7F:T[
--------------- -------------- -------------- E]-/Zbvdv
| 网络A | | 路由器 | | 网络B | g:8h|w)
| | | | | | {cVEmvE8
| □--|-----------|--□ □--|----------|--□ | `|& O*`
| 1 | | 2 3 | | 4 | ;iL#7NG-R
--------------- -------------- -------------- BUXpC xQ
j'"J%e]
n9ej7oj
图 一 VTY 5]|;
@<EO` L)Z
图中的小方框表示网卡或其他网络接口。 u <v7;dF|s
可以看到路由器至少有两个网络接口。 _ *Pf
假设网络A的地址为192.168.0 网卡1的地址为192.168.0.1 *_\_'@1|J)
网络B的地址为192.168.1 网卡4的地址为192.168.1.1 B>P{A7Q
则路由器上的网卡2必须属于网络 192.168.0 地址为192.168.0.x (x为任意小于255的数) >7DhTM-A
路由器上的网卡3必须属于网络 192.168.1 地址为192.168.1.x (x为任意小于255的数) R%[ c;i
就是说,路由器既属于网络A,又属于网络B,这样才起到桥梁的作用。 )irEM
当数据从网络A发往网络B时,路由器从网卡2接收数据,经过改装后通过网卡3发送数据到网络B。 YNsJZnGr8#
%:* YO;dw'
这样,我们称网卡2的地址 192.168.0.x为网络A的网关 cTTL1SW
网卡3的地址 192.168.1.x为网络B的网关 3AN/ H
onxLyx|A
4,VMware虚拟机提供了那些虚拟网络设备? Q>Yjy!. <^
t\7[f >
默认安装的情况下VMware提供了虚拟网卡vmnet1和vmnet8,还有在虚拟系统上的虚拟网卡 "AMD PCNET Family PCI Ethernet Adapter" >tW#/\x{
U&p${IcEm
请注意,vmnet1和vmnet8是主系统上虚拟设备,用ifconfig命令可以看到,而"AMD PCNET Family PCI Ethernet Adapter"是虚拟系统上的虚拟设备,在安装完虚拟系统后可以在设备管理器中看到,前两个隶属于真实系统,是你的真实电脑中的设备,后一个隶属于虚拟系统,是虚拟电脑中的设备,不要搞混淆。 Lw>N rY(Y
p0vVkdd
--------------- -------------- -------------- 97!;.f-
| 网络A | | 路由器 | | 网络B | * 0=j?~&
| | | | | | ~Z' ?LV<t
| □--|-----------|--□ □--|----------|--□ | FU4L6n
| 1 | | 2 3 | | 4 | 'TB2:W3
--------------- -------------- -------------- --BW 9]FW
"3Y0`&:D
o?Oc7 $+u
---------------- ------------------------- -------------- eTcd"Kd/
| 虚拟系统 | | 主系统(路由器) | | 真实网络 | .HABNPNg(
| | | | | | sK?twg;D*|
| □--|-----------|--□ □<--->□-----|------|--□ | +9sQZB# (
|AMD PCNET卡 | |vmnet1 vmnet8 真实网卡 | | 4 | 5*u+q2\F
---------------- ------------------------- -------------- ) ;Y;Q
>Y@H4LF;1x
图 二 W: z;|FF
@d1Q"9}B
让我们来和上面的网络和路由器的关系做一个比对。 Bdpy:'fJn
可以看到要想虚拟系统和主系统通信必须使AMD PCNET 网卡和vmnet1组成一个网络。 <b*DQ:N
而vmnet1本来就在主系统中,系统可以直接访问,所以主系统又充当了路由器的功能,只要有这两个虚拟设备主系统和虚拟系统就可以通讯。 M&M 6;Ph
gbD KE{
SSzIih@u
关键在于三点: Q22 GIr
1.确定网卡AMD PCNET和vmnet1的网络号相同。 kD"{g#c
2.在虚拟系统里设置网络属性,把网关地址设为vmnet1的地址。 |u p
3.开启主系统的路由功能,使它成为一台路由器。 ZS o )
%\:Wi#w>
事实上,如果你只需要虚拟系统和主系统通信,而不需要和主系统所在的真实网络上的其他主机通信的话只要满足第一点就可以了。因为满足第一点,主系统和虚拟系统就在同一网络中了,不需要路由器便可通信。但是大多数情况下我们需要虚拟系统和主系统所在的真实网络通信,这就需要满足其他两点了。 llDkJ)\
虚拟机的网络设置(实施篇) #4;wjcGWw
]e V8b*d6
1, 我们先来让虚拟系统和主系统联系上。 ]/{)bpu
!bP@n
在VMware安装的时候安装程序会自动给vmnet1分配一个IP地址,下面是笔者电脑上例子: )LCHy^'
?&uu[y
vmnet1 Link encap:Ethernet HWaddr 00:50:56:C0:00:01 qxJ\ye+'*
inet addr:192.168.221.1 Bcast:192.168.221.255 Mask:255.255.255.0 _','9|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 2+WaA ,
RX packets:191 errors:0 dropped:0 overruns:0 frame:0 Fs^Mw g o
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0 [KQ6Ta.
collisions:0 txqueuelen:100 EBmt9S
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) LXCx~;{\
Xlt|nX~#;
在第二行可以看到安装程序给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(如果不和外界真实网络通信的话网关可以不设) h FBe,'3M
P1f[% 1
windows 2000和XP 设置后立即生效,win98需要重新启动,linux需要重新启动网络服务: Z5]>pJFq,
#service network restart @=f\<"$vt
p{dj~ &v
2, 让虚拟系统和主系统所在的真实网络通信 8>i n_h9
,M ^<CJ
首先在你的电脑上需要有一块与真实网络相连真实的网卡(如图二所示)。vmnet8就在与真实网络通讯的时候起作用了,vmnet8会和真实网卡对应起来,虚拟系统要发送数据包到真实网络中的时候,真实系统是一台路由器,首先数据发到虚拟网卡vmnet1,然后经过路由器(这里就是主系统linux)发到 vmnet8,由于vmnet8和真实网卡是对应起来的,这一机制是有vmware完成的,所以发到vmnet8上的网卡就等于传送到了真实网卡上,然后数据包再通过真实网卡发送到真实网络,整个过程请看图二。如果你的系统上有两块以上的真实网卡,在安装的时候安装程序会询问把虚拟网卡对应到哪个真实网卡上。可以根据实际情况选择。 a'yK~;+_9
|"CZT#
把vmnet8的IP地址设置为和真实网卡在同一网络的地址,假设真实网络的网络号为192.168.0,真实网卡的IP地址为192.168.0.1则可设置vmnet8的IP地址为192.168.0.2 Zw S F^
在linux中方法如下: eF-."1
=wV<hg)C
#ifconfig vmnet8 down j[J-f@F \Y
#ifconfig vmnet8 192.168.0.2 up 0)e\`Bv
1FL~ndJs
0#Y5_i|p
回顾一下上面讲的三个条件: ,77d(bR<
-------------------------------------------------------------- &>W$6>@
关键在于三点: `w7v*h|P
1.确定网卡AMD PCNET和vmnet1的网络号相同。 m6\E$;`
2.在虚拟系统里设置网络属性,把网关地址设为vmnet1的地址。 ;LPfXpR
3.开启主系统的路由功能,使它成为一台路由器。 g-</ua(j
-------------------------------------------------------------- c&?m>2^6
bL+_j}{:N
前两点我们已经在第一部分中做好了,现在只要开启了linux的路由功能虚拟系统就可以和外界通讯了。 }mYx_=+VX
linux是一个天生的网络操作系统,他在网络方面的强大功能使得它在网络服务器领域有广泛的应用。用linux来做路由器甚至不需要额外的软件,linux的内核直接支持静态路由的功能。我们要做的只是把路由功能打开就可以了。 M l{Z
2Aazy'/
可以先看看路由表: gmO!
#route mAj?>;R2$2
确定所有网卡的IP地址或网络地址都在Destination一栏里,如下图: jrlVvzZ
------------------------------------------------------------------------------- a}BYov
Kernel IP routing table 4$iz4U:P
Destination Gateway Genmask Flags Metric Ref Use Iface 6S'yZQ |b
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1 3LJ+v5T~
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1 uy[At+%zg
192.168.0.0 * 255.255.255.0 U 0 0 0 vmnet8 5,Jp[bw{H{
192.168.221.0 * 255.255.255.0 U 0 0 0 vmnet1 Ja7R2-0ii#
127.0.0.0 * 255.0.0.0 U 0 0 0 lo t9kzw*U9
default www.gucuiwen.co 0.0.0.0 UG 0 0 0 eth0 {3>$[b T
------------------------------------------------------------------------------- 6@h/*WElG
=1FRFZI!j
默认情况下启动网络设备的时候系统会把该设备的IP地址添加到路由表中,如果没有的话可以重新启动一下网络服务: UAkT*'cB
GfxZ'VIn
#service network restart fy>{QC\
%~O,zs.2p
[`#CXq'
}/0X'o
YquI$PV _
再来开启路由功能: h"[AOfTE$
7cuE7"
# echo 1 > /proc/sys/net/ipv4/ip_forward pQyK={7?`
+RHS!0
至此,linux的路由功能已经打开,你的linux系统已经成了一台路由器,连接着虚拟的网络和真实网络。虚拟网络和真实网络间就可以通信了。出于安全考虑,如果有必要的话还需要用iptables命令来设置一下路由规则。 f$o_e90mu
&pxg. 3