域成员服务器怎么会突然脱域?
大概去年 Q4 的时候,写了一个脚本用来监控每台虚拟化宿主机上的虚拟机数量,包括总数量、运行状态的数量,非运行状态的数量。 当时的主要初衷是有团队成员创建虚拟机的时候,同组内的同学可以及时收到 zabbix 通知级别的告警,本来只是写着玩,在管理方面也许能起到辅助作用。
没想到这个通知级别的告警这次竟起到了大的作用。
问题发现
4 月 28 日 19:11 分,组内一名同学注意到了 1 条通知级别告警,内容是"一台虚拟化宿主机上的虚拟机数量突然变成 0 了"。
但是并没有服务或者服务器 down 的告警。
于是该同学打算登陆服务器一探究竟。结果却发现服务器不能使用域管理员远程登陆了,提示该服务器和域之间失去信任关系。本地管理员登陆则提示"远程计算机需要网络级别身份验证,而您的计算机不支持该验证。"
那只能通过远控卡登陆查看下原因了,结果发现该机器是一台因为远控卡坏掉没法使用的。也因此,该服务器上没有运行生产环境,都是测试用的 demo 环境。
折腾一番后,最终也没能修复远程连接的问题。后来我也尝试连接了下,未果。只能去现场了。
原因分析
通常,一台加了域的计算机离开域 30-60 天的时间,会失去和域的信任关系。为什么离开时间是个范围而不是固定的呢?因为加了域的计算机也有个计算机账号,对应着一个计算机账号密码(区别于用户的密码),这个密码默认 30 天修改一次,相当于有效期 30 天,这个密码会分别被存在计算机本地和 AD 里面。
举个例子说明:
计算机 A 在 5 月 1 日这天修改了计算机密码为 passwd01(计算机本身会保留两份密码,之前的和修改后的),在 20 号这天离开了域,但此时密码有效期还有 10 天。10 天后(6 月 1 日)计算机会再次修改密码为 passwd02,但是此时已脱离了域,无法同步到 DC,所以 DC 端的密码还是 passwd01。passwd02 的有效期截止日为 6 月 30 日。7 月 1 日会进行第三次修改 passwd03。再第三次修改之前,计算机登陆域的时候会先用 passwd02 去尝试,失败的话,会用 passwd01,这样成功登陆域,从而不会脱离域。第三次修改后计算机端只保留了 passwd02 和 passwd03,而 DC 端还是 passwd01。这时候就会脱离域了。
通常脱离域的处理也比较简单,退出域重新加一下就可以了。
脱域的前提是什么:加入域的机器长期断网或联系不到 DC(比如电脑长期不在办公区)。
疑点来了:这是台域成员服务器,24h 在线,和 DC 在一个二层网络内,和 DC 一直是通的,不应该出现脱域这样的问题。
处理过程
到了现场后,连接好显示器、键盘、鼠标。
使用域管理员登陆:提示和域失去信任。
使用本地管理员登陆:正常登陆。
配置远程桌面,取消 NLM 级别认证。未奏效。
查看 windows 日志,也只有联系不到域的日志,没有更多有效的信息。
尝试退域,重新加域报错:"过程号超出范围" ,即"procedure number out of range"。这个报错从来没遇到过,网上遇到这类报错的也几乎没有。找不到匹配的解决方案。
尝试 powershell 命令强制退域
尝试 powershell 强制直接加入工作组。命令运行失败。提示联系不到域。
难道是杀毒软件造成的?停用杀毒软件也未奏效。
之后又是查阅各种资料。毫无收获。难道是安全补丁造成的?4 月 13 日微软发布了月度补丁,14 日就安装了,隔了半个月了,估计大部分人都不会想到可能是补丁问题。但是实在找不出问题了,死马当活马医,抱着试试看的态度。
将 4 月的安全补丁 kb5012639 卸载后重启。发现可以正常退域了,将服务器重新加入域,让用户检查 demo 环境,都恢复正常了。
和组内同学讨论后商定,明天将该补丁从所有服务器卸载。
总结
年初至今 5 个月,微软每个月发布一次补丁,已经遇到 2 次因补丁有问题需要卸载了。也许是概率性问题不太好发现,所以官方也没有测试出来吧。果断将潜在风险同步到业内相关 IT 人员。
在后续 Windows 方面遇到一些罕见的异常问题,在官方信息量有限,又查不到原因的情况下,补丁也许就是最后一个可能潜在的原因。
版权声明: 本文为 InfoQ 作者【BUG侦探】的原创文章。
原文链接:【http://xie.infoq.cn/article/0a2049b699fbc0a83d43698a2】。文章转载请联系作者。
评论