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

35

我试图开发一个应用程序(C#)来查询LDAP服务器。 我不知道要查询的实际服务器名称 - 是否有一种使用标准Windows工具或.NET中的某些方法来找出它的方式?

我还听说过谣言,即只要我的查询字符串中有dc = domain,dc = com,就不一定需要具有服务器名称(ldap:// server /),但到目前为止,我一直以这种方式使用它。

有什么提示吗?

谢谢

3个回答

96

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白皮书


澄清一下,<<your.AD.domain>> 可能是您电子邮件地址中 @ 后面的部分。 - icfantv
你也可以省略域名以检索所有可用的域:C:> nslookup
set types=all _ldap._tcp _ldap._tcp.<<your.AD.domain1>> SRV 服务位置: 优先级 = 0 权重 = 100 端口 = 389 服务器主机名 = <<ldap.hostname1>>.<<your.AD.domain1>> _ldap._tcp.<<your.AD.domain2>> SRV 服务位置: 优先级 = 0 权重 = 100 端口 = 389 服务器主机名 = <<ldap.hostname1>>.<<your.AD.domain2>>
- user195488
它的类型是“全部”,而不是类型。 - deltree
那么我如何从上面的查询结果中创建LDAP连接字符串呢?这是我的信息:端口:389,主机名:winabc.sp2010.coc。 - zquanghoangz

15

如果你正在使用AD,则可以使用无服务器绑定来定位默认域的域控制器,然后使用LDAP:// rootDSE获取有关目录服务器的信息,如链接的文章所述。


12
如果您所在的机器是AD域的一部分,它应该将其名称服务器设置为AD名称服务器(或者希望使用DNS服务器路径最终解析您的AD域)。以dc=domain,dc=com为例,如果您在AD名称服务器中查找domain.com,它将返回每个AD控制器的IP列表。以下是来自我的公司的示例(域名已更改,但其余部分是真实示例):
    mokey 0 /home/jj33 > nslookup example.ad
    Server:         172.16.2.10
    Address:        172.16.2.10#53
非权威答案: 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服务器。
我确定有一种超级酷的windowsy方法可以做到这一点,但当我需要从非Windows服务器查找LDAP服务器时,我喜欢使用DNS方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接