【问题标题】:How do you select which address the LDAP client binds to using OpenLDAP API?如何使用 OpenLDAP API 选择 LDAP 客户端绑定到哪个地址?
【发布时间】:2014-11-20 18:20:27
【问题描述】:

有没有办法使用 OpenLDAP API 来设置特定的网络接口地址,以用于多宿主机器上 LDAP 客户端上的套接字绑定;就像您在 Microsoft 的 LDAP 客户端中使用 LDAP_OPT_SOCKET_BIND_ADDRESSES 选项一样。

【问题讨论】:

    标签: c++ c openldap


    【解决方案1】:

    您可以通过自己创建和绑定和连接套接字,然后调用 ldap_init_fd() 将其转换为 LDAP 连接来实现。

    【讨论】:

    • 我熟悉 BSD 套接字和 WinSock,但我是 OpenLDAP 库的新手。我注意到 ldap_init_fd() 需要一个 ber_socket_t。我假设有一个类似于socket()的函数来创建一个ber_socket_t;但我一直没能找到它。您能否提供执行此操作的示例代码或指出一些示例代码。
    • 不知道。我以为它只是一个套接字 FD。有一个 lber_sockbuf 的 man 页面暗示了它,足够神秘。
    【解决方案2】:

    您选择您想要的服务器的主机和端口并使用ldap_open(host, port)

    【讨论】:

    • 已弃用,您还没有回答问题。
    • 我从手册页中看到,ldap_open() 和 ldap_init() 已被弃用,取而代之的是 ldap_initialize(),后者接受 LDAP 服务器的逗号或空格分隔的 URI 列表。虽然我没有使用过这个功能,但它似乎可以满足用户的“多宿主”服务器需求。看起来实际连接不是在调用 ldap_initialize() 时发生,而是在第一次使用连接时发生(可能是 ldap_bind())。
    • 不满足客户端在连接前绑定特定IP地址的要求,这就是问题的实质。他对“多宿主服务器要求”只字未提。他的问题是关于一个客户的。
    • 然后我误解了他所说的“多宿主机器上的 LDAP 客户端”的意思......什么是“多宿主机器”..?
    • 具有多个 NIC 的主机。在某些不明确的情况下,您需要将套接字绑定到本地地址,以确保其流量通过该 NIC 传出。这就是他要问的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2012-07-24
    • 2012-06-29
    • 1970-01-01
    • 2012-08-25
    相关资源
    最近更新 更多