Vmvare下Linux上网问题解决办法

来源:互联网 发布:java中nested 编辑:程序博客网 时间:2024/06/08 10:30

Vmvare下Linux上网问题解决办法

前言:

         最近学习Fedora,挑了最新版的Fedora20 安装后发现上不了网,很是不爽。令我万万没想到是本以为简简单单的上网事情,却破费周折,前前折腾了三天才弄好。网上解决办法鱼龙混杂,对应具体情况各不相同,挨着试过之后也不得不感叹这真是个很闹心的事情。因此,为了让后来人能轻轻松松的解决虚拟机不能上网的问题,也为了做个笔记防止以后自己忘记,我特地写此总结记录各种解决办法,配有截图和详细操作方法,希望后来人不要像我一样受三天的折磨吧。

     

测试环境:

win7 64旗舰版,Vmvare Workstation 9.0, Fedora 20。

虚拟机联网原理:

      先来讲一下虚拟机联网的原理吧,懒得思考党可以直接下拉找解决办法。

      vmware通过虚拟网络组件把虚拟机器同真实的物理网络连接起来。

    虚拟网络组件主要有如下几种:

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

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

      如下图所示,虚拟机有这几种联网方式。我们只重点说一下Bridged(桥接),NAT,Host-only 这三种方式。

 

Bridged

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

Host-only

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

      此时,宿主机操作系统可以看到有一个虚拟的网络适配器。宿主机与虚拟机可以通信。很适合建立一个与外部网络隔绝的独立私有TCP/IP网络。虚拟机的IP地址由虚拟的DHCP服务器提供。这种连接方式结合 Windows上的网络共享的特性,就可以允许虚拟机连接到外部Internet。

NAT

         如果宿主机只有一个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个虚拟网络适配器。

 

联网解决办法:

         讲完上面这些知识,想必大家对虚拟机联网也应该有个基本的认识了。下面我们来说说几种主流的上网方式以及一些特殊情况的处理。

 

      讲之前先科普一些基础知识,以防影响大家的阅读。

      Gateway: 网关。现在主机使用的网关,一般指的是默认网关。 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。

      此外,一般猫的默认IP是:192.168.1.1,你的IP则可以设为192.168.1.X(X为1-225)子网掩码会自动生成为255.255.255.0,网关为:192.168.1.1,DNS可以不写,一定要写的话,括号之后,通过运行--输入CMD,打开DOS,输入IPCONFIG  /ALL,可以看到DNS SERVERS,即为DNS地址。

      Bridged方式:

         默认使用vmnet0。(如果此方法行不通,请尝试勾选第一个选项Bridged: Connected directly to the physical network)

        

         将虚拟机设置成使用dhcp方式上网。

     

windows下选择"自动获取ip"。

注意不要忘记开启windows和linux下开启dhcp服务,开启方法自行百度。

Host-only方式

         默认使用vmnet1。

     

      将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同。

      例如 vmnet1 ip :192.168.1.1,虚拟机设置: ip :192.168.1.100 ,gateway:192.168.1.1。

      这样就实现了虚拟机<--->主机 通信,但是 虚拟机<--->互联网 仍无法通信。还需要做以下操作。

      将主机上网的连接共享给虚拟机的本地连接。

比如:右击本地连接1(主机) ->属性 -> 高级 -> 勾选允许其他网络用户通过此计算机的Internet连接来连接,然后选择VMware Virtual EthernetAdapter for VMnet1(vmnet1)。

点击确定后如果出现报错“RPC 服务器不可用”,在服务那里把DNS Client设为启动再重试一遍即可。

如果出现 “ internet连接共享访问被启用时 出现了一个错误”,解决方法如下。

这个大多数都是没有启用 windows firewall 导致的,因为很多卫士什么的,都会禁用掉,只要启用就行了。启用的方法很简单:

一、点击开始按钮——搜索框中输入:服务,回车打开服务管理界面

二、找到windowsfirewall ,点击右边的启动即可。

如图:如果你当前没启用的话,左边显示的会是启用此服务,点击启用即可,可能需要重启方可生效

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:192.168.1.1gw :192.168.1.2,虚拟机设置: ip :192.168.1.3:192.168.1.2。

PS

关于vmnet1还是vmnet8,在安装虚拟机的时候有安装了两个本地连接,就是vmnet1和vmnet8。

关于优化:我在Vmware虚拟机里跑Fedora选择的是第三种:host-only联网方式。
这种方式用不到VMware Agent Service,VMware DHCP Service,VMware NAT Service,VMware USB Arbitration Service。

这4种服务,所以我都把它禁止掉了,然后我用的是vmnet1,所以vmnet8也被我停用掉。

这样VMware里的Linux也可以正常联网。

其他特殊问题:

         以上三种方法基本能解决大部分人的问题,如果还是不能联网,请参考以下条目。

      ①或许是防火墙限制,请关闭Windows 及 Linux 防火墙以及 第三方防火墙。

      Windows关闭方法自行百度。

      Linux关闭方法:

      1) 永久性生效,重启后不会复原

开启: chkconfig iptables on

关闭: chkconfig iptables off

2) 即时生效,重启后复原

开启: service iptables start

关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,

修改/etc/sysconfig/iptables文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

②使用了VMVARE绿色版

      一些简化版会去除一些功能,所以请使用完整版。

③相关服务未开启。

      VMware DHCP Service 和VMware NAT Service 具体操作如下: 开始---设置--控制面板---管理工具---服务。

④在校学生可能会受星空极速拨号软件的限制。

我平常就呆在俩地方,学校寝室和值班室。值班室是校园网,寝室是坑爹电信。本来在值班室调好的虚拟机回寝室后又不能联网了,研究发现是拨号软件限制了虚拟机的上网,无论是桥接使得虚拟机对外当做一台真实主机还是 host-only 对外隐藏虚拟机 用主机做网关 来联网,都不行。host-only 方法可以实现主机与虚拟机通信,但不能与网络通信,主要问题还是 不能使得 主机网络共享给 vmnet1。

使用NAT方式应该会可以,不过博主还没测试,最近一直没回寝室,╮(╯▽╰)╭。

 

Ok,写到这里差不多了,如果以后还遇到什么其他情况,我再进行补充。

                                     文/糖,真好吃

欢迎分享,转载请注明出处,谢谢。

 

0 0
原创粉丝点击