路由名称后缀(Name Suffix Routing)与林信任(Forest Trust)

当您由于环境需要,建立了林信任关系后,有没有注意到这个信任关系的属性中,有一个跟其他类型的信任关系不同的新增加的选项卡?他的名字是路由名称后缀 (Name Suffix Routing)

今天我们就来了解一下跨林路由名称后缀的作用,并且通过一个案例来分析一下在建立林信任的过程中,路由名称后缀的行为和它对跨林身份验证的影响。

 

什么是跨林路由名称后缀?

名称后缀路由机制可用于管理如何跨越通过林信任连接在一起的 Windows Server 2003及Windows Server 2008 林路由身份验证请求。为简化身份验证请求的管理,最初创建林信任时,默认情况下将路由所有唯一名称后缀。唯一名称后缀是林内不从属于任何其他名称后缀的名称后缀, DNS 林或域树名称。例如,DNS林名称microsoft.com 是 microsoft.com 林内的唯一名称后缀。

林可以包含多个唯一名称后缀,并且将每一个名称后缀都包含拥有同样名称后缀的所有子项。因此,在“Active Directory 域和信任关系”中,每个名称后缀的开头都显示一个星号 (*)。例如,如果您的林使用 *.microsoft.com 作为唯一名称后缀,那么将路由 microsoft.com 的所有子项 (*.child.microsoft.com) 的身份验证请求,因为其子域是 microsoft.com 名称后缀的一部分。

 如果在两个林之间存在林信任关系,那么可使用一个林中不存在的名称后缀将身份验证请求路由到第二个林中。当新的子名称后缀 (*.child.widgets.com) 添加到唯一名称后缀 (*.widgets.com)中时,子名称后缀将继承其所属的唯一名称后缀的路由配置。当您验证了信任关系后,建立林信任之后创建的任何新的唯一名称后缀都会显示在林信任“属性”对话框中。但是,在默认情况下将禁用对这些新的唯一名称后缀的路由。

 由此可见,这个路由名称后缀将直接影响林之间的Kerberos的认证过程,也将影响这个林信任是否起作用。既然他们如此重要,我们一定要确保他们加入到林信任的“属性”对话框中,并且保持他的状态处于“启用”状态。

那么,我们如何查看他的状态呢?我们又如何使其默认为“启用”呢?下面的案例将分享一个在建立林信任的过程中通过“确认”这个信任来开启路由名称后缀的方法。

 

如何通过确认信任关系来开启路由名称后缀?

我们假设有如下的场景:在环境中存在两个森林,名字分别为Matrix.com和Mask.com,并且在Mask.com这个森林中有另外一棵树,其根节点为Sun.int。默认情况下,在Mask.com和Sun.int之间存在着双向Tree-Root信任。如图所示:

现在,为了实现森林之间的资源共享,我们需要在Matrix.com 和Mask.com这两个森林中建立林信任关系。在建立林信任的过程中,选择了信任类型和认证范围之后,向导会要求你选择是否确认这个信任。

场景A------确认信任关系

如果你选择确认Mask.com的这个信任(包括这个森林其中的树根节点Sun.int),“Routed Name Suffixes”界面将会出现,并且让用户选择是否确认要此树根节点的路由名称后缀:

此时,森林内树的根节点的后缀名被包含在列表内,并且前面的勾默认为勾上的。当按下“Next”,此信任建立过程就将完成,除了林的后缀名*.mask.com之外,树节点Sun.int这个路由名称后缀(即*.Sun.int)的状态也将会设置为“启用”。如下图所示:

正如前面所说,林可以包含多个唯一名称后缀,并且将每一个名称后缀都包含拥有同样名称后缀的所有子项。所以,*.mask.com将路由 mask.com的他的所有子域 (*.child.mask.com) 的身份验证请求。

可是对于同一森林内的其他树来说,因为其(sun.int)没有跟森林(mask.com)共享一个后缀名,所以,为了验证请求能够成功到达该节点, 他的后缀名必须包含在这个列表中,并且状态为开启。

情况B------不确认信任关系

相反,如果我们在建立信任的过程中并没有确认此信任,那么“Routed Name Suffixes”界面将不会出现,在林信任建立完成后, 只有*.mask.com这个后缀路由被启用,而*.Sun.int这个后缀路由的默认状态为 “禁用”。

这里要提醒大家注意,在没有确认信任关系的情况下,这个路由的默认状态为“禁用”,但是不代表他以后不能被“开启”,我们只要进入这个界面,手动点击下面的“开启”按钮来开启他就可以了。

 

有经验的读者可能在以前的问题排错过程中,已经通过开启这个路由功能解决了一些跨林的身份验证的问题。下面给大家举一个例子来说明,如果这个状态为“禁用”,我们在Kerberos验证过程中可能遇到的问题的表现:

 

路由名称后缀为禁用的症状描述:

a. 在域“Sun.int”的域控中打开AD用户与计算机管理器,选择“change domain”,输入你想要连接的目标域名“Matrix.com”,然后按“OK”,你会遇到如下错误信息:

b. 当我们打开mmc,试着连接这个目标域的时候,我们会遇到下面的错误信息:

The domain <domain name> could not be found because:

Access denied

 

c. 对于以上两种情况,我们也可以在相应的系统日志中里看到相关的错误信息

 Log Name:      System

Source:        LsaSrv

Date:          28/10/2011 9:49:12 AM

Event ID:      40960

Task Category: None

Level:         Warning

Keywords:     

User:          SYSTEM

Computer:      <computer name>.<domain name>

Description:

The Security System detected an authentication error for the server cifs/<computer name>.<domain name>. The failure code from authentication protocol Kerberos was "The name or SID of the domain specified is inconsistent with the trust information for that domain.

 (0xc000019b)".

 

d. 分析出现问题时的网络抓包,可以发现从目标域的域控制器返回的Kerberos 的验证错误信息 KDC_ERR_POLICY

KerberosV5        KerberosV5:KRB_ERROR  - KDC_ERR_POLICY (12)

 

相信大家已经对路由名称后缀有一些了解了吧,期待下次再见。

 

 

谢谢,

冯绿音 | 企业平台支持部AD技术工程师 | 微软亚太区全球技术支持中心

 

本博文仅供参考,微软公司对其内容不作任何责任担保或权利赋予。