虚拟机centos7 识别不出网卡的解决方案
问题提出
之前在VMware安装centos 7(网络连接采取Nat方式),进入Centos 7后成功开启了sshd服务,然后在主机(我的windows系统)用puTTY软件可以ssh到虚拟机上。后来在用华为模拟软件ensp配置路由器时,因为需用到(虚拟/真实)网卡来连接外网,我在弄的时候不小心将VMnet8的配置搞乱了。所以,再次打开虚拟机时,我的Centos居然连不上网了!
于是,我一步步排查,终于找到了原因,并解决了识别不出网卡问题。
在这篇博客中,我将完成两件事:
- 解决上网问题;
- 开启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打开网络设置页面看到的。其中有两张虚拟网卡:
- VMnet1对应仅主机模式;
- 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:
- network: Network initscript是一个基本的网络接口start/stop框架,它是initscripts包的一部分;
- NetworkManager: NetworkManager是一套协作网络管理工具,旨在消除手动编辑网络配置文件的繁琐,使网络简单直接。 NetworkManager提供灵活的管理界面,包括GUI,CLI和TUI选项,用于管理本地,远程连接等等。
- 在系统启动过程中,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 识别不出网卡的解决方案的更多相关文章
- 【VMware虚拟机】【克隆问题】在VMware 9.0下克隆CentOS6.5虚拟机无法识别eth网卡
[日期]2014年4月23日 [平台]windows 8 vmware workstation 9.0 centos 6.5 [日志]1)执行ifconfig命令,输出: 2)查看/etc/udev/ ...
- vmware创建虚拟机不识别网卡
今天在给虚拟机添加网卡的时候,出现了虚拟机不识别新加的网卡,很纳闷,连的一样的端口组,为什么新加的网卡识别不了呢 然后查看pci设备,发现网卡的驱动为 AMD 79C970 PCnet32- LANC ...
- VMware虚拟机无法识别U盘解决方案
1. 本机情况: Win7操作系统,VMware虚拟机,虚拟机版本:VMware 7.1,安装Ubuntu10.10,现要求在主机上插入U盘,在虚拟机中显示. 2. 遇到问题: U盘只在Win7主 ...
- CentOS7内置Realtek网卡驱动r8169降级r8168
前几天装了几台服务器测试,在使用的过程中发现,每次重启系统,登录界面会弹出网卡提示 "r8169 0000:02:00 eth0 Invalid ocp reg 17758!" ...
- 【原创】如何设置Virtual Box虚拟机CentOS7为静态IP地址
如何设置Virtual Box虚拟机CentOS7为静态IP地址 最近要搭建一个Kubernetes集群,需要设置虚拟机为静态IP地址不变.翻了一些资料,参差不齐,有些也比较过时了.自己实测总结了一下 ...
- Centos7 / RHEL 7 双网卡绑定
http://www.cnblogs.com/hukey/p/6224969.html 1. 简要 双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用 ...
- CentOS7下,安装网卡驱动,命令行手动连接WIFI指导
买了一个无线网卡,型号为TL-WN823N,谁知道在CentOS下没有驱动 于是开始了无线上网的漫漫征途 经历了无数个坑啊,解决了一个又一个的问题啊 到最后ping通的时候成就感简直爆棚 文章结构简介 ...
- 虚拟机Linux与本地虚拟网卡配置---NAT链接方式
虚拟机Linux与本地虚拟网卡配置---NAT链接方式 **********这是我亲自尝试多次实践出来的结果,不是复制粘贴************************* 首先进行初始化,这样避免有 ...
- 【原创】主机不能访问虚拟机CentOS7中的站点
主机不能访问虚拟机CentOS7中的站点 ================================ 虚拟机上装好了centos7,并配好了nginx+php+mysql,但是本机就是无法访问. ...
随机推荐
- linux查看端口占用程序
netstat -apn 查看所有进程和端口的使用情况,看到9000端口和28080端口被java程序占用,PID分别为17607,1442 ps -aux|grep 17607 ps -aux|g ...
- php概率
/* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在 ...
- C语言:将3*4矩阵中找出行最大,列最小的那个元素。-将低于平均值的人数作为函数返回值,将低于平均分的分数放入below数组中。
//将3*4矩阵中找出行最大,列最小的那个元素. #include <stdio.h> #define M 3 #define N 4 void fun(int (*a)[N]) { ,j ...
- 「JSOI2015」送礼物
「JSOI2015」送礼物 传送门 看到这题首先想到分数规划. 我们发现对于当前区间,如果它的最大值和最小值不是分居区间的两个端点的话,那么我们显然可以把两端多出去的部分舍掉,因为,在区间最大值最小值 ...
- Python - 关于属性访问的优先级,属性访问顺序,python attributel lookup,类和实例访问属性的顺序
object.__getattribute__(self, name) 类中的数据描述符 object.__dict__.get(name) 自身属性字典 object.__class__.__dic ...
- Node.js 服务端处理图片
Node 服务端处理图片 服务端进行图片处理是很常见的需求,但是Node在这一块相对来说比较薄弱.找了几个比较常见的模块来解决问题. gm GraphicsMagick for node 使用Open ...
- DOCKSWARM服务网络原理
如图所示,我们将在 swarm 集群中部署 “client” 服务 和 “vote” 服务,其中 “vote” 服务部署多个副本. 客户端请求 “vote” 服务时,输出结果中包含服务端的容器 ID, ...
- 18 JavaScript字符串方法
indexOf():从头到尾进行检索.返回指定文本在字符串最后一次出现的索引,否则返回-1.可以指定第二个参数作为起始位置. lastIndexOf:从尾到头进行检索.返回指定文本最后出现的位置,否则 ...
- Ext插件中控件的xtype和类的对应关系总结
xtype Class ------------- ------------------ box Ext.BoxComponent button Ext.Button buttongroup Ext. ...
- oracle误操作表数据--回退(闪回)被提交后的数据
// 查询该时间段 这个表的状态 (就是表状态正常的时刻 下面的时间仅用于举例) select * from 表名 as of timestamp to_timestamp('2019-09-26 1 ...