内容简介:最近在机房的服务器上装kvm虚拟主机。不经意间,上演了一场由MAC地址异常而引发的服务器与xshell之间的血案!查看/var/log/messages日志,发现有下面这样的报错信息,提示MAC地址有异常:
开场白
最近在机房的服务器上装kvm虚拟主机。
不经意间,上演了一场由MAC地址异常而引发的服务器与xshell之间的血案!
问题描述
在一台服务器上装了两个虚拟机,其中一台是从另一台上克隆的。克隆的虚拟机开机之后,发现ssh不能远程连接:
然后在虚拟机管理界面本地去连接上服务器排查:
查看IP地址,想确认xshell是不是连错了IP,找错了对象,却发现ifconfig居然查看不到IP??
图:
查看network的启动状态,看到的是绿油油的active状态。
然后又查看配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 ,检查IP。
配置明明是正确的啊,咋看不到IP呢?
查看/var/log/messages日志,发现有下面这样的报错信息,提示MAC地址有异常:
Jun 24 22:21:05 devops02 network: Shutting down interface eth0: ERROR : [/etc/sysconfig/network-scripts/ifdown-eth] Device has MAC address 00:00:00:00:00:00 Jun 24 22:21:05 devops02 network: 52:54:00:72:E3:FB, instead of configured address 52:54:00:32:43:34. Ignoring. Jun 24 22:21:05 devops02 /etc/sysconfig/network-scripts/ifdown-eth: Device has MAC address 00:00:00:00:00:00 52:54:00:72:E3:FB, instead of configured address 52:54:00:32:43:34. Ignoring. Jun 24 22:21:05 devops02 network: [FAILED]
问题排查
根据上面的报错信息,开始了排查的长征!
日志提示MAC地址异常,查看ifcfg-eht0配置的MAC地址是 HWADDR=52:54:00:32:43:34 :
然鹅,ifconfig显示出来的MAC地址却是 52:54:00:72:e3:fb !
图:
原来,是两边的MAC地址不一样,引起的问题!
原因分析
为什么会导致一台主机上有两个MAC地址?
原因是在KVM的界面克隆虚拟机的时候,有一个设置mac地址的“ Random MAC address ”按钮:
克隆主机的时候,因为害怕克隆主机和原始主机的mac地址产生冲突,所以在克隆的时候点了“ Random MAC address ”按钮,就随机生成了一个新的MAC地址 52:54:00:72:e3:fb 。
这个MAC地址就是后面在ifconfig里面看到的那个mac地址 52:54:00:72:e3:fb 。
而在克隆界面的旁边还有一个XML配置界面,里面也有一个MAC地址的配置:
XML界面的MAC地址<mac address='52:54:00:32:43:34'/>就是后面写入到配置文件ifcfg-eth0的MAC地址: 52:54:00:32:43:34 。
这就导致ifconfig和ifcfg-eth0两边的MAC地址不一致了。
另外:
测试了一下,即使在前面点了“ Random MAC address ”按钮,生成新的mac地址,再把新的MAC地址修改到后面的XML文件,然后再点击克隆主机。新克隆的主机ifcfg-eth0文件里面的MAC地址还是以前的 52:54:00:32:43:34 ,跟ifconfig的MAC地址也是不一样。还是要手动改配置文件。
在这之前也有在KVM上克隆了十几台服务器,但是以前都习惯于在刚刚克隆好主机之后,第一步就是删掉配置文件ifcfg-eth0文件里面的MAC地址和UUID地址,而恰好之前的原始主机配置文件ifcfg-eth0文件里面又配置了 DEVICE (关于DEVICE见后文),所以删掉配置文件的MAC地址之后,网卡就顺利起来了,并没有注意到克隆主机MAC地址不一致的问题。
解决方法
这个问题有两种解决方法:
1、修改配置文件ifcfg-eth0的MAC地址,改成和ifconfig一样的。然后再重启network:
2、删掉ifcfg-eth0里面的“HWADDR=52:54:00:32:43:34”这一行,重新添加一行“DEVICE=eth0”,然后重启network:
注意:
删了MAC地址之后,一定要确认配置文件上有DEVICE配置,否则启动network的时候,messages日志里面会有这样的报错:
Jun 24 22:24:40 devops02 network: Shutting down interface eth0: ERROR : [ipv6_test_device_status] Missing parameter 'device' (arg 1) Jun 24 22:24:40 devops02 ipv6_test_device_status: Missing parameter 'device' (arg 1)
上面两种解决方法都尝试过了,重启network,再查看IP地址,就显示正常了:
xshell再次远程连接已经OK:
结束语:
回顾上面的问题,小小总结:
1、ifconfig的MAC地址和ifcfg-eth0的MAC地址一定要相同;
2、如果在ifcfg-eth0里面删除了MAC地址,就要保证有DEVICE配置,因为 DEVICE 和 HWADDR至少得有一个;
3、“/var/log/messages”文件和Google是个好东西;
4、多踩坑,就会避免这种low low的尴尬。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Hash冲突解决方法
- 依赖冲突时的解决方法
- git 通过 SublimeMerge 处理冲突
- RecyclerView 、ViewPager 左右滑动冲突
- git 如何更可靠地解决冲突?
- 处理 WebView 与 ViewPager 滑动冲突
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ajax开发精要
柯自聪 / 电子工业出版社 / 2006 / 45.00
书籍目录: 概念篇 第1章 Ajax介绍 2 1.1 Ajax的由来 2 1.2 Ajax的定义 3 1.3 Web应用程序的解决方案 5 1.4 Ajax的工作方式 7 1.5 小结 8 第2章 B/S请求响应机制与Web开发模式 9 2.1 HTTP请求响应模型 9 2.2 B/S架构的请求响应机......一起来看看 《Ajax开发精要》 这本书的介绍吧!