问题提出

之前在VMware安装centos 7(网络连接采取Nat方式),进入Centos 7后成功开启了sshd服务,然后在主机(我的windows系统)用puTTY软件可以ssh到虚拟机上。后来在用华为模拟软件ensp配置路由器时,因为需用到(虚拟/真实)网卡来连接外网,我在弄的时候不小心将VMnet8的配置搞乱了。所以,再次打开虚拟机时,我的Centos居然连不上网了!

于是,我一步步排查,终于找到了原因,并解决了识别不出网卡问题。

在这篇博客中,我将完成两件事:

  1. 解决上网问题;
  2. 开启sshd服务,让主机ssh到虚拟机上。

解决上网问题

虚拟机网络初始配置

我的虚拟机是采取NAT方式联网的。注意:如果你是使用Host-only或者桥接方式,这篇文章可能只能给你提供一个思路。

寻找问题原因

出现不能上网,一般我们会检查是不是VMware本身的网卡是不是有问题。我检查了几遍,并且另外安装一个centos 7系统,发现能上网。所以100%肯定是我这个Centos 7系统网络设置有问题!所以我先查看一下电脑有没有获取到正确的ip。于是,首先想到的命令是:ifconfig:

[root@localhost ~]# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 448 bytes 38976 (38.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 448 bytes 38976 (38.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

上面列出的lo(loopback)网卡是用于环回地址的。virbr0是网桥的网卡。而我们需要的是与VMnet8对应的那张网卡。

下图是在windows打开网络设置页面看到的。其中有两张虚拟网卡:

  1. VMnet1对应仅主机模式;
  2. VMnet8对应Nat模式,也就是我们在Centos 7中需要的与之对应的网卡

很明显,那张网卡还没开启。于是,我给ifconfig加一个参数-a:

[root@localhost ~]# ifconfig -a
ens33: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:0c:29:bd:21:c3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 448 bytes 38976 (38.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 448 bytes 38976 (38.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

从输出中,我很快锁定了一张网卡:ens33。但我要测试到底是不是这张网卡。一般网卡的相关文件都是放在/etc/sysconfig/network-scripts/下:

[root@localhost ~]# ls -al /etc/sysconfig/network-scripts/ | grep ens33
-rw-r--r--. 1 root root 280 Nov 26 15:36 ifcfg-ens33

果然,就是它!!!先把它开启,然后在输入ifconfig命令查看:

[root@localhost ~]# ifconfig ens33 up
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::20c:29ff:febd:21c3 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:bd:21:c3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7 bytes 578 (578.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 460 bytes 39900 (38.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 460 bytes 39900 (38.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

开启之后,发现ens33这张网卡并没有获取到ip地址,网关等相关配置。到此,我们已经知道根本原因,就是Centos 7的网卡没有获取到ip!但现在ens33网卡已经开启,我想重启一下网络,看看能不能获取ip地址:

[root@localhost ~]# service network restart
Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details. [FAILED]

果然,还是失败了。我就想,为什么前几天安装得Centos系统不能上网,而现在安装的却能上网呢?中间只发生过一件可能影响网络的事:就是我更改过VMnet8的网络配置。


解决ip分配问题

经过搜索和排查,我发现在Centos系统上,管理网络的有两个工具:

  • network;
  • NetworkManager.

我去红帽官方查看了一下,找到了一篇post。我就简单说一下什么是network和NetworkManager:

  1. network: Network initscript是一个基本的网络接口start/stop框架,它是initscripts包的一部分;
  2. NetworkManager: NetworkManager是一套协作网络管理工具,旨在消除手动编辑网络配置文件的繁琐,使网络简单直接。 NetworkManager提供灵活的管理界面,包括GUI,CLI和TUI选项,用于管理本地,远程连接等等。
  3. 在系统启动过程中,NetworkManager的优先级大于network。也就是说NetworkManager先启动。

稍微总结一下,就是说NetworkManager比network更先进,启动顺序也在network前。我就有了一个大胆的猜想(注意,下面的一段话只是个人YY,请批判性阅读):

由于我们是虚拟机环境,外面的虚拟网卡已经有能力通过dhcp等协议将网络ip等必要东西分配好,而且networkManager是新的东西,可能在虚拟机上兼容不太好。你平时用不影响,但一旦你更改了VMnet8等相关虚拟网卡,NetworkManager可能识别不出,就无法分配到ip,而且由于它先启动,然后它挂了,但它还在占用这个分配ip的功能,进而network无法顶替,也就是冲突了。

接下来,我要关闭NetworkManager:

[root@localhost ~]# systemctl stop NetworkManager    //停止NetworkManager
[root@localhost ~]# systemctl disable NetworkManager //进制开机启动
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.

此时,你会发现你电脑的网络GUI不见了(因为你关闭了NetworkManager):

做完这些,输入ifconfig看一下:

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.129 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::20c:29ff:febd:21c3 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:bd:21:c3 txqueuelen 1000 (Ethernet)
RX packets 261 bytes 16686 (16.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28 bytes 4549 (4.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Bingo!!!成了。

虚拟机centos7 识别不出网卡的解决方案的更多相关文章

  1. 【VMware虚拟机】【克隆问题】在VMware 9.0下克隆CentOS6.5虚拟机无法识别eth网卡

    [日期]2014年4月23日 [平台]windows 8 vmware workstation 9.0 centos 6.5 [日志]1)执行ifconfig命令,输出: 2)查看/etc/udev/ ...

  2. vmware创建虚拟机不识别网卡

    今天在给虚拟机添加网卡的时候,出现了虚拟机不识别新加的网卡,很纳闷,连的一样的端口组,为什么新加的网卡识别不了呢 然后查看pci设备,发现网卡的驱动为 AMD 79C970 PCnet32- LANC ...

  3. VMware虚拟机无法识别U盘解决方案

    1. 本机情况: Win7操作系统,VMware虚拟机,虚拟机版本:VMware 7.1,安装Ubuntu10.10,现要求在主机上插入U盘,在虚拟机中显示.   2. 遇到问题: U盘只在Win7主 ...

  4. CentOS7内置Realtek网卡驱动r8169降级r8168

    前几天装了几台服务器测试,在使用的过程中发现,每次重启系统,登录界面会弹出网卡提示  "r8169 0000:02:00 eth0 Invalid ocp reg 17758!" ...

  5. 【原创】如何设置Virtual Box虚拟机CentOS7为静态IP地址

    如何设置Virtual Box虚拟机CentOS7为静态IP地址 最近要搭建一个Kubernetes集群,需要设置虚拟机为静态IP地址不变.翻了一些资料,参差不齐,有些也比较过时了.自己实测总结了一下 ...

  6. Centos7 / RHEL 7 双网卡绑定

    http://www.cnblogs.com/hukey/p/6224969.html 1. 简要    双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用 ...

  7. CentOS7下,安装网卡驱动,命令行手动连接WIFI指导

    买了一个无线网卡,型号为TL-WN823N,谁知道在CentOS下没有驱动 于是开始了无线上网的漫漫征途 经历了无数个坑啊,解决了一个又一个的问题啊 到最后ping通的时候成就感简直爆棚 文章结构简介 ...

  8. 虚拟机Linux与本地虚拟网卡配置---NAT链接方式

    虚拟机Linux与本地虚拟网卡配置---NAT链接方式 **********这是我亲自尝试多次实践出来的结果,不是复制粘贴************************* 首先进行初始化,这样避免有 ...

  9. 【原创】主机不能访问虚拟机CentOS7中的站点

    主机不能访问虚拟机CentOS7中的站点 ================================ 虚拟机上装好了centos7,并配好了nginx+php+mysql,但是本机就是无法访问. ...

随机推荐

  1. 解决Vue 使用vue-router切换页面时 页面显示没有在顶部的问题

    有时候我们需要页面滚动条滚动到某一固定的位置,一般使用Window scrollTo() 方法. 语法就是:scrollTo(xpos,ypos) xpos:必需.要在窗口文档显示区左上角显示的文档的 ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 网格系统实例:堆叠的水平

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. [01]Binary Search二分查找

    Binary Search二分查找 作用:二分查找适用于有序的的数组或列表中,如果列表及数组中有n个元素,通过二分查找查询某一元素的位置需要的步骤是log2(n)(注:该log的底数是2) 1.Pyt ...

  4. 【JS 日期】获取当前日期时间

    获取当前日期时间 <!DOCTYPE html> <html> <head></head> <body> <script> wi ...

  5. Qt实现通用模板单例

    #include <QAtomicPointer> #include <QMutex> #include <memory> using namespace std; ...

  6. php 基础知识 常见面试题

    1.echo.print_r.print.var_dump之间的区别 * echo.print是php语句,var_dump和print_r是函数 * echo 输出一个或多个字符串,中间以逗号隔开, ...

  7. Python 爬取 热词并进行分类数据分析-[简单准备] (2020年寒假小目标05)

    日期:2020.01.27 博客期:135 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备](本期博客) b.[云图制作+数据导入] ...

  8. 【快学SpringBoot】SpringBoot+Docker构建、运行、部署应用

    前言 Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情.当前,前提是得有Docker的基础. 源码在文末 文 ...

  9. 登陆页面的Sql注入

    自己手工注入的知识比较薄弱,这里就记录一下注入过程 题目: .登陆页面,使用sql万能密码可以登陆账号,但是flag不会自己跳出来,出题人是想让我们手工注入 常用万能密码: 'or'='or' adm ...

  10. 5-2 使用antDesign的Table 及 modal(对话情景框) 功能

    1,进入antDesign官网,粘贴table代码 2,看代码各个部分实现什么功能,根据需求改代码 表格类似如下: 代码如下: const columns = [ { title: 'Name', d ...