我正在尝试在 Ubuntu 上设置 Windows AD 和 OpenLDAP 之间的复制。
访问 Windows AD 服务器似乎可以正常工作,Ubuntu 上的 OpenLDAP 似乎也可以工作,但是我在设置两者之间的复制时遇到了困难 —— 我对 AD/LDAP 还不熟悉,可能有一些概念我遗漏了。
我能够列出远程(Windows)AD 上的用户:
ldapsearch -x -h 192.168.1.200 -D 'CN=LDAP OpenVPN,CN=Users,DC=DOMAIN,DC=NET' -w 'xxx' -b "DC=DOMAIN,DC=NET" cn
我使用以下配置设置复制:
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncrepl
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://192.168.1.200:389/
type=refreshAndPersist
retry="30 5 300 3"
interval=00:00:05:00
searchbase="CN=Users,DC=DOMAIN,DC=NET"
bindmethod=simple
binddn="CN=LDAP OpenVPN,CN=Users,DC=DOMAIN,DC=NET"
credentials="xxx"
add: olcUpdateRef
olcUpdateRef: ldap://192.168.1.200
并应用使用:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=module{0},cn=config"
modifying entry "olcDatabase={1}mdb,cn=config"
但是,复制似乎失败并出现以下错误:
[16-02-2022 22:00:20] slapd debug slap_client_connect: URI=ldap://192.168.1.200:389/ DN="cn=admin,dc=domain,dc=net" ldap_sasl_bind_s failed (49)
[16-02-2022 22:00:20] slapd debug do_syncrepl: rid=001 rc 49 quitting
[16-02-2022 22:00:21] slapd debug slap_client_connect: URI=ldap://192.168.1.200:389/ DN="cn=openvpnldap,dc=domain,dc=net" ldap_sasl_bind_s failed (49)
[16-02-2022 22:00:21] slapd debug do_syncrepl: rid=001 rc 49 quitting
[16-02-2022 22:00:22] slapd debug do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (12) Critical extension is unavailable
[16-02-2022 22:00:22] slapd debug do_syncrep2: rid=001 (12) Critical extension is unavailable
[16-02-2022 22:00:22] slapd debug do_syncrepl: rid=001 rc -2 quitting
[16-02-2022 22:00:22] slapd debug do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (12) Critical extension is unavailable
[16-02-2022 22:00:22] slapd debug do_syncrep2: rid=001 (12) Critical extension is unavailable
[16-02-2022 22:00:22] slapd debug do_syncrepl: rid=001 rc -2 quitting
给出我想要实现的目标的概念:
- 我们有一个内部网络(192.168.1.0/24),其中运行着基于 Windows 的 Active Directory
- 我们有一个 Google Cloud VPC 网络 (10.0.0.0/8),其中运行着一些资源
- 我们在本地网络和 GCP 网络之间运行了 IPSec 隧道。路由设置正确,一切运行正常
- 我们希望从 Google Cloud VPC 网络内的 VM 访问我们的本地 LDAP(192.168.1.200)——目的是允许来自此 AD 的用户登录到位于此 VM 上的 OpenVPN 服务器
- 我们希望在失去对内部网络的访问权限时,身份验证仍能继续工作。为了实现这一点,我们的想法是在同一台虚拟机上运行“代理/缓存”OpenLDAP
多谢!
答案1
似乎在身份验证阶段复制已经失败,ldap_sasl_bind_s failed
请尝试使用 ldaps 而不是 ldap 或加密的 SASL 机制,例如 GSSAPI 或 DIGEST-MD5