人の温かみが感じられるネットワーク運用を心掛ける方々にとって、NPSサーバーでのMACアドレス認証は大きな魅力を持つ手法ではないでしょうか。認証手順を可視化し、検証やトラブルシュートを効率化するためには、レジストリ設定の見落としや機器側の設定不足といった細やかなポイントを押さえることが重要です。この記事では、MACアドレスベースの認証をNPSサーバーで確実に行う方法を、Wiresharkによるパケットキャプチャを含めて徹底解説します。
NPSサーバーでのMACアドレスベース認証とは?
NPS(Network Policy Server)はWindows Serverの役割の一つで、RADIUSサーバーとして機能します。MACアドレスベースの認証は、いわゆる「MAC Bypass」や「MACフィルタリング」と呼ばれ、クライアントデバイスがユーザー名・パスワードを入力しない場合でも機器側(無線LANコントローラーやスイッチなど)がその端末のMACアドレスをRADIUSサーバーへ送信し、認証を行う仕組みです。
一般的な利用シーン
- ゲスト端末やPOS端末など、ユーザーがIDとパスワードを入力できない環境
- 工場内の機械やIoTデバイスで、操作画面や入力デバイスが用意されていないケース
- 企業や施設での簡易的なアクセス制御(「許可したMACアドレスのみネットワーク接続を許可したい」など)
MACアドレスをそのままユーザーアカウントとして扱うことで、管理者は端末単位でネットワークアクセス権をコントロールできます。ただし、MACアドレスが通信上で平文としてやり取りされる性質上、セキュリティ面(なりすまし対策など)にも配慮が必要です。
MACアドレスをADユーザーとして登録する理由
MACアドレス認証では、RADIUSサーバー(NPS)が認証情報(ユーザー名・パスワード相当)をActive Directoryに照会します。ADにユーザーアカウントとして登録しておくことで、以下のメリットがあります。
- ユーザーベースのグルーピングやポリシー管理が容易
- 既存のADインフラを活用した一元管理
- アカウントごとに有効期限を設定したり、接続制限を付加したりできる
管理者にとっては少々手間ですが、端末台数が大幅に多くなければ十分に実用的な運用が可能です。
よくあるトラブル:RADIUS認証フローが見えない
MACアドレスベースの認証をNPSサーバーで構築しようとすると、次のような問題がしばしば発生します。
- RADIUSパケットが見えない(Wiresharkでキャプチャできない)
NPSサーバーでMAC認証のポリシーを設定したのに、クライアントからのAccess-Requestや、サーバーからのAccess-Accept/Rejectがまったく見えない。 - NPSポリシーを設定しても認証が実行されない
ADにMACアドレスユーザーを作成しても、なぜかNPS側が認証処理を受け付けない。 - レジストリキー「User Identity Attribute」の存在を知らない
そもそもMACアドレス認証に必要なレジストリキーがあり、これを追加しなければ機能しないことを知らないケース。
原因を特定するには、NPSサーバーのイベントログやWiresharkなどでパケットを追うのが定石ですが、そもそも認証要求が生成されない(APやスイッチ側にMAC認証の設定がない、あるいはNPSにMAC認証を受け入れるレジストリ設定がない)と、パケット自体が流れないことも多いです。
最重要ポイント:レジストリ「User Identity Attribute」の設定
MACアドレス認証をNPSサーバーで実現するうえで、もっとも見落とされがちなポイントが「レジストリ設定」です。具体的には以下のキーを追加します。
キー名:User Identity Attribute
場所:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\Policy
種類:DWORD(32ビット)
値:31(16進数では1f)
このレジストリがないとどうなる?
「User Identity Attribute」を設定しないまま、APやスイッチのMAC Bypass機能を有効にしていても、NPSがMACアドレスを認証情報として正しく扱えない可能性があります。結果として、NPSはRADIUSの認証要求として処理を行わず、イベントログやWireshark上でRADIUSのやり取りが一切見えなくなることもあります。
設定手順の流れ
以下のような手順でレジストリを設定します。
- レジストリエディタを起動
Windowsキー+Rで「ファイル名を指定して実行」を開き、regeditと入力してレジストリエディタを起動します。 - 該当パスへ移動
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\Policyフォルダーに移動します。 - DWORD値の新規作成
右ペインで右クリック → 「新規作成」 → 「DWORD(32ビット)値」を選択し、名前を「User Identity Attribute」とします。 - 値の設定
「User Identity Attribute」をダブルクリックし、値を16進数で「1f」(10進数で31)にします。 - NPSサービスの再起動
必要に応じてサーバー再起動またはNPS(Network Policy Server)サービスの再起動を行います。
ADにおけるMACアドレスユーザーアカウントの登録
MACアドレス認証では、「MACアドレス=ユーザー名」として扱うのが一般的です。例えば、「00-11-22-33-44-55」や「001122334455」をユーザーアカウント名に設定し、パスワードも同じ文字列にするケースが多いです。以下の表は、一例としてADユーザーを作成する際のポイントをまとめたものです。
| 項目 | 設定例 | 注意点 |
|---|---|---|
| ユーザー名(User logon name) | 001122334455 | ハイフンやコロンは入れない方が混乱しにくい |
| フルネーム | MAC-001122334455 | 管理時に検索しやすいよう、MACアドレスだとわかる名称に |
| パスワード | 001122334455 | MACアドレスをそのまま使う場合が多い |
| グループ | mac-auth-group | MAC認証対象の端末を集約する専用グループ |
| パスワード期限 | なし | 自動で失効するとトラブルになるので注意 |
専用グループでの管理
端末数が多い場合、すべてのMACアドレスをひとつのグループ(例:mac-auth-group)に登録し、NPSのネットワークポリシーで「Windows Groups」にそのグループを指定するほうが管理が容易です。
グループベースの認証条件をNPSで設定すれば、メンバーとして登録されたMACアドレスのみが認証される仕組みを作れます。
NPS側でのネットワークポリシー設定
NPSサーバーの「ネットワークポリシー」設定で、MACアドレス認証に関する条件(Conditions)や制約(Constraints)をセットアップします。
ポリシーの条件(Conditions)
- Windows Groups(User Groups): AD上で作成したmac-auth-groupを指定します。これにより、グループメンバーのアカウントだけ認証を許可します。
- NAS Identifier / NAS IP Address: 無線LANコントローラーやスイッチの機器名やIPアドレスを条件として設定し、特定の機器だけMAC認証を行うように制御できます。
ポリシーの制約(Constraints)
- 認証方法: 「PAP」または「SPAP」のように、未暗号化の認証を有効にしてください。MACアドレス(ユーザー名・パスワード)が平文で送られる点には注意が必要ですが、MAC認証の仕組み上やむを得ない部分もあります。
- サービスの種類: 無線LANの場合は「Framed」、有線ポートの場合は「Ethernet」など、使用する機器や環境に応じて適切に選択します。
ポリシーの設定(Settings)
- VLAN割り当て(Tunnel-Pvt-Group-ID など)
VLANを動的に割り当てたい場合、RADIUS属性として以下を設定します。 - Tunnel-Medium-Type = 802
- Tunnel-Type = VLAN
- Tunnel-Pvt-Group-ID = 割り当てたいVLAN ID(例:10)
- IPフィルタ
特定のネットワークセグメントだけアクセスを許可/拒否したい場合は、RADIUS側の属性またはポリシー設定で絞り込むことも検討します。
機器(AP・スイッチ)のMAC Bypass設定
APやスイッチなどの機器に「MAC認証」や「MAC Bypass」と呼ばれる機能がなければ、いくらNPSでポリシーを作っても意味がありません。ベンダーや機種によって設定項目は異なりますが、代表的なステップは以下のとおりです。
- MAC認証の有効化
機種によって「MACフィルタリング」「MAC-based Authentication」など名称が異なる場合があります。 - RADIUSサーバーの設定
- RADIUSサーバーのIPアドレス:NPSサーバーのIP
- 共有シークレット:NPSサーバーで設定したものと一致させる
- 認証ポート:通常1812
- SSIDまたはポートへのMAC認証適用
無線LANではSSID単位、有線スイッチではポート単位でMAC認証を適用。 - MACアドレスの送信形式
ユーザー名として「001122334455」、パスワードとして同じ文字列を送信する設定になっているかを確認。
ベンダーごとに設定画面やCLIコマンドが大きく異なるため、機器のマニュアルを参照しながら詳細を詰める必要があります。
WiresharkでRADIUS認証フローを可視化する
レジストリを設定し、NPSポリシーと機器側のMAC認証設定を完了したら、実際にパケットキャプチャをして、認証要求/応答を確かめることでトラブルシュートがスムーズになります。
キャプチャのポイント
- キャプチャ場所
RADIUS通信が通過するネットワークインターフェースでキャプチャします。通常はNPSサーバー側のNICか、スイッチとNPSサーバーの間にミラーポートを設定する方法が考えられます。 - フィルター設定
Wiresharkでは、「udp.port == 1812」といったディスプレイフィルタを使うとRADIUSパケットに絞り込めるため便利です。 - Access-Request / Access-Accept / Access-Rejectのシーケンス
- クライアント(AP/スイッチ)がAccess-Requestを送信
- NPSがAccess-AcceptまたはAccess-Rejectで応答
- VLAN割り当ての場合はAcceptメッセージ内にVLAN IDなどのRADIUS属性が含まれる
Wireshark上でのRADIUSパケット例
WiresharkでRADIUSパケットを開くと、下記のような情報を確認できます。
- Code: Access-Request / Access-Accept / Access-Reject
- Identifier: パケットの識別番号
- AVP (Attribute-Value Pairs): ユーザー名 (User-Name)、NAS IP Address (NAS-IP-Address)、NAS Identifier (NAS-Identifier)、Tunnel-Type、Tunnel-Medium-Typeなど
MAC認証の構成が成功していれば、Access-RequestのAVPのUser-Nameのフィールドに「001122334455」のようなMACアドレスが表示され、さらにパスワードがEncrypted Password(PAPの場合は平文扱いですが、Wireshark上ではマスク表示されることもある)として確認できます。
コールフロー:NPSとAD、機器のやり取り
最後に、MACアドレス認証の典型的なコールフローを確認しましょう。
- クライアント端末が接続を開始
- 無線LANの場合:SSIDに接続
- 有線スイッチの場合:ポートに接続
- 機器(AP/スイッチ)が端末のMACアドレスを取得
- DHCPリクエストなどをフックしてMACアドレスを取得する
- MAC認証要求の送信
- AP/スイッチがRADIUSサーバー(NPS)に対し、
Access-Requestを送信 - User-Name, User-PasswordにMACアドレスを設定
- NPSでの認証処理
- レジストリ「User Identity Attribute」によりMACアドレスを適切に識別
- NPSがADに対して「001122334455」というユーザーが存在するか・パスワードが一致するかを確認
- グループポリシーや他の条件もチェック
- RADIUS応答(Access-AcceptまたはReject)
- 認証成功ならAccess-Accept(VLANなどの付加情報を含む場合あり)
- 失敗ならAccess-Reject
- ネットワークアクセスの許可/拒否
- Access-Acceptを受けたAP/スイッチは、端末をネットワークに参加させる
- Access-Rejectの場合はネットワーク通信がブロックされる
- Wiresharkによる確認
- NPSサーバー側、またはスイッチ側でRADIUSパケットをキャプチャすると、一連の認証メッセージが見える
このように、コールフローを明確に把握すれば、どの段階で問題が起きているかを容易に突き止めることができます。
運用のポイントと注意事項
MACアドレス認証は便利な反面、セキュリティ上の注意も必要です。MACアドレスは容易に偽装が可能なので、「MACアドレス認証だけでセキュリティが完璧」という認識は危険です。
また、ADに多数のMACアドレスをユーザーアカウントとして登録・管理する場合、手動でのメンテナンス作業が膨大になる可能性があります。スクリプトによる自動作成や削除、または管理ツールを活用し、運用負荷を最小化する工夫が大切です。
セキュリティ強化のために
- 802.1Xとの併用: MAC認証だけでなく、端末が対応可能なら802.1X(EAP-TLSやPEAPなど)も利用して多層的な認証を行う
- Port Security: スイッチ側でポートセキュリティ機能(学習するMACアドレス数制限など)を設定し、なりすましを検出・遮断
- 定期的なアカウントレビュー: ADのMACアドレスアカウントが増えすぎないよう、使用していない端末のアカウントは無効化・削除する
まとめ
NPSサーバーでMACアドレスベースの認証を行う際は、下記の点に注目することが成功への近道です。
- レジストリキー「User Identity Attribute」の追加
デフォルトでは存在しないキーを手動で追加し、値を「31」に設定することで、NPSがMACアドレスを正しく認証情報として扱えるようになります。 - ADにMACアドレスをユーザーとして登録
ユーザー名・パスワードともにMACアドレスを設定し、必要であれば専用グループを作成してポリシー管理しやすくします。 - NPSポリシーでPAP認証を有効化
未暗号化認証であるPAP(またはSPAP)を使う点に注意しつつ、NAS Identifierなどの条件とも合わせてポリシーを構築しましょう。 - 機器側のMAC認証設定を忘れずに
NPSだけではなく、無線LANコントローラーやスイッチのMAC Bypass機能を有効にして、RADIUSサーバー設定をしっかり登録します。 - WiresharkでRADIUSフローをキャプチャ
成功した認証フローでは、Access-Request → Access-Acceptのパケットが見えるはずです。これが見えない場合は設定不備を疑いましょう。
この一連の流れをきちんと押さえることで、NPSサーバーによるMACアドレス認証がスムーズに進み、Wiresharkでも可視化されるようになります。端末の追加や削除といった運用面では多少の手間がかかるものの、正しく実装すればシンプルかつ堅牢なアクセスコントロールを実現できます。ぜひ、レジストリ設定や機器設定を踏まえ、安定した運用を目指してみてください。

コメント