微软域控的这些问题
你忽略了吗?
最近西瓜皮在工作中
遇到了两个关于微软域控制器的问题
第一个是关于AD域控集成的DNS解析
第二个是现网计算机终端加入域之后脱域的问题
如果你是运维岗或者是即将成为运维岗的人,那么希望您花几分钟来了解一下这篇文章,也许会对你有一点点帮助。
先交代一下背景
现网有一台主域控制器在腾讯云,广州、广西、韶关均为子域控制器,定期与主域控同步数据,各个机构之间不能互访。
由于DNS记录也会同步到各个机构,机构之间配置的本地自定义的A记录互相同步后,导致DNS解析混乱,进而导致业务访问故障;
再者就是在计算机终端加入域之后,过一段时间后出现脱域导致无法登录域账户的现象(猜想是当终端选择了优先级权重相同的其他机构的域控制器进行通信,但是因为网络不通导致通信失败?)。
为了解决有关域控的问题,顺便了解了一下域控的工作机制与原理,觉得对我帮助还是挺大的,下面给大家分享一下。
域控
工作机制与原理
首先我们假设有两个站点分别为Redmond和Denver, 每个站点有两个域控制器,以实现 AD 服务的高可用性。
那么我们的属于Redmond站点的计算机是如何加入域控的呢?
Windows 系统使用 DC 定位器进程来查找 AD 域中最近的可用域控制器。它依赖于 DNS 解析以及 AD 站点和子网配置进行标识。当集成了 AD 的 Windows 计算机启动时,将执行以下操作以查找最近的域控制器:
01
Windows 计算机发送 DNS 查询
以请求 _ldap._tcp.dc._msdcs 的 DNS 解析。domain.com(示例:_ldap._tcp.dc._msdcs.contoso.com) SRV 记录(SRV记录的作用是说明一个服务器能够提供什么样的服务,域内的计算机要依赖DNS的SRV记录来定位域控制器!)
02
DNS 服务器进行响应
DNS 服务器使用已注册的 DNS 记录列表进行响应(这些记录包含 AD 域中的域控制器列表)
03
Windows 计算机查看SRV记录列表
并根据分配给记录的优先级和权重选择一个记录。它将 然后查询 DNS 服务器以获取所选域控制器的IP地址
04
DNS 服务器检查域控制器的 A 记录
DNS 服务器检查域控制器的 A 记录并使用 IP 地址进行响应
05
Windows 计算机联系选定的域控制器
Windows 计算机联系选定的域控制器并启动与其通信
06
域控制器检查 Active Directory 站点
启动通信时,选定的域控制器将检查客户端计算机是否属于其 Active Directory 站点。这是通过将客户端计算机的 IP 地址与 Active Directory 配置的站点和子网进行比较来完成的。
在这里,将有两种可能的情况:
一、Windows 计算机和选定的域控制器属于同一 Active Directory 站点:在此情况下,将发生以下情况:
选定的域控制器为客户端计算机提供站点名称
Windows 计算机缓存其 AD 站点的名称和所用域控制器的名称。只要所选域控制器可用,就会使用它。Windows 计算机不再需要在每次需要时重新执行本地化过程 与域控制器通信。
二、Windows 计算机和选定的域控制器不属于同一 Active Directory 站点:在此情况下,将发生以下情况:
01
域控制器为客户端计算机提供站点名称
选定的域控制器为客户端计算机提供站点名称,并通知它不是最近的域控制器
02
Windows 计算机发送 DNS 查询
Windows 计算机发送 DNS 查询以请求DNS 解析为ldap._tcp.Computer_Site_Name._sites.dc._msdcs.domain.com(例如:_ldap._tcp.denver._sites.dc._msdcs.contoso.com) SRV 记录
03
DNS 服务器进行响应
DNS 服务器使用已注册的 DNS 记录列表进行响应(这些记录包含 AD 站点中的域控制器列表)
04
Windows 计算机查看 SRV 记录列表
Windows 计算机查看 SRV 记录列表,并根据分配给记录的优先级和权重选择一个记录。然后,它将查询 DNS 服务器以获取所选域控制器的 IP 地址
05
DNS 服务器检查域控制器的 A 记录
DNS 服务器检查域控制器的 A 记录并使用 IP 地址进行响应
06
Windows 计算机联系选定的域控制器
Windows 计算机联系选定的域控制器并启动与其通信
注1:如果 Windows 计算机无法与选定的域控制器通信,它将尝试根据分配给 SRV 记录的优先级和权重联系另一个域控制器。
注2:如果 Windows 计算机已缓存其 AD 站点,并且想要本地化新的域控制器(例如:当前正在使用的域控制器不再可用),则它将直接从步骤 7 开始(我们参考 到上图所示的步骤)
注3:Windows 计算机 AD 站点存储在以下注册表项中:HKLM\System\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteName
问题
解决思路
总结起来用通俗易懂的话概括就是,计算机终端先通过DNS查询SRV记录,然后查看SRV记录列表根据优先级与权重选择一个记录,进一步查询获取控制器的IP,然后与控制器完成通信,并产生缓存信息。
在了解了以上工作原理之后,再回过头来看问题
(1) 由于各个机构之间是网络隔离的,为了规避计算机终端查询到其他机构域控制器的SRV记录,将它的梦想扼杀在摇篮里,那么是否可以做到修改本地域控制器的SRV/DNS记录,但是不同步到其他机构,也就是子域DNS不同步到主域或者是其他子域呢????以实现本地域控制器DNS的A记录个性化定制。
理论上说是可以的,
主域控上的所有DNS区域都会自动复制过来----如果DNS创建时勾选了AD集成, 他就会复制到域或林中所有的DC上。
是否复制到域控决定于这个DNSzone是否是AD集成的。
以下西瓜皮做了验证:
如韶关新建了两个主要区域做测试
南宁帮忙在南宁子域控上查看发现确实只同步了sgtest1.com,没有同步非集成区域sgtest.com
同理,可以在本地域控将主区域改成非集成区域,删除其他机构的A记录和SVR记录,即可解决其他机构新建自定义的主区域同步到其他机构的问题,以及加域的时候查询到其他机构域控的SVR记录的问题!!
(2) 另外,如果想让终端不查询其他域控制器,或者还可以通过修改注册表指定本地计算机的AD站点(猜想,暂未验证)
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
关于最近遇到的域控问题,
就此记录分享一下吧,
如果文中有错误,
还请指正一下。
之后打算分享个用power shell写的自动加域的脚本。