Cisco IOS MACアドレステーブル スイッチ トラブルシューティング セキュリティ

MACアドレステーブルは、Ciscoスイッチが学習した端末や機器の物理アドレスと、対応するポート情報を保持する表です。これを確認することで、ポート接続状況の把握・不正端末の検出・ネットワークループの特定など、運用上の重要な判断が可能になります。

本記事では、MACアドレステーブルの仕組みと確認コマンド・フィルタ表示・クリア操作から、障害対応やセキュリティ調査への実践的な活用方法まで、現場で役立つ内容を体系的に解説します。

👷 現場での体験談

あるフロアのPCが突然通信できなくなったという報告を受けた際、まずshow mac address-tableを確認すると、問題のPCのMACアドレスが2つの異なるポートに同時に記録されていました。

調査すると、そのフロアの別席にHUBが無断増設されており、ループが発生していたことが判明。MACフラッピングのログも上がっていました。MACアドレステーブルを起点に調査を始めたことで、原因特定まで15分で完了できました。台帳や物理確認より先にテーブルを確認する習慣がいかに重要かを実感した案件です。

MACアドレステーブル学習と転送の仕組み
MACアドレステーブルの動作:送信元MAC学習→宛先MAC検索→不明時フラッディング

MACアドレステーブルの役割と仕組み

スイッチはL2(データリンク層)でフレームの転送を制御します。その際に使われるのがMACアドレステーブル(CAM:Content Addressable Memory)です。スイッチは受信したフレームの送信元MACアドレスを自動的に学習し、「このMACアドレスはこのポートにいる」という対応関係を記録します。

図1:MACアドレス学習の流れ
PC-A aabb.cc01 Ciscoスイッチ MACテーブルに記録: aabb.cc01 → Gi0/1 aabb.cc02 → Gi0/2 (フレーム受信時に自動学習) PC-B aabb.cc02 Gi0/1 Gi0/2

宛先MACアドレスがテーブルにある場合は該当ポートだけに転送(ユニキャスト)し、テーブルにない場合は全ポートにフラッディングします。これがスイッチとHUBの根本的な違いです。

📋
接続状況の把握
どのポートにどの端末が接続されているかを即座に確認できる
🔍
不正端末の検出
想定外のMACアドレスを発見することで、不正接続を早期に検知できる
🔄
ループ・二重接続の特定
MACフラッピングからネットワークループや二重接続を検出できる
📡
転送の最適化
宛先MACがテーブルにある場合は該当ポートのみに転送し、帯域を節約する

基本確認コマンド

全エントリの表示

Switch# show mac address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    aabb.ccdd.ee01    DYNAMIC     Gi0/1
  10    aabb.ccdd.ee14    DYNAMIC     Gi0/2
  20    aabb.ccdd.ee25    STATIC      Gi0/10
  10    aabb.ccdd.ee99    DYNAMIC     Gi0/1   ← 同ポートに複数端末(HUB経由)
フィールド意味着目ポイント
VlanVLAN ID意図しないVLANに端末がいないか確認
Mac Address端末のMACアドレス台帳と照合して未登録MACがあれば不正接続を疑う
TypeDYNAMIC / STATIC想定外のSTATICエントリがあれば設定を確認
Ports接続ポート同一ポートに多数のMACがある場合はHUB経由または不審

エントリ数の確認

テーブル全体を表示する前に、まずエントリ数だけ確認したい場合はcountオプションが便利です。

Switch# show mac address-table count

Mac Entries for Vlan 10:
Dynamic Address Count:    48
Static  Address Count:     2
Total Mac Addresses:      50

特定MACやVLANでのフィルタ表示

テーブルのエントリが多い場合、絞り込み検索が調査効率を大きく上げます。現場でよく使うフィルタ表示を整理します。

! 特定MACアドレスを検索(端末がどのポートにいるか)
Switch# show mac address-table address aabb.ccdd.ee14

! 特定VLANのエントリのみ表示
Switch# show mac address-table vlan 20

! 特定ポートに接続された端末を調べる
Switch# show mac address-table interface GigabitEthernet0/1

! 動的エントリのみ表示
Switch# show mac address-table dynamic

! 静的エントリのみ表示
Switch# show mac address-table static
調査シナリオ使うコマンド
「このPCはどのポートに接続されているか」show mac address-table address [MAC]
「このポートにはどんな端末が接続されているか」show mac address-table interface [IF名]
「このVLANに接続されている端末一覧」show mac address-table vlan [VLAN ID]
「手動設定されているエントリはどれか」show mac address-table static
図2:調査シナリオ別のコマンド使用頻度(現場経験ベース)

動的と静的MACエントリの違い

DYNAMIC(動的エントリ)
  • 通信時に自動学習される
  • エージングタイム(デフォルト300秒)経過後に自動削除
  • スイッチ再起動でリセット
  • 通常の端末接続はこちら
Type: DYNAMIC
STATIC(静的エントリ)
  • 管理者が手動で設定
  • エージングせず常に有効
  • スイッチ再起動でも保持される
  • ポートセキュリティやスティッキーMACで生成される場合も
Type: STATIC

エージングタイムの確認と変更

DYNAMICエントリが自動削除されるまでの時間(エージングタイム)を確認・変更できます。デフォルトは300秒(5分)です。

! エージングタイムの確認
Switch# show mac address-table aging-time

Global Aging Time:  300

! エージングタイムの変更(VLAN指定可能)
Switch(config)# mac address-table aging-time 600
Switch(config)# mac address-table aging-time 600 vlan 10
ℹ エージングタイムと障害調査の関係 障害が発生して調査を始めた段階で、問題の端末がすでにエージングアウトしている可能性があります。MACアドレステーブルの調査は障害検知後すぐに実施することが重要です。エージングタイムを長めに設定しておくと、障害時の調査に役立ちます。

MACフラッピングの検出と対応

MACフラッピングとは、同じMACアドレスが短時間で異なるポートに出現する現象です。ネットワークループや二重接続(同じ端末が複数ポートに接続)が原因として疑われます。

%SW_MATM-4-MACFLAP_NOTIF: Host aabb.ccdd.ee14 in vlan 10 is flapping between port Gi0/1 and port Gi0/2

MACフラッピング発生時の調査手順

1
ログでフラッピングしているMACとポートを特定
Switch# show logging | include MACFLAP
2
現在のMACテーブルで当該MACの位置を確認
Switch# show mac address-table address aabb.ccdd.ee14
3
フラッピングポートの物理配線とトポロジを確認
Gi0/1とGi0/2の先にある機器・ケーブルを物理的に確認。HUBの不正接続・スイッチ間の二重配線が多い
4
STPの状態を合わせて確認
Switch# show spanning-tree vlan 10
🚨 MACフラッピングは即座に対応が必要 MACフラッピングが継続するとMACアドレステーブルが不安定になり、フラッディングが増加して帯域を圧迫します。最終的にブロードキャストストームに発展する可能性があります。ログを確認したらその場で物理配線の確認を行ってください。

テーブルのクリアと再学習

調査のために動的エントリを消去して再学習させたり、特定の条件でエントリを削除することができます。

! 全ての動的エントリを削除
Switch# clear mac address-table dynamic

! 特定VLANの動的エントリのみ削除
Switch# clear mac address-table dynamic vlan 10

! 特定MACアドレスのエントリを削除
Switch# clear mac address-table dynamic address aabb.ccdd.ee14

! 特定ポートのエントリを削除
Switch# clear mac address-table dynamic interface GigabitEthernet0/1
⚠ clear前に現在のテーブルを保存しておく clear mac address-table dynamicを実行するとその時点の学習情報がすべて消えます。調査の証跡として、クリア前にshow mac address-tableの出力をログとして保存してからクリアを実施してください。

セキュリティ調査への活用

不正端末の検出フロー

MACアドレステーブルは、管理台帳との突き合わせによって不正端末を発見できます。

確認内容疑われる事象対処
台帳未登録のMACアドレスが存在不正端末・無断持ち込みPC・個人スマートフォンポートの物理確認・ポートセキュリティで遮断
同一ポートに多数のMACが存在HUBの無断増設、または不正スイッチの接続物理確認・BPDU Guardの設定検討
登録済みMACが別ポートから出現端末の無断移動・MACスプーフィング攻撃前後のログ確認・監視強化
想定外のVLANにMACが存在VLAN設定ミス・VLANホッピング攻撃の可能性VLAN設定の確認・ポートのアクセスVLAN確認

ポートセキュリティとの組み合わせ

MACアドレステーブルの監視に加えて、ポートセキュリティを設定することで不正端末を自動遮断できます。

! ポートセキュリティの設定例(1ポートに最大1台まで許可)
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security violation restrict
Switch(config-if)# switchport port-security mac-address sticky

! ポートセキュリティの状態確認
Switch# show port-security interface GigabitEthernet0/1
図3:MACアドレステーブル活用場面の比較

運用上の注意点まとめ

注意点内容
調査は即時実施エージングタイム(デフォルト300秒)で動的エントリが消える。障害検知後すぐに確認する
再起動でリセットスイッチ再起動でDYNAMICエントリはすべて消える。調査前に出力を保存しておく
リンク切断でも変化ポートダウン時に対応するMACエントリが削除される。ポートを抜く前に確認する
ポートセキュリティと併用不正端末を自動遮断するならポートセキュリティをセットで設定する
MACフラッピング即対応フラッピングログを確認したら物理配線とトポロジを即座に確認する

まとめ

MACアドレステーブルは、Ciscoスイッチでの接続状況確認・端末特定・セキュリティ調査に欠かせない情報源です。

  • show mac address-tableで全エントリを確認。address/vlan/interfaceで絞り込める
  • DYNAMICは自動学習・エージング削除、STATICは手動設定で常時保持
  • MACフラッピングはループや二重接続のサイン。show logging | include MACFLAPで確認
  • clear mac address-table dynamicで再学習。クリア前に出力を保存すること
  • 不正端末検出にはポートセキュリティとの組み合わせが有効
  • 調査はエージングタイム内に実施。障害検知後すぐにテーブルを確認する習慣をつける

障害対応やセキュリティ調査でMACアドレステーブルを起点にすることで、原因特定までの時間を大幅に短縮できます。