SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Active Directory 環境の DHCP サーバーの承認について

leave a comment

昨日、問い合わせがあったので DHCP の承認について少し調べていました。

Active Directory 環境のメンバサーバーに DHCP サーバーを構築する場合、[承認] という処理が必要となります。

TechNet では DHCP の承認について以下のように記載されています。

DHCP サーバーを承認する

これらの問題を解決するため、Windows Server 2003 を実行する DHCP サーバーは、クライアントにサービスを提供する前に、Active Directory で承認済みとして検証されます。これによって、構成が誤っていたり、誤ったネットワーク上で構成された DHCP サーバーを実行したために発生する被害を回避することができます。

また、DHCP サーバーを承認するためには [Enterprise Admins] の権限が必要となります。
こちらについても TechNet に記載があります。

Active Directory の DHCP サーバーを承認する

Active Directory ドメイン環境で DHCP サーバーが承認されるためには、まずサーバーを追加するエンタープライズの
Enterprise Admins グループのメンバとしてログオンする必要があります。

 

 

■Enterprise Admins が必要な理由

DHCP の承認状況に関しては、Active Directory のパーティションの中でも、[構成パーティション] という場所に格納がされます。

image 
ADSI Edit で確認した構成パーティション

Active Directory 上では、[CN=Configuration,DC=<ドメイン>]  となっている情報ですね。

この構成パーティションを変更できるのはデフォルトの設定では、[Enterprise Admins] のユーザーとなります。
認証されたユーザー [Authenticated Users] であれば、[読み取り] の権限がついていますので、通常のユーザーでも
構成を読み込むことはできるのですが変更はできません。
変更をするためには [Enterprise Admins] グループのユーザーの必要があります。

image  image
[CN=Configuration] のセキュリティ情報

 

■DHCP サーバーを承認すると何が起きるか

DHCP サーバーを承認した際に [Enterprise Admins] の権限を使用して何をしているかを確認してみました。

承認を実行すると、構成パーティションの中の [CN=NetServices,CN=Services] に承認された DHCP サーバーの
オブジェクトを作成しているようです。

下の画像が、対象の内容を表示したものになります。
[CN=DhcpRoot] はデフォルトで作成されているオブジェクトになるのですが、[CN=dhcp-2000.dom2.domain.local] というのが、
Windows 2000 Server で実行している DHCP サーバーの情報になります。

image
[CN=Netservices,CN=Services] の内容

DHCP の管理コンソールで、[承認されたサーバーの管理] で確認をすると、[CN=NetServices,CN=Services] に
作成されている、オブジェクトの情報が表示されていることが確認できます。
image 
承認されたサーバーの管理

[承認の解除] を実行すると対象のサーバーのオブジェクトも削除されます。
image image
承認の解除

image 
承認の解除後の [CN=NetServices,CN=Services] の内容

承認操作をすることで [CN=NetServices,CN=Services] のオブジェクト操作が実行されます。
この操作を実行するために [Enterprise Admins] の権限が必要となります。

 

■Windows 2000 Server と Windows Server 2003 の承認処理の違い

Windows Server 2003 で承認した DHCP が Windows 2000 Server の DHCP の管理コンソールの [承認されたサーバーの管理] で
表示されないという問い合わせがありました。

下の画像が、Windows Server 2003 の DHCP の管理コンソールで [承認されたサーバーの管理] を表示した内容です。
一台、サーバーが承認されているのが確認できます。
image 
Windows Server 2003 の DHCP 管理コンソールの [承認されたサーバーの管理] の表示内容

それでは、Windows 2000 Server で、[承認されたサーバーの管理] を表示するとどうなるでしょう。
スコープがアクティブになっているので、承認され有効な DHCP サーバーとして認識はされているのですが、
[承認されたサーバーの管理] には表示がされません。
image
Windows 2000 Server の DHCP 管理コンソールの [承認されたサーバーの管理] の表示内容

[承認されたサーバーの管理] の表示内容ですが、2000 と 2003 で取得方法に違いがあるようです。

 

■Windows 2000 Server の表示

Windows 2000 Server の [承認されたサーバーの管理] の表示ですが、[CN=NetServices,CN=Services] の
[CN=DhcpRoot][dhcpServers] という属性の内容を元に表示をしているようです。

image
[CN=DhcpRoot] の設定内容

[CN=DhcpRoot] の [dhcpServers] に属性が設定されるのは、Windows 2000 Server で DHCP を承認
した場合になるようです。

今回は Windows Server 2003 で DHCP サーバーを承認しているので、この属性に値が設定されていません。
1 台、Windows 2000 Server で DHCP を承認した後の表示が以下になります。

  image  image
Windows 2000 Server で DHCP を承認

[DhcpRoot] の [dhcpServers] に値が設定されているため、この属性に設定されているサーバーはWindows 2000 Server の
[承認されたサーバーの管理] で表示されるようになります。
# 実際には、[dhcpServers] 属性の内容を分割して表示しているようですが。

 

■Windows Server 2003 の表示

Windows Server 2003 の場合は、[DhcpRoot] の [dhcpServers] 属性と、[DhcpRoot] 以外の [dhcpServers] 属性の
情報をベースに表示しているようです。

そのため、2000 / 2003 のどちらで承認されたサーバーについても表示されます。
image 
Windows Server 2003 の DHCP 管理コンソールの [承認されたサーバーの管理] の表示内容

Windows Server 2003 で承認した場合は、[DhcpRoot] の [dhcpServers] 属性は設定されないのですがその代わりに、
承認したサーバーの [dhcpServers] 属性が設定されます。

image 
– Windows Server 2003 で承認した DHCP サーバー –

Windows 2000 Server で承認された DHCP サーバーの場合は、[DhcpRoot] に [dhcpServers] 属性が設定されているため、
DHCP サーバーのオブジェクトには、[dhcpServers] 属性は設定されていません。

image 
Windows 2000 Server で承認した DHCP サーバー

2000 と 2003 の承認処理では実行される内容に差があるようですね。
DHCP サーバーが承認されているかどうかに関しては、[CN=NetServices,CN=Services] 内にオブジェクトが存在するかで、
判断がされているようですので、属性が設定される場所が異なっていても特に影響はないようです。

■コマンドで DHCP サーバーを承認

DHCP サーバーの承認は DHCP サーバーの管理コンソールで実行できるのですが、コマンドでも承認 / 承認解除を
実行することができます。

DHCP サーバーの承認
netsh dhcp add server <サーバー名> <IP アドレス>

DHCP サーバーの承認解除
netsh dhcp delete server <サーバー名> <IP アドレス>

承認されている DHCP サーバーの取得
netsh dhcp show server

実行される内容は管理コンソールと同じです。

DHCP サーバーの一覧取得に関しては Script Center Gallery に VBScript のサンプルコードが掲載されていました。
承認された DHCP サーバーのレコードについて確認するにはかなり便利だと思います。
Enumerate All Authorized DHCP Servers in Active Directory

また、Microsoft のブログでも、古い DHCP サーバーをリストから削除する方法ということで [dhcpServers] 属性を
削除する方法が紹介されていました。
Old DHCP Servers appear in the list of Authorized servers after a Domain Rename

 

問い合わせがあるまで、OS のバージョンによって承認処理が違うことを意識していませんでした。

Written by masayuki.ozawa

3月 31st, 2010 at 4:02 pm

Posted in Active Directory

Leave a Reply

*