这是我的测试用例:
[root@192.168.121.130~ $] slapd -d 1 -h ldaps://127.0.0.1:636
@(#)$ OpenLDAP:slapd 2。4。23(2013年4月29日07:47:08)$
mockbuild@c6b7.bsys.dev.centos.org:/builddir/build/BUILD/openldap-2.4.23/openldap-2.4.23/build-servers/servers/slapd
ldap_pvt_gethostbyname_a:host = centos-6.3,r = 0
daemon_init:听取ldaps://127.0.0.1:636
daemon_init:1个听众打开...
ldap_url_parse_ext(LDAPS://127.0.0.1:636)
守护进程:bind(7)失败errno = 98(地址已在使用中)
slap_open_listener:在ldaps://127.0.0.1:636上失败 slapd停了。
connections_destroy:没什么好破坏的。
但是如果我更改另一个端口,例如6361
,它就可以了。
我的环境:
OS:centos 6.4 x86_64
OpenLDAP:由yum安装的2.4.23
有什么建议吗?
答案 0 :(得分:1)
似乎另一项服务已在端口636上运行:
daemon: bind(7) failed errno=98 (Address already in use)
您可以尝试以下命令来识别此服务:
netstat -tulpn | grep ':636 ' | grep 'LISTEN'
答案 1 :(得分:0)
旧帖,但仍然......
当SELinux阻止slapd启动时,也会显示此错误。我个人在将数据(/ var / lib / ldap /)从另一台服务器手动复制到此服务器后经历过这种情况。我不得不将导入的文件恢复为默认的SELinux安全上下文:
restorecon -R /var/lib/ldap
我认为这并不适用于您,但如果您尝试将slapd绑定到不同寻常的端口,则可能也会发生。在CentOS7上默认,这些是允许的端口:
#semanage port -l | grep ldap
ldap_port_t tcp 389, 636, 3268, 7389
ldap_port_t udp 389, 636
可以使用 semanage 将另一个添加到合法端口范围。 (您可能需要安装包 policycoreutils-python 。):
semanage port -a -t ldap_port_t -p tcp 10389
...除了上面列出的四个之外,如果你想允许slapd在TCP端口10389上绑定。在此之后,之前的结果将如下所示:
# semanage port -l | grep ldap
ldap_port_t tcp 10389, 389, 636, 3268, 7389
ldap_port_t udp 389, 636