Windows Server 2008で提供されているDHCPサーバーではMACアドレスによるフィルタリングはサポートされていません。これはNTの時代から変わっていませんね。
実際問題、私がSEをしていた頃に登録したMACアドレスにしかIPアドレスの配布をしたくないというお客様がいて、サードパーティ製のDHCPサーバーを購入して対応した記憶があります。
先日Windows Server 使い倒し塾のブログを見ていたら、なんとフリーのツールを使用することによってWindows Server 2003以降(2008も含む)のDHCPサーバーでMACアドレスフィルタリングを使用できるようなんです。
そのツールとはCallout DLLというものです。Microsoft Windows DHCP Team Blogにて紹介がされています。
そして、さらにリンクがあり、Connect The Worldをクリックします。
そして一番下にDownloadのリンクがありますのでそこからツールをダウンロードします。
そして32ビットと64ビット版がありますので使用する方をダウンロードしてDHCPサーバーに対してインストールします。見た目は全くかわりませんね~
変わる場所はレジストリになります。
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesDHCPServerParameters
この中のパラメータがCallOut DLLに影響を及ぼすようです。
- CalloutDlls:ツールのパス
- CalloutEnabled:1の場合は起動で、0にすればロードされません
- CalloutErrorLogFile:ログファイルのパス
- CalloutInfoLogFile:情報ファイルのパス
- CalloutMACAddressListFile:これが肝のアクセス制御ファイルのパス
デフォルトではc:WindowsSystem32dhcp 配下に設定されていることがregeditから確認できます。
そして実際の操作に関しては次の2通りがあります。
- 許可リスト:DHCPを使用する全ての端末MACを登録する
- 拒否リスト:DHCPを使用させない端末のMACを登録する
このリストの記載方法は次の通り
#MACList.txt
MAC_ACTION = {ALLOW / DENY}
#List of MAC Addresses:
000a0c0d1254 #lab-server1
000d0c4a6723 #lab-server2
…
…
これはREADMEに記載してあるものなんですが、先頭に#があるのはコメントですね。そしてMAC_ACTIONに許可もしくは拒否を設定する。そこでちょっとはまったのが、その書き方なんです。これって
MAC_ACTION = ALLOW
でうまくいくと思ったんですが、何度やってもうまくいきませんでした。試しに
MAC_ACTION = {ALLOW}
としたらうまくいきました。
あとは、クライアントのMACアドレスを登録すればうまく動きます。いや~、これはこれで便利ですね。
まとめ
今までこのような機能のニーズはあったにも関わらず、マイクロソフトのDHCPではサポートしていませんでした。が、Windows Server 2008 R2 のDHCPサーバーはMACアドレスフィルターをサポートするようです。