现象:
之前项目组联调过程中,大家都需要通过本地主机的SecureCRT客户端远程连接到CentOS服务器。在实验楼经历一次停电后,大家发现无法用SecurtCRT远程连接到服务器。多次尝试发现偶尔能够连上,但是过一会后被强制断开。有时候尝试连接会报connection was reset。
解决:
当时觉得现象太奇怪了,一会能连上,一会连不上。通过查看sshd服务、网络连接、防火墙、抓包、看日志等等能试的都试了,没有发现什么问题。并且发现telnet、ftp等其他连接也不稳定,出现同样的问题。猜测可能是系统配置的问题。突然想到是不是服务器IP地址冲突了,于是将服务器的网线拔掉,再ping服务器的地址,发现还是能够ping通,这就表明的确是IP地址冲突啦。最终发现是一个本地网络上一个宿主机中的虚拟机的IP地址和服务器的地址冲突了。
解释:
当本地网络上的虚拟机和服务器的IP地址冲突时,我们的主机在通过ARP解析对方的MAC地址时,由于MAC地址老化的影响,可能会一会解析到服务器的MAC,一会又解析到虚拟机的MAC。如果本地主机解析到的是服务器的MAC,那么此时能够连接上,如果解析的是虚拟机的MAC,那么就会连不上。当在保持ssh连接过程中出现MAC的变化时,就会出现connection was reset的现象。