KVM虚拟机MAC地址冲突,引发服务器对xshell说:Go away!

开场白

最近在机房的服务器上装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的尴尬。

解决问题参考:
https://bugzilla.redhat.com/show_bug.cgi?id=1331276

https://www.linuxquestions.org/questions/linux-newbie-8/etc-init-d-network-restart-failed-4175559158/

原文地址:https://blog.51cto.com/10950710/2413399

时间: 2024-08-27 17:13:00

KVM虚拟机MAC地址冲突,引发服务器对xshell说:Go away!的相关文章

Azure上Linux虚拟机Mac地址的持久化

有些用户在使用Azure Linux 虚拟机安装软件时,有些软件的license会和当前系统的mac地址绑定,那么在Azure VM重启,reszie(改变尺寸大小),停止然后再启动的时候,虚拟机的Mac地址会不会发生变化呢?Azure VM上的Mac地址是如何持久化的呢? ? 我们分VM在vNet和不在vNet中的情况来做一个测试. ? 不在vNet中的测试虚拟机 ? 我们快速创建一台测试的Linux Ubuntu虚拟机,不设置vNet, 意思是该虚拟机不在设定的vNet中,一般是作为测试使用

Azure 上 Linux 虚拟机 Mac 地址的持久化

有些用户在使用 Azure Linux 虚拟机安装软件时,有些软件的 license 会和当前系统的 mac 地址绑定,那么在 Azure VM 重启,reszie(改变尺寸大小),停止然后再启动的时候,虚拟机的Mac 地址会不会发生变化呢?Azure VM 上的 Mac 地址是如何持久化的呢? 我们分 VM 在 vNet 和不在 vNet 中的情况来做一个测试. 不在 vNet 中的测试虚拟机 1. 我们快速创建一台测试的 Linux Ubuntu 虚拟机,不设置 vNet, 意思是该虚拟机不

同源虚拟机MAC地址网络冲突

问题: 建立了一个linux系统的虚拟机,接着把虚拟机复制两份,分别打开两个虚拟机,会提示是 "移动"还是"复制",如果是"移动"则不会改变当前虚拟机的物理MAC地址,而另外一台虚拟机还是选择"移动"的话,则物理MAC地址跟前一台虚拟机都是同样的物理MAC地址,这样就会造成网络冲突,最后开启的虚拟机无法跟真实的物理机器进行网络通信. ? ? 解决:如果复制来于同一个源文件虚拟机,可以生成新的物理MAC地址来解决冲突问题. 原文

虚拟机下克隆CentOS引起的MAC地址冲突问题

今天ping地址一直ping不通,查了一下发现是新克隆的系统和之前的系统MAC地址是冲突的 1.首先ifconfig -a 查出系统真实的MAC地址 2.ifconfig eth0 down 3.vim /etc/sysconfig/network-scripts/ifcfg-eth0 4.将HWADDR=xxxx的那行修改为MACA=真实的MAC地址 5.ifconfig eth0 up 6.service network restart

抓取kvm虚拟机IP地址功能脚本

这个脚本是利用你前期抓取出来好的IP与mac地址对关系表,然后根据mac地址来找IP地址. 脚本如下: #!/usr/local/python3/bin/python3 import re,os,sys,time mac_add = [] vir_name = sys.argv[1] #打开给定的虚拟机名称的xml文件来查找mac地址 with open('/etc/libvirt/qemu/%s.xml'%vir_name,'r') as f: for line in f: line = li

CAN网络上新增加的设备与网络上已有设备MAC地址冲突的软件解决方案

? 已知 1号的CAN节点的地址是0x1f 2号的CAN 节点的地址是0x1f ? ? ? ? ? ? ? ? 要达到的要求是 假设 网络上 CAN1 节点已经工作了,我现在需要在网络上接入CAN2节点. 那么CAN2节点首次上电的时候 需要给网络上的其他CAN节点 发送 数据帧(数据帧叫检测ID号帧) ,该数据帧 要求 (网络上与CAN2 节点的物理MAC地址 相同的CAN节点) 发送 响应帧 (该响应帧 是 刚上电的CAN2节点,发送给网络上其他节点的响应帧 ,由其他节点处理以后的应答帧)

局域网内两台9303 的管理vlan mac地址冲突解决方法

公司内网是由多台9306组成的环形传输网络,近几天增加一个新的节点,将设备加入环网内发现 管理 vlan 99 下的 10.9.9.12 和 10.9.9.76(新增节点)在管理设备时 经常掉线,非常不稳定,通过排查发现 只有管理vlan 99 存在这个现象  其它业务vlan正常,业务也未受任何 影响,当时割接结束.过了几天问题越发严重,甚至有时这两台设备都无法管理,再次进行排查发现,是由于10.9.9.76 10.9.9.12 使用了相同的mac,导致同一个vlan 下的两个Ip 具有相同的

CentOS 6.9下KVM虚拟机通过virt-clone克隆虚拟机(转)

一.virt-clone概述 1.virt-clone作用简介 virt-clone主要是用来克隆kvm虚拟机,并且通过Options.General Option.Storage Configuration.Networking Configuration等不同选项对新的虚拟机进行一些特殊的定义. 2.virt-clone参数介绍 Options(一些基本的选项): --version:查看版本 -h,--help:查看帮助信息 --connect=URI:连接到虚拟机管理程序 libvirt

VMware 虚拟机修改MAC地址的方法

VMware VM所使用的OUI 按照VMware ESX 3的[Server Configuration Guide ]的说法,VMware的使用下面的三个OUI作为VM的MAC地址: 00:0C:29 – 用于自动生成的MAC地址 00:50:56 – 用于手动设置的MAC地址 但是在实际应用上,我发现00:50:56这一MAC地址段并不是完全用于手动设置的MAC地址: 00:50:56:00:00:00 – 00:50:56:3F:FF:FF这一段MAC地址可以用于手动设置的MAC地址 0