LDAPサーバーを照会するアプリケーション(C#)を開発しようとしています。クエリに指定された実際のサーバーがわからない-標準のWindowsツールまたは.netの何かを使用して調べる方法はありますか?
また、クエリ文字列にdc = domain、dc = comが含まれている限り、サーバー名(ldap:// server /)が必ずしも必要ではないという噂を聞いたことがありますが、この方法で動作します。
任意のヒント?
ありがとう
ADを使用している場合は、 サーバーレスバインディング を使用してデフォルトドメインのドメインコントローラーを検索し、LDAP:// rootDSEを使用してディレクトリサーバーに関する情報を取得できます(リンク先の記事を参照)。
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 Records および Windows 2000 DNSホワイトペーパー を参照してください。
使用しているマシンがADドメインの一部である場合は、ネームサーバーをADネームサーバーに設定する必要があります(または、最終的にADドメインを解決するDNSサーバーパスを使用する必要があります)。 dc = domain、dc = comの例を使用すると、ADネームサーバーでdomain.comを検索すると、各ADコントローラーのIPのリストが返されます。私の会社の例(ドメイン名が変更されましたが、それ以外は実際の例です):
mokey 0/home/jj33> nslookup example.ad サーバー:172.16.2.10 アドレス:172.16.2.10#53 Non-正式な回答: 名前:example.ad アドレス:172.16.6.2 名前:example.ad アドレス:172.16.141.160 名前: example.ad アドレス:172.16.7.9 名前:example.ad アドレス:172.19.1.14 名前:example.ad アドレス: 172.19.1.3 名前:example.ad アドレス:172.19.1.11 名前:example.ad アドレス:172.16.3.2
注:実際には非ADマシンからクエリを作成していますが、UnixネームサーバーはADドメイン(example.ad)のクエリをAD DNSサーバーに送信することを知っています。
これを行うには非常に洗練されたウィンドウの方法があると確信していますが、Windows以外のサーバーからLDAPサーバーを見つける必要があるときにDNS方式を使用するのが好きです。