Cisco の Catalyst スイッチを用いた MAC アドレス認証を試してみました。 RADIUS サーバに MAC アドレスを登録しておいて、スイッチのポートに端末がつながった時にその端末の MAC アドレスが RADIUS サーバに登録されていれば通信を許可するという動作です。 1つのポートには1つの端末がつながる想定 (Cisco の用語でシングルホストモード:host-mode = single-host) です。
MAC アドレス認証は 802.1X 認証機能の一部を使って行います。802.1X 認証機能の中に MAC 認証バイパス (MAC Authentication Bypass) という機能があるのですが、これを使うと、 802.1X の EAPOL を使った認証にクライアントが反応しない時は MAC アドレスによって認証を行い、成功すればアクセスを許可するような動作をとることができます。 MAC 認証バイパス機能が使えるのは IOS Release 12.2(25)SEE 以降です。
早速ですが関連する設定は以下のようになりました。12.2(35)SE5 で試しました。
aaa new-model aaa authentication dot1x default group radius ! aaa session-id common dot1x system-auth-control interface FastEthernet0/1 switchport access vlan 10 switchport mode access dot1x mac-auth-bypass dot1x pae authenticator dot1x port-control auto dot1x timeout tx-period 3 spanning-tree portfast radius-server host 192.168.0.1 auth-port 1645 acct-port 1646 radius-server source-ports 1645-1646 radius-server key cisco
斜体のところは明示的に入力していないけれど、設定表示には表示されるようになったコマンドです。
インターフェイスの "dot1x timeout tx-period 3" と "spanning-tree portfast" の設定は、端末をポートに接続してから通信ができるようになるまでの時間を短縮するために必要です。 tx-period は 802.1X 認証 (EAP-Request/Identity) に対してのクライアントからの応答を待つ時間ですが、802.1X 認証は使わず MAC アドレスを使って認証するのでこれを短くします。ただし、tx-period を短くすると認証失敗時 (=許可されない端末接続時) の再認証間隔も短くなってしまうので、環境に合わせたチューニングが必要かも知れません。
RADIUS サーバ関連の設定 (サーバアドレス、キー等) や VLAN 番号等はあくまでも一例です。
RADIUS 側は User-Name、User-Password を共にその端末の MAC アドレス16進の小文字 (例:"000a0b0c0102") として許可する端末のレコードを登録しておけばオッケーです。
ちなみに host-mode には他に multi-host、multi-domain (12.2(35)SE 以降) というのがありますが、Catalyst の1ポートにハブ等を介して複数の端末を接続したときに、個々の端末を Catalyst で認証する仕掛けをつくるのは無理だと思います。 multi-host モードでは1ポートに複数端末がつながっている時、それらの端末のうちのどれかの認証が通ってしまえば、そのポートに接続している全ての端末がアクセス可となります。multi-domain は試していませんが、ドキュメントを読む限り音声とデータを独立して扱うためのもので複数のデータ端末を個々に認証するためのモードではないようです。
Cisco の認証関連について 2009.6 現在の情報をまとめましたので、こちらの記事も参照ください。 802.1X 認証と MAC 認証の実行順を指定するコマンドや新しい host-mode が導入されています。