跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中使用命名和目录服务 Oracle Solaris 11.1 Information Library (简体中文) |
4. 设置 Oracle Solaris Active Directory 客户机(任务)
11. 为使用 LDAP 客户机设置 Oracle Directory Server Enterprise Edition(任务)
使用 Oracle Directory Server Enterprise Edition 进行 NIS 到 LDAP 转换的最佳做法
使用 Oracle Directory Server Enterprise Edition 创建虚拟列表视图索引
避免 Oracle Directory Server Enterprise Edition 服务器超时
避免 Oracle Directory Server Enterprise Edition 缓冲区溢出
本节包括两个方面的故障排除:
有时,N2L 服务器会记录与内部 LDAP 问题相关的错误,并生成与 LDAP 相关的错误消息。尽管这些错误不是致命的,但是它们指明有问题需要检查。例如,N2L 服务器可能会继续工作,但是会提供过时或不完整的结果。
以下列表包括一些在实现 N2L 服务时可能遇到的常见 LDAP 错误消息。也包括错误说明、造成这些错误可能的原因和解决方案。
Administrative limit exceeded(超过管理限制)
错误号:11
原因: 执行的 LDAP 搜索大于目录服务器的 nsslapd-sizelimit 属性所允许的大小。将仅返回部分信息。
解决方法: 增大 nsslapd-sizelimit 属性的值,或者对失败的搜索实施 VLV 索引。
Invalid DN Syntax(DN 语法无效)
错误号:34
原因: 尝试写入的 LDAP 项的 DN 包含非法字符。N2L 服务器尝试对 DN 中生成的非法字符(如 + 号)转义。
解决方法: 检查 LDAP 服务器错误日志,找出写入的非法 DN,然后修改生成了非法 DN 的 NISLDAPmapping 文件。
Object class violation(对象类违规)
错误号:65
原因: 试图写入无效的 LDAP 项。通常,出现此错误是由于缺少 MUST 属性,以下任一情况都可能会导致缺少此属性。
NISLDAPmapping 文件中存在导致所创建的项缺少属性的错误
尝试向不存在的对象添加 AUXILIARY 属性
例如,如果仍未从 passwd.byxxx 映射建立用户名,向该用户添加辅助信息的尝试也会失败。
解决方法: 对于 NISLDAPmapping 文件中的错误,检查在服务器错误日志中写入的内容,以确定问题的性质。
Can't contact LDAP server(无法联系 LDAP 服务器)
错误号:81
原因: ypserv 文件可能未正确配置,指向了错误的 LDAP 目录服务器。或者,目录服务器当前可能未运行。
解决方法: 重新配置并确认。
重新配置 ypserv 文件,使其指向正确的 LDAP 目录服务器。
要确认 LDAP 服务器正在运行,请键入:
% ping hostname 5 | grep "no answer" || \ (ldapsearch -h hostname -s base -b "" \ "objectclass=*" >/dev/null && echo Directory accessible)
如果服务器不可用,则会显示以下消息:no answer from hostname。如果 LDAP 服务器有问题,则会显示以下消息:ldap_search: Can't connect to the LDAP server - Connection refused。最后,如果一切正常,则会显示以下消息:Directory accessible。
Timeout(超时)
错误号:85
原因: 通常,在从 DIT 更新映射时,LDAP 操作会超时。该映射当前可能包含过时的信息。
解决方法: 在 ypserv 配置文件中增大 nisLDAPxxxTimeout 属性的值。
运行 N2L 服务器时可能会出现以下问题。此处提供了可能的原因和解决方案。
映射文件 NISLDAPmapping 非常复杂。很多潜在的错误可能会导致映射工作不正常。请使用以下技术解决此类问题。
运行 ypserv -ir(或 -Ir)时显示控制台消息
描述: 控制台上显示了一条简单的消息,并且服务器退出(向 syslog 中写入了一条详细描述)。
原因: 映射文件的语法可能不正确。
解决方法: 检查并更正 NISLDAPmapping 文件中的语法。
NIS 守护进程在启动时退出
描述: 运行 ypserv 或其他 NIS 守护进程时,记录了一条与 LDAP 相关的错误消息,并且守护进程退出。
原因: 这可能是下列某一原因造成的:
无法联系 LDAP 服务器。
在 NIS 映射或 DIT 中找到的项与指定的映射不兼容。
尝试对 LDAP 服务器执行读写操作时返回错误。
解决方法: 检查 LDAP 服务器上的错误日志。请参见常见的 LDAP 错误消息。
NIS 操作产生意外的结果
描述: NIS 操作没有返回预期的结果,但是没有记录错误。
原因: LDAP 或 NIS 映射中可能存在不正确的项,这会导致映射无法按照预期的方式完成。
解决方法: 检查并纠正 LDAP DIT 中以及 N2L 版本的 NIS 映射中的项。
检查 LDAP DIT 中的项是否正确,并根据需要更正这些项。
如果使用的是 Oracle Directory Server Enterprise Edition,请运行 dsadm startconsole 命令启动管理控制台。
检查 /var/yp 目录中 N2L 版本的 NIS 映射是否包含预期的项,方法是将新生成的映射与原来的映射进行比较。请根据需要更正这些项。
# cd /var/yp/domainname # makedbm -u test.byname # makedbm -u test.byname
检查映射的输出时请注意以下情况:
在这两个文件中,各项的顺序可能不同。
在对输出进行比较之前,请使用 sort 命令。
在这两个文件中,空格的用法可能不同。
在对输出进行比较之前,请使用 diff -b 命令。
NIS 映射的处理顺序
描述: 发生对象类违规。
原因: 当运行 ypserv -i 命令时,将读取每个 NIS 映射并将其内容写入到 DIT 中。同一个 DIT 对象的属性可以由多个映射创建。通常,通过一个映射来创建该对象的大部分属性,包括该对象的所有 MUST 属性。其他映射则负责创建其他 MAY 属性。
映射是按照 nisLDAPobjectDN 属性在 NISLDAPmapping 文件中的出现顺序来处理的。如果包含 MAY 属性的映射在包含 MUST 属性的映射之前处理,会发生对象类违规。要了解关于该错误的更多信息,请参见常见的 LDAP 错误消息中的错误 65。
解决方法: 将 nisLDAPobjectDN 属性重新排序,以便按照正确的顺序处理这些映射。
临时解决方法是多次重新运行 ypserv -i 命令。每次执行该命令,都会增加更多的 LDAP 项。
注 - 如果映射方式会导致不能从至少一个映射创建某个对象的所有 MUST 属性,则不支持以这种方式进行映射。
服务器超时。
原因: N2L 服务器在刷新映射时,可能会对 LDAP 目录进行大量访问。如果 Oracle Directory Server Enterprise Edition 的配置不正确,该操作可能会因超时而无法完成。
解决方法: 要避免目录服务器超时,请手动或者通过运行 idsconfig 命令修改 Oracle Directory Server Enterprise Edition 属性。有关详细消息,请参见常见的 LDAP 错误消息和使用 Oracle Directory Server Enterprise Edition 进行 NIS 到 LDAP 转换的最佳做法。
ypserv 命令启动,但未响应 NIS 请求。
原因: N2L 服务器锁文件没有正确同步对 NIS 映射的访问权限。这种情况绝对不应发生。
解决方法: 在 N2L 服务器上键入以下命令:
# svcadm disable network/nis/server:default # rm /var/run/yp_maplock /var/run/yp_mapupdate # svcadm enable network/nis/server:default
N2L 服务器死锁。
原因: 如果 hosts、ipnodes 或 ypserv 文件中未正确列出 N2L 主服务器和 LDAP 服务器的地址,则可能会出现死锁问题。请参见NIS 到 LDAP 转换的先决条件,了解关于 N2L 正确地址配置的详细信息。
有关死锁情况的示例,请考虑以下一系列事件:
一台 NIS 客户机试图查找一个 IP 地址。
N2L 服务器发现 hosts 项已过时。
N2L 服务器尝试从 LDAP 更新 hosts 项。
N2L 服务器从 ypserv 获取其 LDAP 服务器的名称,然后使用 libldap 进行搜索。
libldap 尝试通过调用名称服务转换,将 LDAP 服务器名称转换为 IP 地址。
名称服务转换可能会对 N2L 服务器进行 NIS 调用,而服务器死锁。
解决方法: 在 N2L 主服务器上的 hosts 或 ipnodes 文件中列出 N2L 主服务器和 LDAP 服务器的地址。必须将服务器地址列在 hosts、ipnodes 还是同时列在这两个文件中,取决于这些文件配置为以何种方式解析本地主机名。另外,请检查 svc:/network/name-service/switch 服务的 config/hosts 属性在查找顺序中是否将 files 列在了 nis 之前。
此死锁问题的另一种解决方案是在 ypserv 文件中列出 LDAP 服务器的地址,而不是其主机名。这意味着 LDAP 服务器地址将列在其他位置。因此,更改 LDAP 服务器或 N2L 服务器的地址会使工作量稍有增加。