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

bug*_*ixr 35 asp.net ldap active-directory

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

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

有小费吗?

谢谢

Ste*_*rig 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>>
Run Code Online (Sandbox Code Playgroud)

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

有关详细信息,请参阅Active Directory SRV记录Windows 2000 DNS白皮书.


Joe*_*Joe 15

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


jj3*_*j33 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服务器.

我确信有一个超级光滑的窗口方式来做到这一点,但我喜欢使用DNS方法,当我需要从非Windows服务器中找到LDAP服务器.