昨日、問い合わせがあったので DHCP の承認について少し調べていました。
Active Directory 環境のメンバサーバーに DHCP サーバーを構築する場合、[承認] という処理が必要となります。
TechNet では DHCP の承認について以下のように記載されています。
これらの問題を解決するため、Windows Server 2003 を実行する DHCP サーバーは、クライアントにサービスを提供する前に、Active Directory で承認済みとして検証されます。これによって、構成が誤っていたり、誤ったネットワーク上で構成された DHCP サーバーを実行したために発生する被害を回避することができます。 |
また、DHCP サーバーを承認するためには [Enterprise Admins] の権限が必要となります。
こちらについても TechNet に記載があります。
Active Directory の DHCP サーバーを承認する
Active Directory ドメイン環境で DHCP サーバーが承認されるためには、まずサーバーを追加するエンタープライズの |
?
?
■Enterprise Admins が必要な理由
DHCP の承認状況に関しては、Active Directory のパーティションの中でも、[構成パーティション] という場所に格納がされます。
?
– ADSI Edit で確認した構成パーティション –
Active Directory 上では、[CN=Configuration,DC=<ドメイン>]? となっている情報ですね。
この構成パーティションを変更できるのはデフォルトの設定では、[Enterprise Admins] のユーザーとなります。
認証されたユーザー [Authenticated Users] であれば、[読み取り] の権限がついていますので、通常のユーザーでも
構成を読み込むことはできるのですが変更はできません。
変更をするためには [Enterprise Admins] グループのユーザーの必要があります。
?
– [CN=Configuration] のセキュリティ情報 –
?
■DHCP サーバーを承認すると何が起きるか
DHCP サーバーを承認した際に [Enterprise Admins] の権限を使用して何をしているかを確認してみました。
承認を実行すると、構成パーティションの中の [CN=NetServices,CN=Services] に承認された DHCP サーバーの
オブジェクトを作成しているようです。
下の画像が、対象の内容を表示したものになります。
[CN=DhcpRoot] はデフォルトで作成されているオブジェクトになるのですが、[CN=dhcp-2000.dom2.domain.local] というのが、
Windows 2000 Server で実行している DHCP サーバーの情報になります。
– [CN=Netservices,CN=Services] の内容 –
DHCP の管理コンソールで、[承認されたサーバーの管理] で確認をすると、[CN=NetServices,CN=Services] に
作成されている、オブジェクトの情報が表示されていることが確認できます。
?
– 承認されたサーバーの管理 –
[承認の解除] を実行すると対象のサーバーのオブジェクトも削除されます。
?
– 承認の解除 –
?
– 承認の解除後の [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 の管理コンソールで [承認されたサーバーの管理] を表示した内容です。
一台、サーバーが承認されているのが確認できます。
?
– Windows Server 2003 の DHCP 管理コンソールの [承認されたサーバーの管理] の表示内容 –
それでは、Windows 2000 Server で、[承認されたサーバーの管理] を表示するとどうなるでしょう。
スコープがアクティブになっているので、承認され有効な DHCP サーバーとして認識はされているのですが、
[承認されたサーバーの管理] には表示がされません。
– Windows 2000 Server の DHCP 管理コンソールの [承認されたサーバーの管理] の表示内容 –
[承認されたサーバーの管理] の表示内容ですが、2000 と 2003 で取得方法に違いがあるようです。
?
■Windows 2000 Server の表示
Windows 2000 Server の [承認されたサーバーの管理] の表示ですが、[CN=NetServices,CN=Services] の
[CN=DhcpRoot] の [dhcpServers] という属性の内容を元に表示をしているようです。
[CN=DhcpRoot] の [dhcpServers] に属性が設定されるのは、Windows 2000 Server で DHCP を承認
した場合になるようです。
今回は Windows Server 2003 で DHCP サーバーを承認しているので、この属性に値が設定されていません。
1 台、Windows 2000 Server で DHCP を承認した後の表示が以下になります。
?
– Windows 2000 Server で DHCP を承認 –
[DhcpRoot] の [dhcpServers] に値が設定されているため、この属性に設定されているサーバーはWindows 2000 Server の
[承認されたサーバーの管理] で表示されるようになります。
# 実際には、[dhcpServers] 属性の内容を分割して表示しているようですが。
?
■Windows Server 2003 の表示
Windows Server 2003 の場合は、[DhcpRoot] の [dhcpServers] 属性と、[DhcpRoot] 以外の [dhcpServers] 属性の
情報をベースに表示しているようです。
そのため、2000 / 2003 のどちらで承認されたサーバーについても表示されます。
?
– Windows Server 2003 の DHCP 管理コンソールの [承認されたサーバーの管理] の表示内容 –
Windows Server 2003 で承認した場合は、[DhcpRoot] の [dhcpServers] 属性は設定されないのですがその代わりに、
承認したサーバーの [dhcpServers] 属性が設定されます。
?
– Windows Server 2003 で承認した DHCP サーバー –
Windows 2000 Server で承認された DHCP サーバーの場合は、[DhcpRoot] に [dhcpServers] 属性が設定されているため、
DHCP サーバーのオブジェクトには、[dhcpServers] 属性は設定されていません。
?
– Windows 2000 Server で承認した DHCP サーバー –
2000 と 2003 の承認処理では実行される内容に差があるようですね。
DHCP サーバーが承認されているかどうかに関しては、[CN=NetServices,CN=Services] 内にオブジェクトが存在するかで、
判断がされているようですので、属性が設定される場所が異なっていても特に影響はないようです。
■コマンドで DHCP サーバーを承認
DHCP サーバーの承認は DHCP サーバーの管理コンソールで実行できるのですが、コマンドでも承認 / 承認解除を
実行することができます。
DHCP サーバーの承認 netsh dhcp add server <サーバー名> <IP アドレス> DHCP サーバーの承認解除 承認されている DHCP サーバーの取得 |
実行される内容は管理コンソールと同じです。
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 のバージョンによって承認処理が違うことを意識していませんでした。