VMWare网络连接透析

来源:互联网 发布:linux 内核参数优化 编辑:程序博客网 时间:2024/04/30 13:43
原文:http://blog.csdn.net/struggleyb/archive/2006/08/21/1102214.aspx
 以前在学校,VMWare里面的Gentoo Linux是采用network bridge 的方式和windows共享一个物理网卡上网,这次回家,将电脑搬了回来,改成了adsl上网,结果发现Linux居然无法访问网络了,我的Gentoo Linux如果没有网络那就等于废了,不能emerge,Gentoo的优势何在啊?逼的我疯狂google,查阅了不少VMWare的文档,终 VMWare的网络问题搞定了。其实,这已经是一个月前的事情了,直到现在才找了点时间,把它写出来:

三种网络方式

BRIDGED: 


bridge就是“桥”的意思,说起桥接,就不能不说局域网。比如我们有两个局域网络,他们的ip段都处于192.168.0.*,同时,我们希望把这两个网络链接起来,这中情况下,我们就可以采用桥接。这个时候,“桥”就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在“桥”上,运行着程序,让局域网A中的所有数据包原封不动的流入B,反之亦然。这样,局域网A和B就无缝的在链路层连接起来了(当然要保证两个局域网没有冲突的 IP)。这就是桥的作用,在链路层无缝的沟通两个局域网。

而VMWare的桥也是同样的道理,只不过,本来作为硬件的一块网卡,现在由VMWare软件虚拟而来罢了!当采用桥接时,VMWare会虚拟一块网卡和真正的物理网卡就行桥接,这样,发到物理网卡的所有数据包就到了VMWare虚拟机,而由VMWare发出的数据包也会通过桥从物理网卡的那端发出,这样,如果物理网卡可以上网,那么桥接的软网卡也没有问题了,这就是桥接上网的原理了。

在桥接时,VMWare网卡和物理网卡应该处于同意ip网段,所以在虚拟机中ping物理网卡ip,或者在主机总ping虚拟机网卡ip,都可以ping通。

NAT:

nat就是network address translate的简称。网络地址转换,这个技术是为了让象192.168.*.*这样的私有ip段能够访问internet而开发的。私有ip段,可以由任何公司和个人使用,所以世界上有无数电脑使用了192.168.0.111这样的地址,而这个地址绝对不能出现在internet上,因为这肯定会造成路由的失败。但是,ip地址的稀缺让我们必须采用这种共享ip的方案,同时还要允许这些机器访问internet。这样的前提下,NAT就应运而生了。

NAT技术应用在internet网关和路由器上,比如192.168.0.111这个地址要访问internet,它的数据包就要通过一个网关或者路由器,而网关或者路由器拥有一个能访问internet的ip地址,这样的网关和路由器就要在收发数据包时,对数据包的IP协议层数据进行更改(即 NAT),以使私有网段的主机能够顺利访问internet。

我想到的一个最典型的例子,就要算我的大学宿舍了。宿舍内部网段192.168.1.× ,通过路由器进入校园局域网10.10.110.×,然后通过学校网关,进入internet。这个过程中,宿舍的路由器做了一次NAT,而学校的网关又做了一次NAT。

VMWare的NAT上网采用的技术是一样的,它在主机和虚拟机之间用软件伪造出一块网卡,这块网卡和虚拟机的ip处于一个地址段。同时,在这块网卡和主机的网络接口之间进行NAT。虚拟机发出的每一块数据包都会经过虚拟网卡,然后nat,然后由主机的接口发出。

由于在这种条件下,虚拟机和主机不在同一个ip段,但是主机相当于虚拟机的网关,所以虚拟机能ping到主机的ip,但是主机ping不到虚拟机的ip。

Host-only:

顾名思义,这种技术提供的是主机和虚拟机之间的网络互访,而不是虚拟机访问internet的技术。如果,你只想让虚拟机和主机之间有数据交换,而不想让虚拟机访问internet,就要采用这个设置了。

Host-only的条件下,VMWare在真正的Windows系统中,建立一块软网卡。这块网卡可以在网络连接中看到,这块网卡的作用就是使windows看到虚拟机的IP。

由于,这种技术就是将主机和虚拟机通过一个ip段的网卡联系起来,所以双方都可以ping到对方。


实际问题

想明白了以上问题后,再去观察实际中出现的问题,就很好理解了。在学校时候,我采用bridge技术使虚拟机访问internet,而到家之后,采用了adsl上网,却行不通了。

问题就在于,bridge是通过桥接虚拟机的网卡和物理网卡来实现虚拟机访问internet的,这要求实际的物理网卡必须能访问internet。学校采用的是局域网,这一点可以满足,但是家里采用的adsl。adsl上网,采用的pppoe技术,就是在网卡之上建立起一个ppp连接。这种条件下,所有数据包是通过ppp封装之后发出的,虽然也是从网卡发出,但是包的形式就和普通的internet数据包不一样了。也就是说,实际的物理网卡已经没有直接访问internet的能力了。而必须通过ppp接口封装的数据包,才能访问internet。

为了使虚拟机能够访问internet,我们必须使虚拟机的数据包从ppp接口发出去,也就是从adsl的连接发出去。这个时候,NAT技术就可以派上用场了。只要采用NAT,让虚拟机的数据包经由adsl连接来收发,就可以解决上网问题了。理论如此,实际操作如下:



如上图,选择一块虚拟网卡,作为NAT使用的网卡。并且,设置好虚拟网段(要和虚拟机里系统的ip处于一个网段)。




如上图,将设置好的用于NAT的网卡和虚拟机的虚拟网卡绑定。

然后,进入虚拟机,设置IP,就可以上网了。

其实,无论在什么条件下,只要主机能上网,才用NAT技术,都可以使虚拟机访问internet;只有在主机网卡处在一个可以访问internet的局域网中的时候,虚拟机才能通过bridge访问internet;Host-only技术只用于主机和虚拟机互访,于访问internet无关。
原创粉丝点击