PR

【問題】
 あなたの会社では,Active Directoryドメイン環境が構成されている。DNSで使用するSRVレコードについて,正しい記述を選びなさい。

A. ログオン時に,コンピュータ・アカウントの検索に使う
B. ログオン時に,ドメイン・コントローラの検索に使う
C. ログオン時に,パスワード認証に使う
D. ログオン時に,ユーザー・アカウントの検索に使う

正解:B

【解説】
 Active Directoryは単一のサービスではなく,複数の機能の集合体である。Windows Server 2008では「Active Directory Domain Services」という単一のサービスとして構成されているように見えるが,それは管理上の問題である。それでは,具体的にどのような機能から構成されているか列挙してみよう。

  • ユーザーやコンピュータの認証(使用プロトコルはKerberos)
  • ユーザーやコンピュータの情報検索(使用プロトコルはLDAP)
  • グループポリシーの配付(使用プロトコルはSMB)

 追加サービスによってはHTTP等,他のプロトコルを使うこともあるが,主なものはこの3種類だ。

Active DirectoryとDNS

 Kerberosで使用する認証データベースや,LDAPで使用する情報データベース(ディレクトリ・データベース: Kerberos用の認証データベースを兼ねる),グループポリシーの設定情報はすべてドメイン・コントローラが保持する。

 では,クライアントはどのコンピュータがドメイン・コントローラであるかを知るのだろう。ここでは何らかのサーバー情報を明示的に指定しなければならない。マイクロソフトは,ドメイン・コントローラの発見にDNSを使うことにした。これは主に以下の理由があると思われる。

  • TCP/IP情報の構成にActive Directory専用の情報を指定したくない。
  • ほとんどのTCP/IPホストには既にDNSサーバーのアドレスが構成されている。
  • ほとんどのTCP/IPネットワーク環境で,DNSサーバーは適切に運用されている。

 クライアントの構成パラメータを増やすのはトラブルの元である。どうしても必要な変更はサーバー側で行いたい。そして,TCP/IPネットワークの運用上,もっとも信頼性の高いサービスはDNSだ(プログラムの信頼性ではなく,運用の信頼性)。こうして,Active Directoryは,そのインフラとしてDNSを採用した。

SRVレコードの構造

 DNSには,ホスト名とIPアドレスの登録の他,多くの機能が追加されてきた。例えば,メール・サーバーの情報を格納する「MXレコード」が典型的な例である。MXレコードは複数のサーバーを登録し,優先順位を指定できる。しかし,DNSをActive Directoryのインフラとして使うには,MXでは不十分である。そこで目を付けたのがSRV(サービス)レコードだ。

 SRVレコードはMXレコードを拡張したもので,以下のような情報を持つ(図1)。

図1●SRVレコード
形式
レコード値 サービス.プロトコル.ドメイン _http._tcp.nikkeibp.co.jp 

情報 意味
ポート番号 TCPまたはUDPのポート番号 80 
優先順位 値の小さなサーバーを優先的に使う。 0 
重み(ウェイト) どの確率でそのサーバーを使うか。 重み100のサーバーAと,重み200のサーバーBの2台ある場合,Aを1/3,Bを2/3の割合で使う。 100 
  • サービス・プロトコル(http,ldap,など)
  • トランスポート・プロトコル(tcpまたはudp)
  • ポート番号
  • 優先順位
  • 重み(同じ優先順位のサーバーが複数ある場合,どの割合で使用するか)

 例えば,日経BP社のWebサイトにアクセスしたい場合はどうするだろう。検索エンジンを使う方法もあるが,それもない場合,日経BP社のドメイン名「nikkeibp.co.jp」に,Webサーバーとして最も一般的な「www」を追加し,TCPポート80で接続するのではないだろうか。しかし,これは絶対確実な方法とは言えない。「www」ではなく「www1」かもしれないし,ポート番号は80でないかもしれない(そんな可能性はあまりないかもしれないが)。

 SRVレコードを使うと,nikkeibp.co.jpドメインのWebサーバーを知りたい場合,「_http._tcp.nikkeibp.co.jp」をSRVレコードとして問い合わせる。httpとtcpに_(アンダースコア)が追加されていることに注意してほしい。アンダースコアはホスト名ではなくプロトコル名であることを示すための識別子である。DNSサーバーは要求された名前のSRVレコードを検索し,ポート番号とホスト名を応答する。その他に,優先順位や重み情報も含まれるので,負荷分散や障害対応も可能である。

 Active Directoryでは,ドメイン・コントローラのホスト名を取得するためにSRVレコードを使う。特に良く使われるのは_ldapであるが,その他にグローバルカタログを示す_gc等がある。

 いったんドメイン・コントローラが発見されると,その後はLDAPプロトコルを使ってディレクトリ・データベースを検索する。つまり,SRVレコードはドメイン・コントローラの発見にのみ使われ,コンピュータ・アカウントやユーザー・アカウントの情報はドメイン・コントローラに直接照会する。従って正解はBとなる。