很多企业在部署 LDAP 服务器的时候,都会遇到一个头疼的问题:客户端总是连不上。有时候是登录时报错,有时候是服务根本起不来,甚至 ping 得通服务器,但 LDAP 客户端死活不响应。小编当初第一次搭 OpenLDAP 的时候,就被这个问题折磨了一整天。其实 LDAP 连接失败的原因并不复杂,大多集中在配置、网络和认证这几个点。今天就带大家逐一分析,并给出解决思路。
一、LDAP服务器连接失败的常见原因
导致连接失败的情况比较多,最典型的几个包括:
- 网络不通:端口没开、防火墙拦截,或者安全组没有放行,导致外部访问不到 389/636 端口。
- 服务未启动:OpenLDAP/Active Directory 没正常运行,或者 slapd 进程挂掉了。
- 地址或端口错误:连接时写错了 IP/域名,或者明明是 LDAPS(636)却用成了 LDAP(389)。
- 认证失败:用户名(Bind DN)写错、密码错误,或者绑定账号权限不足。
- TLS/SSL 问题:证书配置错误,客户端不信任服务端证书,导致加密连接失败。
小编踩过的坑里,最常见的就是 端口没放行 + Bind DN 配置错,基本占了一半的问题来源。
二、排查和解决方法
当 LDAP 无法连接时,可以从以下几个步骤去排查:
- 检查端口
在服务器上执行:
netstat -tulnp | grep slapd
确认 slapd 是否监听在 389(LDAP) 或 636(LDAPS) 端口。然后用客户端 telnet IP 389
或 telnet IP 636
测试连通性。
- 确认服务是否运行
Linux 上用:
systemctl status slapd
如果服务挂了,先重启:
systemctl restart slapd
- 验证账号密码
用 ldapsearch 命令测试:
ldapsearch -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=example,dc=com" -w 密码 -b "dc=example,dc=com"
如果能返回结果,说明认证没问题;报错则需要检查 Bind DN 格式和密码。
- 排查证书问题(LDAPS)
确认证书路径和权限正确,客户端需要信任颁发机构。如果是自签证书,要在客户端导入 CA。 - 查看日志
OpenLDAP 默认日志在/var/log/syslog
或/var/log/messages
,Active Directory 在事件查看器。日志里一般会有更具体的错误提示。
三、LDAP 常见错误代码对照表
在排查 LDAP 连接失败的时候,经常会遇到一些数字代码报错,这些代码其实对应了具体问题。小编帮大家整理了一份常见错误对照表,遇到的时候能快速定位:
错误代码 | 含义 | 常见原因 |
---|---|---|
32 | No Such Object | 绑定的 DN 或查询的 Base DN 不存在,路径写错 |
49 | Invalid Credentials | 用户名或密码错误,Bind DN 格式错误也会报这个 |
50 | Insufficient Access | 权限不足,账号没有执行该操作的权限 |
52e | Invalid Credentials (AD 专用) | Active Directory 中的认证失败 |
68 | Entry Already Exists | 试图添加的对象已存在 |
80 | Other / Unknown Error | 其他未知错误,通常需要查看日志定位 |
525 (AD) | User Not Found | Active Directory 中没有找到用户 |
530 (AD) | Not Permitted to Logon at This Time | 用户不允许在该时间段登录 |
773 (AD) | User Must Reset Password | 用户必须重置密码 |
📌 小编经验:报 49 是最多的,基本都是 Bind DN 写错或者密码不对;如果是 32,十有八九是你写的 dc=xxx,dc=com
路径和实际目录不匹配。
四、小编经验分享
很多朋友在遇到 LDAP 连不上时,最想知道的是:“到底是服务器问题还是我客户端配置问题?”。其实有一个小技巧:先在服务器本机上测试,再在远程客户端测试。如果本机都连不上,那一定是服务挂了或者配置错了;如果本机能连,远程不行,那大概率是防火墙或网络没放行。
还有一点别忽视:Bind DN 的格式必须完全正确,比如 cn=admin,dc=example,dc=com
,哪怕少了一个逗号都会报错。小编就曾经因为多写了个空格,硬是排查了半天。
五、为什么要重视 LDAP 的稳定性?
LDAP 在很多企业里就是核心认证中心,一旦挂掉,所有依赖的服务都可能无法登录。比如邮件系统、VPN、GitLab、办公系统,全部会报错。这也是为什么很多公司会在生产环境里做 双机热备、主从同步,甚至用 Keepalived 做高可用。
小编的建议是:别等出问题了才去修,平时就要把监控做好,比如加上 Zabbix/Prometheus 对 389/636 端口进行监控,出问题及时告警。
六、常见问题解答
1. 我能 ping 通服务器,但还是连不上 LDAP?
说明网络通,但端口没放行或者服务挂了,重点检查 389/636 端口。
2. OpenLDAP 和 Active Directory 连接排查方法一样吗?
大体相同,但 AD 常见的是域名解析和 Kerberos 认证出问题。
3. LDAPS 一定要配证书吗?
是的,LDAPS 是加密协议,没有证书无法建立安全连接。
4. 能不能用 IP 地址连接 LDAP?
可以,但有些应用要求用域名,并且需要能解析。
5. 如果我忘记管理员密码怎么办?
OpenLDAP 可以通过修改配置文件重置密码,AD 则需要在域控制器里重置。
LDAP 连接失败看似棘手,但大多数情况都集中在 网络端口、防火墙、账号配置 这几个点上。只要按照“本地能不能连 → 远程能不能通 → 账号密码对不对 → 证书是否正确”的思路去排查,基本都能找到问题。小编的经验是:别慌,先在本地 ldapsearch 一下,大概率能直接定位错误。