如何找出哪个服务器在我的Windows域上托管LDAP?

时间:2009-04-14 20:36:09

标签: asp.net active-directory ldap

我正在尝试开发一个应用程序(C#)来查询LDAP服务器。我不知道命名为查询的实际服务器 - 有没有办法找到使用标准的Windows工具或.net中的东西?

我也听说有传言说只要我的查询字符串中有dc = domain,dc = com,就不一定需要服务器名称(ldap:// server /),但我是这样的远远不能用这种方式工作。

任何提示?

由于

3 个答案:

答案 0 :(得分:94)

AD在其DNS服务器中注册服务位置(SRV)资源记录,您可以查询该记录以获取域中负责的LDAP服务器的端口和主机名。

只需在命令行上尝试:

C:\> nslookup 
> set types=all
> _ldap._tcp.<<your.AD.domain>>
_ldap._tcp.<<your.AD.domain>>  SRV service location:
      priority       = 0
      weight         = 100
      port           = 389
      svr hostname   = <<ldap.hostname>>.<<your.AD.domain>>

(前提是您的名称服务器是AD名称服务器,应该是AD正常运行的情况)

有关详细信息,请参阅Active Directory SRV RecordsWindows 2000 DNS white paper

答案 1 :(得分:15)

如果您正在使用AD,则可以使用serverless binding找到默认域的域控制器,然后使用LDAP:// rootDSE获取有关目录服务器的信息,如链接文章中所述。< / p>

答案 2 :(得分:12)

如果您所在的计算机是AD域的一部分,则应将其名称服务器设置为AD名称服务器(或者希望使用最终将解析AD域的DNS服务器路径)。使用dc = domain,dc = com的示例,如果在AD名称服务器中查找d​​omain.com,它将返回每个AD控制器的IP列表。来自我公司的示例(w /域名已更改,但除此之外是一个真实示例):

    mokey 0 /home/jj33 > nslookup example.ad
    Server:         172.16.2.10
    Address:        172.16.2.10#53

    Non-authoritative answer:
    Name:   example.ad
    Address: 172.16.6.2
    Name:   example.ad
    Address: 172.16.141.160
    Name:   example.ad
    Address: 172.16.7.9
    Name:   example.ad
    Address: 172.19.1.14
    Name:   example.ad
    Address: 172.19.1.3
    Name:   example.ad
    Address: 172.19.1.11
    Name:   example.ad
    Address: 172.16.3.2

注意我实际上是从非AD机器进行查询,但我们的unix名称服务器知道将AD域(example.ad)的查询发送到AD DNS服务器。

我确信有一种超级光滑的窗口方式可以做到这一点,但我喜欢在需要从非Windows服务器上找到LDAP服务器时使用DNS方法。