Windows Server の DHCP サーバには、 スコープ 単位での フィルタリング 機能が備わっていません。複数スコープを運用していて、特定のクライアントが特定の スコープ に入らないようにする方法として、 スコープ の ポリシー を活用してみます。
サーバレベルでの拒否
まず本題に入る前に、DHCPサーバレベルでのフィルタリング機能を使い、特定のMACアドレスへのIPアドレス配布を拒否する方法から見てみます(以下、Windows Server 2012にて試行)。
DHCPサーバ管理コンソールの一番下にある「フィルタ」を開き、「拒否」を右クリックして「新しいフィルタ」を選択。
ポップアップウィンドウのMACアドレス欄へ拒否したいデバイスのMACアドレスを入力して追加します。

図02.新しいフィルタの入力
フィルタの拒否アイコンが無効状態になっていたら、右クリックから有効化すれば即反映されます。

図03.拒否フィルタの有効化
試しにAndroidデバイスのWiFiインターフェイスのMACアドレスを拒否リストへ登録してみると、WiFiの接続確立後、「IPアドレスを取得中…」が延々と続くようになりましたが、DHCPサーバログにはNACKなどの形跡は残らないようです。
このフィルタリング機能は、不審端末のネットワーク利用をブロックする一助とはなるのですが、残念ながら各スコープレベルにこのようなフィルタリングは備わっていません。
オフィスビルをフロア毎に異なるスコープ(サブネット)に区切って運用している場合、各フロアへ設置しているAPのWiFi電波は、どう調整してもフロアを越えて届いてしまうもの。
こうした電波を元にWiFiインターフェイスを持つPCが、本来の設置場所とは異なるスコープへ繋がってしまうのは管理上好ましくないことから、今回、スコープレベルでもこのようなフィルタリング機能の実現出来ないか、模索してみるわけです。
スコープレベルでの拒否
Microsoftのこちらの記事によると、スコープレベルではポリシーを作って同様のフィルタリングを実現出来るのだそうです。
今回必要としている拒否フィルタの場合、
「登録したMACアドレスと等しくないクライアントに対してのみ、IPアドレスを配布する」
というポリシーを設定すれば、実質的にそれは拒否フィルタとして機能するというものです。
それにはまず、DHCP管理コンソール左ペインに並ぶスコープのうち、拒否を設定したいスコープを開き、ポリシーアイコンを右クリックして「新しいポリシー」を選択します。
DHCPポリシー作成ウィザードが始まるので、先ずは適当な名前や説明を入力。
新規ポリシーの条件一覧はまだ空っぽなので、「追加」ボタンを押して条件を追加します。
ポリシー条件の追加では、以下の要領で条件句を設定の上、値の欄へブロックしたいMACアドレスを追加してOK押下します。
- 条 件 : MACアドレス
- 演算子 : 等しくない (Not Equals)
作成した条件が一覧に追加されているのを確認したら次へ。
するとこのポリシーに割り当てるIPアドレス範囲を聞かれます。ここでスコープ設定で既に設定しているIPアドレス範囲をそのまま適用する場合であっても、必ずその範囲を明示的に設定しないと、このポリシーは機能しません。
当初、ここで「IPアドレス範囲を設定しますか」というラジオボタンで「いいえ」を選択したのですが、結果的にポリシーが効かないので調べてみると、こちらのフォーラムでIPアドレス範囲の明示的な指定が必要なことを知った次第です。
続くDHCPオプションの設定ウィンドウは特に必要ないので何もせずに次へ。
最後にサマリーを確認してDHCPポリシー作成ウィザードは終了です。
スコープのポリシー機能はデフォルトでは非アクティブになっているので、これを右クリックから「アクティブ化」すればポリシーは機能するようになります。
作成した個別のポリシー単位でも有効化・無効化が設定出来るようにはなっているのですが、こうした個別ポリシーの無効化やスコープポリシー全体の非アクティブ化を行うと、何故か全デバイスからのリクエストが拒否されてしまうことが実際にありました。無用なトラブルを避ける意味でも、使わない時は作成したポリシーを削除してしまうのが確実です。
さらに設定作業中は出来れば、DHCPサーバログをリアルタイムで監視した方が良さそうです(監視方法についてはこちら)。
DHCPスコープポリシーによりIPアドレスの配布を拒否されると、Windows 10 PCでは次のように「インターネットなし」という状態になります。
近年ではランダムMACアドレスの仕組みを実装したデバイスも増えていることから、こうした比較的単純なアプローチでの振り分けも、そういつまでも有用ではないかも知れませんね。