原创 总结关于虚拟机和宿主机共享上网和几个链接的说明

2011-6-14 21:07 2197 7 7 分类: MCU/ 嵌入式
 
闲着没事自己配置一下gentoo:
主机xp sp3 虚拟机vm6.5下:

安装和配置Gentoo Linux

进入主题:关于虚拟机和宿主机共享上网的问题网上虽然有很多可是有些都不怎么全
现在我把我个人的整理出来分享一下(注:大部分来自网上我稍微联系我使用的实际组合修改了一下)

在局域网上,VMWare里面的Gentoo Linux是采用network bridge 的方式和windows共享一个物理网卡上网,adsl上网,只能用NAT。(bridge链接很简单,主要是说一下NAT

三种网络方式

BRIDGED:  


         bridge
就是的意思,说起桥接,就不能不说局域网。比如我们有两个局域网络,他们的ip段都处于192.168.0.*,同时,我们希望把这两个网络链接起来,这中情况下,我们就可以采用桥接。这个时候,就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在上,运行着程序,让局域网A中的所有数据包原封不动的流入B,反之亦然。这样,局域网AB就无缝的在链路层连接起来了(当然要保证两个局域网没有冲突的 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,它的数据包就要通过一个网关或者路由器,而网关或者路由器拥有一个能访问internetip地址,这样的网关和路由器就要在收发数据包时,对数据包的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到对方。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

实际问题

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

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

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


090814003749.jpg


<?xml:namespace prefix = v /><?xml:namespace prefix = o /><!--[if !vml]--><!--[endif]-->

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

<!--[if !vml]--><!--[endif]-->

090814003804.jpg



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

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

具体说明:

1VMware网络连接选择的是NAT方式。

2
VMware网络设置里的NAT项中查看VMnet8NAT的网关设置为192.168.X.2

3
、在windows中,查看所有的网络连接,你应该发现除了原有的网卡之外,又多了Vmnet1Vmnet8vmnet1hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。

4
、在windows主机上用ipconfig查看VMnet8IP地址,一般是192.168.X.1。此时VMnet8的设置应该是自动获取IP,现在改成静态IP,并把此IP直接填入VMnet8里,不设网关。

6
、在linux下把网卡IP设置成和VMnet8一个网段的IP192.168.X.Z/255.255.255.0)

7
、在linux下网关设置成刚才查看的那个IP192.168.X.2即可。

8
、在linuxDNSwindows主机的一样。

9
、在linux下运行命令service network restart重新启动linux的网络服务。( 要是这条重启命令不行就用 ifconfig eth0 down关闭
ifconfig eth0 up 感觉重启时多余的!)

10
、在linuxping 192.168.x.1,在windowsping 192.168.x.z 成功后证明主机和虚拟机已经可以互相访问了,现在也可以实现虚拟机共享主机ip上网了。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

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

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条