この記事は、 「ネットワーク中級編|構築・検証・障害切り分けを身につける」 の第1回です。
初級編で学んだMACアドレスとEthernetフレームの知識を使い、 スイッチがフレームをどのポートへ転送するのかを実務レベルで理解します。
スイッチのMACアドレステーブルとは?学習・転送・エージングと確認コマンドを図解
スイッチは、接続された端末の場所をMACアドレステーブルへ記録し、 Ethernetフレームを必要なポートへ転送します。 この記事では、MACアドレスの学習、未知ユニキャストのフラッディング、 エージング、Cisco IOSの確認コマンド、障害時の読み取り方まで順番に解説します。
スイッチへLANケーブルを挿しただけで、なぜPC-AからPC-Bへフレームを届けられるのでしょうか。 スイッチには、端末のMACアドレスを事前登録する作業をしていないことがほとんどです。
その答えが、MACアドレステーブルの自動学習です。 スイッチは受信したフレームを観察し、「このMACアドレスはこのポートの先にいる」と学習します。
この記事を読み終えるとできること
- MACアドレステーブルの役割を説明できる
- スイッチが送信元MACアドレスから学習する理由を説明できる
- 既知・未知ユニキャストとブロードキャストの転送を区別できる
show mac address-tableの出力を読み取れる- MACアドレスが表示されない原因を切り分けられる
- 1ポートに多数のMACアドレスが表示される理由を判断できる
MACアドレステーブルとは何か
MACアドレステーブルとは、スイッチが「どのMACアドレスが、どのVLANの、どのポートの先に存在するか」を記録した対応表です。
MACアドレステーブルは、機種やベンダーによって次のような名前でも呼ばれます。
- MAC address table
- Forwarding table
- CAM table
- FDB(Forwarding Database)
呼び方が違っても、基本的な役割は同じです。 スイッチはこの表を参照し、受信したEthernetフレームをどのポートへ出力するか判断します。
MACアドレステーブルの基本イメージ
重要:スイッチはIPアドレスではなく、MACアドレスを見てレイヤー2転送を行います。
一般的なレイヤー2スイッチは、Ethernetフレームの宛先MACアドレスとMACアドレステーブルを照合して、出力ポートを決定します。
なぜMACアドレステーブルが必要なのか
ハブは、受信した信号を基本的に他のすべてのポートへ送ります。 一方、スイッチはMACアドレステーブルを使い、必要なポートだけへフレームを転送できます。
| 比較項目 | ハブ | スイッチ |
|---|---|---|
| 転送先の判断 | 原則として判断しない | 宛先MACアドレスを基に判断する |
| 送信範囲 | 他の全ポートへ送る | 必要なポートだけへ送れる |
| 同時通信 | 衝突の影響を受けやすい | ポートごとに独立して通信しやすい |
| 判断に使う情報 | なし | MACアドレステーブル |
MACアドレステーブルがあることで、PC-AからPC-Bへのフレームを、 関係のないPC-Cへ毎回送らずに済みます。帯域を無駄にせず、端末ごとの通信を効率よく処理できます。
ただし、スイッチが宛先MACアドレスをまだ知らない場合や、宛先がブロードキャストの場合は、複数ポートへフレームを転送します。 「スイッチは常に1ポートだけへ送る」とは限りません。
スイッチがMACアドレスを学習する流れ
スイッチがMACアドレスを学習するとき、確認するのは受信したフレームの送信元MACアドレスです。 宛先MACアドレスを学習するわけではありません。
PC-AからPC-Bへ初めて通信する場合
- PC-Aがフレームを送信する PC-Aは、送信元MACアドレスをAAAA、宛先MACアドレスをBBBBとしてフレームを送ります。
- SW1がFa0/1でフレームを受信する SW1は「送信元MACアドレスAAAAのフレームがFa0/1から入ってきた」と確認します。
- 送信元MACアドレスを学習する SW1はMACアドレステーブルへ「AAAAはFa0/1の先に存在する」と登録します。
- 宛先MACアドレスBBBBを検索する まだBBBBのエントリがないため、転送先ポートを特定できません。
- 受信ポート以外へフラッディングする SW1は同じVLANに属するFa0/1以外の対象ポートへフレームを送ります。
- PC-Bが応答する PC-Bからの応答フレームをFa0/2で受信すると、SW1は送信元MACアドレスBBBBをFa0/2へ登録します。
- 次回以降は必要なポートだけへ転送する AAAAとBBBBの両方を学習した後は、PC-A宛てならFa0/1、PC-B宛てならFa0/2へ転送できます。
学習と転送は、見る場所が異なります。
- 学習:送信元MACアドレスと受信ポートを見る
- 転送:宛先MACアドレスをMACアドレステーブルで検索する
すでに同じMACアドレスが登録されている場合
同じMACアドレスのフレームを同じポートで再受信すると、スイッチはエントリの有効時間を更新します。 別のポートで受信した場合は、MACアドレスの接続先が移動したと判断し、ポート情報を更新します。
同じMACアドレスが短時間に複数ポート間を何度も移動する場合は、 ループ、誤配線、NICチーミング、仮想環境、EtherChannel設定不一致などを疑います。 この状態はMACフラッピングと呼ばれます。
宛先MACアドレスによる3つの転送動作
スイッチの転送動作は、宛先MACアドレスがテーブルにあるか、どの種類の宛先かによって変わります。
既知ユニキャスト
宛先MACアドレスがテーブルに登録済みの通信です。 スイッチは登録されたポートだけへ転送します。
未知ユニキャスト
宛先MACアドレスがテーブルにない通信です。 同じVLAN内で、受信ポート以外の対象ポートへフラッディングします。
ブロードキャスト
宛先MACアドレスがFF:FF:FF:FF:FF:FFの通信です。 同じVLAN内で、受信ポート以外へ転送します。
| 宛先の種類 | MACテーブルの状態 | 基本的な転送動作 |
|---|---|---|
| 既知ユニキャスト | 宛先MACアドレスあり | 対応する1ポートへ転送 |
| 未知ユニキャスト | 宛先MACアドレスなし | 同一VLANの受信ポート以外へフラッディング |
| ブロードキャスト | テーブル検索の対象外 | 同一VLANの受信ポート以外へ転送 |
| マルチキャスト | 機能や設定により異なる | IGMPスヌーピング未使用時などは複数ポートへ送られることがある |
送信元と宛先が同じポートの先にいる場合
宛先MACアドレスに対応するポートが、フレームを受信したポートと同じ場合、 スイッチは通常、そのフレームを別ポートへ転送しません。これをフィルタリングと考えると理解しやすいでしょう。
現場での判断
MACアドレステーブルに宛先があるだけでは不十分です。 「どのVLANの、どのポートに登録されているか」「そのポートが受信ポートと同じではないか」まで確認します。
show mac address-tableの読み方
Cisco IOS系スイッチでは、MACアドレステーブルを確認する代表的なコマンドとして
show mac address-table を使用します。
SW1# show mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 0011.2233.4455 DYNAMIC Fa0/1
10 00aa.bbcc.ddee DYNAMIC Fa0/2
20 0050.56aa.1001 DYNAMIC Fa0/10
20 0050.56aa.1002 DYNAMIC Fa0/10
100 00d0.1234.5678 DYNAMIC Gi0/1
Total Mac Addresses for this criterion: 5
| 項目 | 意味 | 読み取り例 |
|---|---|---|
| Vlan | MACアドレスを学習したVLAN | VLAN 10に所属する端末 |
| Mac Address | 学習した端末や機器のMACアドレス | 0011.2233.4455 |
| Type | 動的学習か静的登録かなど、エントリの種類 | DYNAMIC |
| Ports | そのMACアドレスが存在すると判断したポート | Fa0/1 |
出力から分かること
- MACアドレス0011.2233.4455は、VLAN 10のFa0/1側に存在する
- MACアドレス00aa.bbcc.ddeeは、VLAN 10のFa0/2側に存在する
- Fa0/10ではVLAN 20のMACアドレスを2つ学習している
- Gi0/1は上位スイッチなどへの接続である可能性がある
出力だけで接続機器を断定しないでください。 1ポートに複数MACアドレスが表示される理由には、下位スイッチ、IP電話、無線アクセスポイント、ハイパーバイザー、ドッキングステーションなどがあります。 構成図やインターフェース情報と照合します。
よく使う絞り込みコマンド
動的エントリだけ表示
特定MACアドレスを検索
特定インターフェースを確認
特定VLANを確認
コマンド構文や出力形式は、ベンダー、OS、機種、ソフトウェアバージョンによって異なります。 実機ではヘルプ機能や製品ドキュメントも確認してください。
DYNAMIC・STATIC・エージング
DYNAMICエントリ
スイッチが受信フレームの送信元MACアドレスから自動的に学習したエントリです。 一般的な端末のMACアドレスは、多くの場合DYNAMICとして表示されます。
STATICエントリ
管理者の設定や機器内部の処理によって固定的に登録されるエントリです。 動的エントリと異なり、通常のエージングでは削除されません。 表示されるType名や意味は機種によって異なる場合があります。
エージングとは
端末は別ポートへ移動したり、ネットワークから切断されたりします。 古い情報を永久に残すと、誤ったポートへフレームを転送する原因になります。
そこで動的に学習したMACアドレスは、一定時間フレームを受信しなければテーブルから削除されます。 この仕組みをエージングと呼びます。
動的エントリのライフサイクル
Cisco系スイッチでは、初期値が300秒前後の機種が多くありますが、製品や設定によって異なります。 正確な値は実機で確認してください。
MACアドレスがテーブルから消えても、通信不能になったとは限りません。 次に端末がフレームを送信すれば、スイッチは再び学習できます。
VLANとポートを組み合わせて読む
MACアドレステーブルは、MACアドレスだけでなくVLANと組み合わせて管理されます。 同じ物理スイッチでも、VLANが異なれば別のレイヤー2ネットワークとして扱われます。
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 0011.2233.4455 DYNAMIC Fa0/1
20 00aa.bbcc.ddee DYNAMIC Fa0/2
20 0050.56aa.1001 DYNAMIC Gi0/1
30 0050.56aa.2001 DYNAMIC Gi0/1
この出力では、Gi0/1でVLAN 20とVLAN 30のMACアドレスを学習しています。 Gi0/1が複数VLANを運ぶトランクポートであり、上位または下位スイッチにつながっている可能性があります。
アクセスポートで複数MACアドレスが見える例
- IP電話のPCポートを経由してPCが接続されている
- 小型スイッチやハブが接続されている
- 無線アクセスポイントの先に複数クライアントがいる
- 仮想化ホスト上で複数仮想マシンが稼働している
- ブリッジ動作する機器が接続されている
確認の基本セット
MACアドレステーブルだけで判断せず、
show interfaces status、show vlan brief、
トランク情報、LLDP/CDP、構成図、配線表などを組み合わせます。
障害切り分けでの使い方
MACアドレステーブルは、「端末がどこにつながっているか」「スイッチが端末からフレームを受信しているか」を確認する重要な情報です。 ただし、MACアドレスが登録されているだけで、IP通信全体が正常だとは判断できません。
確認例1:端末のMACアドレスが表示されない
物理接続
- LANケーブルが抜けている
- リンクダウンしている
- NICが無効になっている
- 接続ポートを間違えている
端末からフレームが出ていない
- 端末が休止・停止している
- しばらく通信していない
- 静的な観察だけで通信を発生させていない
VLAN・ポート設定
- 想定と異なるVLANに所属している
- ポートがshutdownされている
- 認証やPort Securityで制限されている
確認条件の誤り
- MACアドレスの入力ミス
- 別スイッチを確認している
- 別VLANで検索している
- エージングで削除された直後
確認例2:想定外のポートにMACアドレスがある
端末が移設された、配線表が古い、下位スイッチ経由になっている、無線接続へ変わった、ループが発生しているなどが考えられます。 まず特定MACアドレスの表示を繰り返し確認し、ポートが安定しているかを見ます。
確認例3:同じMACアドレスが複数ポート間を移動する
MACフラッピングが発生している可能性があります。次の順番で確認します。
- 対象MACアドレスと移動先ポートを特定する ログとMACアドレステーブルを確認します。
- 両ポートの接続先を確認する 配線表、LLDP/CDP、現地確認を組み合わせます。
- STPとEtherChannelを確認する ループやポートチャネル設定不一致がないか確認します。
- 正当な移動かを確認する 仮想マシンのライブマイグレーション、無線ローミング、冗長化機能など、正常な理由もあります。
- 影響範囲と発生時刻を記録する 一時的な事象か継続的な事象かを判断し、関係者へ報告します。
基本的な切り分け手順
1. 端末のMACアドレスを確認する
2. 対象VLANを確認する
3. MACアドレステーブルで接続ポートを確認する
4. ポートのリンク状態・VLAN・エラーを確認する
5. 上位/下位スイッチの場合は次のスイッチでも追跡する
6. ARPテーブルやIPアドレス情報と照合する
7. 必要に応じてパケットキャプチャーやログを確認する
MACアドレステーブルはレイヤー2の到達情報です。 エントリが正常でも、IPアドレス、サブネットマスク、デフォルトゲートウェイ、ACL、ルーティング、ファイアウォールなどに問題があれば通信できません。
調査結果の報告例
確認結果:対象端末のMACアドレス0011.2233.4455は、SW1のVLAN 10、Fa0/1で動的学習されています。 Fa0/1はlink upで入力エラーは確認されていません。端末からスイッチまでの物理接続とレイヤー2学習は正常と判断します。 次に端末のIP設定、ARP、デフォルトゲートウェイへの疎通を確認します。
MACアドレステーブルに関するよくある勘違い
スイッチが学習するのは、受信フレームの送信元MACアドレスです。 宛先MACアドレスは転送先を検索するために使います。
MACアドレスの学習はレイヤー2の確認材料です。 IP設定、ルーティング、ACL、DNS、サーバー側など、上位レイヤーの問題は別に確認します。
下位スイッチ、IP電話、アクセスポイント、仮想化ホストなどが接続されていれば、1ポートで複数MACアドレスを学習することがあります。
未知ユニキャストは、同一VLAN内の受信ポート以外へフラッディングされます。 応答が返れば、スイッチは相手のMACアドレスを学習できます。
MACテーブルは非常に有効ですが、単独で機器種別や障害原因を断定せず、VLAN、ポート状態、LLDP/CDP、ARP、構成図などと照合します。
理解度チェック
次の6問に答えてください。解答を見る前に、学習・検索・転送のどの処理かを意識して考えましょう。
問題1.スイッチがMACアドレスを学習するときに使用する情報はどれですか。
- 受信フレームの宛先IPアドレス
- 受信フレームの送信元IPアドレス
- 受信フレームの宛先MACアドレス
- 受信フレームの送信元MACアドレスと受信ポート
解答を見る
スイッチは、送信元MACアドレスとフレームを受信したポートを対応付けて学習します。
問題2.宛先MACアドレスがMACアドレステーブルに存在しない場合、基本的にどのように動作しますか。
- 受信フレームを必ず破棄する
- ルーターへだけ転送する
- 同じVLANの受信ポート以外へフラッディングする
- 送信元ポートへ送り返す
解答を見る
未知ユニキャストは、同一VLAN内の対象ポートへフラッディングされます。
問題3.次の出力から、MACアドレス0011.2233.4455はどこに存在すると判断できますか。
Vlan Mac Address Type Ports
10 0011.2233.4455 DYNAMIC Fa0/7
解答を見る
VLAN 10のFa0/7の先に存在すると判断できます。
DYNAMICなので、受信フレームから自動学習したエントリです。
問題4.Gi0/1に数十個のMACアドレスが表示されました。直ちに異常と判断してよいですか。
解答を見る
いいえ、直ちに異常とは判断できません。
Gi0/1が上位・下位スイッチへのトランク、アクセスポイント、仮想化ホストなどへ接続されている場合は正常です。構成図やポート設定と照合します。
問題5.動的MACアドレスが一定時間後に削除される仕組みを何と呼びますか。
解答を見る
エージングです。
古くなった接続先情報を削除し、端末移動などへ追従するために使われます。
問題6.MACアドレスがテーブルにあるにもかかわらずpingが通りません。次に確認すべき情報を3つ挙げてください。
解答例を見る
- 端末のIPアドレスとサブネットマスク
- デフォルトゲートウェイ
- ARPテーブル
- VLAN設定
- ルーティングテーブル
- ACLやファイアウォール
MACアドレスの学習は、レイヤー2が一部動作していることを示す情報です。IP通信全体の正常性は別途確認します。
実践演習:MACアドレステーブルから接続先を特定する
次の構成とコマンド出力を読み、端末の接続先と確認すべきポイントを考えてください。
演習用ネットワーク
SW1# show mac address-table vlan 10
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 0011.2233.4455 DYNAMIC Fa0/5
10 00aa.bbcc.ddee DYNAMIC Gi0/1
10 0050.56aa.1001 DYNAMIC Gi0/1
10 0050.56aa.1002 DYNAMIC Gi0/1
課題1.PC-Aの接続先を答える
PC-AはSW1のどのポートの先に存在しますか。
解答を見る
Fa0/5です。
PC-AのMACアドレス0011.2233.4455が、VLAN 10のFa0/5で学習されています。
課題2.Server-Aの位置を判断する
Server-AはSW1へ直接接続されていると判断できますか。
解答例を見る
SW1へ直接接続されているとは断定できません。
Server-AのMACアドレスはGi0/1で学習されています。構成図からGi0/1はSW2への接続であるため、Server-AはSW2の先に存在すると考えられます。
課題3.Gi0/1で複数MACアドレスを学習している理由
Gi0/1で3つのMACアドレスを学習している理由を説明してください。
解答を見る
Gi0/1の先にSW2があり、SW2配下の複数端末のフレームがGi0/1を通るためです。
課題4.PC-Aが表示されない場合の確認
PC-AのMACアドレスが表示されなくなった場合、確認する項目を4つ挙げてください。
解答例を見る
- Fa0/5のリンク状態
- Fa0/5のVLAN設定
- PC-AのNICとケーブル
- PC-Aからフレームが送信されているか
- 確認しているMACアドレスが正しいか
- Port Securityや認証で制限されていないか
任意演習:Packet Tracerで学習過程を確認する
- スイッチ1台とPCを3台配置する PCを別々のアクセスポートへ接続し、同一ネットワークのIPアドレスを設定します。
-
通信前のMACアドレステーブルを確認する
show mac address-tableを実行します。 - PC-AからPC-Bへpingする ARPとICMPの通信を発生させます。
- 再度MACアドレステーブルを確認する PC-AとPC-BのMACアドレス、VLAN、ポートを記録します。
- PC-Cとも通信する 新しいエントリが追加されることを確認します。
-
動的エントリをクリアして再確認する
検証環境でのみ
clear mac address-table dynamicを実行し、再通信によって再学習されることを確認します。
業務中のスイッチでMACアドレステーブルをクリアすると、一時的に未知ユニキャストのフラッディングが増える可能性があります。 本番環境では影響を理解し、承認された手順に従って実行してください。
自分の言葉で説明する課題
後輩から「スイッチは、どのポートにPCがいるのか最初から知っているのですか」と質問されました。 60秒程度で説明してください。
説明例を見る
スイッチは最初から端末の場所を知っているわけではありません。 フレームを受信したとき、送信元MACアドレスと受信ポートを対応付けてMACアドレステーブルへ登録します。 フレームを転送するときは宛先MACアドレスをテーブルで検索し、登録済みなら該当ポートだけへ送ります。 未登録なら、同じVLANの受信ポート以外へフラッディングし、応答フレームから相手の場所を学習します。
「送信元から学習」「宛先で検索」「未登録ならフラッディング」の3点を含めて説明できれば、この記事の到達目標を満たしています。
まとめ
- MACアドレステーブルは、VLAN・MACアドレス・ポートの対応表
- スイッチは受信フレームの送信元MACアドレスと受信ポートを学習する
- 転送時は宛先MACアドレスをMACアドレステーブルで検索する
- 既知ユニキャストは該当ポートへ、未知ユニキャストは同一VLAN内へフラッディングする
- 動的エントリは一定時間通信がなければエージングで削除される
- 1ポートに複数MACアドレスが表示されても、構成によっては正常
- 障害切り分けでは、VLAN、ポート状態、ARP、IP設定、構成図と組み合わせて判断する
MACアドレステーブルを読めるようになると、端末の接続先を追跡し、レイヤー2障害の調査範囲を大きく絞り込めます。

コメント