虚拟机VMware环境下Ubuntu上网的问题记录

前言

最近在复习嵌入式Linux的知识,在使用虚拟机下安装的Ubuntu时,发现原先能上网的Ubuntu现在不能上网了。经过一番设置以后,最终解决了问题,于是在博客上记录下相应问题的分析和解决过程。

1.遇到的问题

首先交代一下,我的虚拟机Ubuntu版本是14的,原先在家的时候配置过静态ip,ip为192.168.1.107,使用桥接方式上网,且上网是没问题的。回到学校之后发现不能上网了。

2.分析问题——从主机网络环境入手

归根到底,虚拟机上网是要借助主机的,因此主机的网络环境很关键。从家里到学校,毫无疑问,主机的网络环境肯定发生了变化,所以有必要先搞清楚当前主机的网络环境:
在这里插入图片描述
上图描述了主机的网络环境,当前主机使用无线局域网接入互联网,接下来查询一下主机的ip以及所属的网段,查询很简单,在win10的cmd环境下输入ipconfig,这时会出现很多条目,因为主机目前连接的是无线局域网,因此只需关注WLAN对应的条目,如下图所示:
在这里插入图片描述
主机的ip地址为192.168.2.108,显然与此时虚拟机的192.168.1.107不在同一个网段。联想到桥接模式的原理:桥接模式就是将主机网卡与虚拟机的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰[1]。也就是说,从外部看,桥接下物理主机和虚拟机相当于处于同一局域网的两台机器,两者肯定要处于同一网段。至此,已经找到了一个问题点。

3.解决问题——兵来将挡,水来土掩

根据上文的分析,我们发现问题可能是虚拟机下Ubuntu原先设置的静态ip与当前主机的ip不在同一网段,解决方法很简单,重新设置一下Ubuntu的静态ip

3.1 重设Ubuntu的静态ip

编辑相关的配置文件:vi /etc/network/interfaces
在这里插入图片描述
接着重启网卡或重启虚拟机使新的配置生效。这里将重启网卡的几种方式一并附上:


① service network restart(该方式似乎已不再被支持)

② ifdown/ifup

关闭网卡:ifdown eth0
开启网卡:ifup eth0

③ ifconfig

关闭网卡:ifconfig eth0 down
开启网卡:ifconfig eth0 up


重启网卡或虚拟机之后,在终端下使用ifconfig命令,可见ip已经正确设置:
在这里插入图片描述

3.2 再次检查虚拟机的网络设置

虚拟机是否选择了桥接模式?

重置静态ip之后,发现虚拟机下Ubuntu还是不能联网。为进一步排除问题,决定再次检查一下虚拟机的网络设置,点击虚拟机/设置
在这里插入图片描述
如上图,确实选择了桥接模式,但没有勾选复制物理网络连接状态选项,这个选项到底有什么用呢?查询VMware的手册workstation-pro-12-user-guide,里面有这么一段话:
在这里插入图片描述
关于IP地址续订,我在网上搜索了一些资料,个人对它的理解如下(上述理解可能有误,欢迎指正):


使用DHCP协议动态分配IP地址时,分配到的IP地址是有时间限制的,这个期限称为租约,租约到期后需要续租约,也即IP地址续订。这个过程一般是自动进行的,比如我们在开机的时候,自动获取IP地址时就会自动续租约。


这样看来,手册上关于复制物理网络连接状态的描述,表明该选项的作用是设备的网络发生切换时(比如原先连的wifi,之后仅有有线网络可用),自动的进行IP地址续订。因此该选项应该与我的Ubuntu不能上网没有关联,毕竟我是使用静态IP,而且连接实验室的wifi是常态,很少有网络切换的时候。所以这里判断虚拟机的网络连接设置是没问题的。

桥接模式本身有没有问题?

既然已经确定虚拟机的网络连接确实设置为了桥接模式,那么唯一需要排除的就是桥接模式本身是否存在问题。点击编辑/虚拟网络编辑器/更改设置,可见如下界面:
在这里插入图片描述
从上图可见,此时桥接到的网络设备是自动,这个自动又是什么含义呢?还是查看虚拟机的使用手册:
在这里插入图片描述
神一样的随机决定,这样一来真的就没办法判断虚拟机到底桥接到了哪个网络设备,所以决定这里不采用自动,而是手动指定,到底指定到哪个网络设备呢?这要看主机现在在使用哪个网卡上网:
在这里插入图片描述
之后重启虚拟机,再次尝试上网,ping www.baidu.com,这次得到的反馈是unknown host www.baidu.com,这应该是DNS的问题,尝试直接ping一个公网IP,比如阿里的DNS的IP223.5.5.5,发现可以ping通;再在主机上ping虚拟机,发现也可以ping通。至此网络已经通了,在外界看来,主机和虚拟机是同一局域网中的两台设备。

两个还不太明白的地方


① 原先在家的时候,我没有指定过桥接到的网络设备,那时应该也是自动选项,但却可以上网;
对此,猜测是在家的时候上网的网卡(无线网卡,没插网线)是唯一活动的网络适配器。而现在因为RJ45口插了网线,导致有线网卡也处于活动状态,随机桥接到有线网卡时就会导致无法上网的情况出现。(后续测试时,发现选择桥接到自动突然又可以上网了,-_-!!)

② 主机ping虚拟机ubuntu可以ping通,但反过来在虚拟机下ping主机的时候,得不到回复。


3.3 新的问题——unknown host www.baidu.com

这个问题几乎可以确定就是DNS配置的问题,先ping原先配置的DNS的IP地址,发现果然ping不通,重新配置DNS的IP之后,问题解决,网络环境变化后,虚拟机下Ubuntu终于可以上网了。这里将配置DNS的两种方法一并附上

① /etc/network/interfaces

在/etc/network/interfaces文件中添加一行:dns-nameservers xxx.xxx.xxx.xxx,这里的xxx.xxx.xxx.xxx是DNS的IP地址,不是叉叉叉。

② /etc/resolvconf/resolv.conf.d/base

在/etc/resolvconf/resolv.conf.d/base文件中添加一行nameserver xxx.xxx.xxx.xxx

PS:

还需要说明的是,在Ubuntu中可以通过查看**/etc/resolv.conf**文件,来获知当前的DNS设置,但修改该文件是无法实现DNS设置的,这个文件是根据真正的配置文件自动生成的。

参考文献

[1] https://blog.51cto.com/13648313/2164307
[2] workstation-pro-12-user-guide

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值