スイッチのMACアドレス:その概要と仕組み
Jul 2nd 2022より更新読了時間約1分
ローカルネットワーク上のすべてのハードウェアには、IPアドレスに加えてMACアドレスがあることにお気づきだろうか。スイッチのMACアドレスを持つスイッチを除き、デスクトップ・コンピューター、ラップトップ、携帯電話、タブレット、ワイヤレス・セキュリティ・カメラ、そして接続されている冷蔵庫に至るまで、インターネットに接続されるすべてのデバイスはこの固有の識別番号を持っています。では、なぜネットワーク機器はネットワークに接続するために2つのアドレスが必要なのでしょうか?IPアドレスで十分ではないでしょうか?MACアドレスは一体何のためにあるのでしょうか?
MAC(メディア・アクセス・コントロール)アドレスを平易な言葉で説明すると、MACアドレスは世界に1つしかない、固有のデジタル指紋と考えることができます。MACアドレスは製造業者によって与えられ、デバイスをネットワークに接続するためのチップに埋め込まれています。ネットワークスイッチの場合、スイッチ上のすべてのインターフェースに1つのMACアドレスが割り当てられているため、多くのMACアドレスを持っている可能性があります。
MACアドレスの概要
MACアドレスは、「ハードウェアアドレス」または「物理アドレス」とも呼ばれ、コンピュータネットワークアダプターを一意に識別するために使用されるバイナリ番号です。イーサネットで送信されるパケットは、常にMACアドレスから送信され、MACアドレスに送信されます。ネットワークアダプタがパケットを受信する場合、パケットの宛先MACアドレスとアダプタ自身のMACアドレスを比較します。アドレスが一致すればパケットは処理され、一致しない場合は破棄されます。従来のMACアドレスは12桁の16進数です。アドレスの左端6桁の16進数はメーカー固有の識別子に対応し、右端6桁はネットワーク・インターフェース・カード(NIC)のシリアル番号に対応します。

MACとIPアドレスの関係
最初は、IPアドレスとMACアドレスはどちらもネットワーク機器の一意の識別子であるため、重複しているように思われるかもしれませんが、実際には異なる目的を果たし、全く異なる方法で表示されます。MACはOSIモデルのレイヤー2で動作し、IPはレイヤー3で動作します。
MACアドレスは通常、データがネットワーク上を移動する際に、あるデバイスから次のデバイスにパケットを転送するためだけに使用されます。つまり、あなたのコンピュータのネットワークアダプタのMACアドレスは、途中の次のデバイスまでしかネットワークを移動しません。ルーターがある場合、マシンのMACアドレスはそれ以上先に進みません。一方、コンピューターがあるIPアドレスx.x.x.xにパケットを送ろうとするとき、最初にチェックされるのは、宛先アドレスがコンピューター自身と同じIPネットワーク内にあるかどうかです。もしx.x.x.xが同じネットワーク内にあれば、宛先IPに直接到達でき、そうでなければ設定されたルーターにパケットを送る必要があります。では、何が起こっているかおわかりですか?MACアドレスはデータパケットを次のデバイスに送信するだけですが、IPアドレスはそれを最終的な宛先に届ける役割を担っています。

スイッチはMACアドレスを何に使用するのか?
スイッチはハブやリピーターとは異なります。ハブは、すべてのポートのすべての信号を他のすべてのポートに再放送するだけで、(非効率的で時間がかかるが)簡単に作ることができます。一方スイッチは、パケットを適切な宛先にのみルーティングすることで、システム間のトラフィックをインテリジェントに誘導します。そのために、各ポートに接続されたNICのMACアドレスを追跡します。スイッチが異なるポートやデバイスを識別するためには、MACアドレスは一意であるか、少なくとも繰り返される可能性が極めて低い必要があります。そのため、スイッチネットワークでは、MACアドレスを手動で設定すると予期しない結果が生じる可能性があります。スイッチは通常、MACアドレステーブルに多くのMACアドレスを予約しています。フレームを転送するとき、スイッチはまず、送信ポートのフレームの宛先MACアドレスでMACアドレステーブルを検索します。送信ポートが見つかれば、フレームはブロードキャストされずに転送されるので、ブロードキャストは削減されます。
スイッチはどのようにMACアドレスを学習するのか?
スイッチにはある程度のインテリジェンスがあるので、MACアドレステーブルを自動的に構築することができます。次のパートでは、スイッチがどのようにMACアドレスを学習するかを説明します。

真ん中にスイッチがあって、周りに3台のコンピューターがあります。すべてのコンピューターはMACアドレスを持っているが、AAA、BBB、CCCと簡略化されています。スイッチはMACアドレステーブルを持っており、ネットワーク内のすべてのMACアドレスがどこにあるかを学習します。さて、コンピュータAがコンピュータBに何かを送信しようとしていると仮定します:

コンピュータAはコンピュータBにデータを送信するため、送信元MACアドレス(AAA)と宛先MACアドレス(BBB)を持つイーサネットフレームを作成します。スイッチにはMACアドレステーブルがあり、次のようなことが起こります:

スイッチはMACアドレステーブルを構築し、ソースMACアドレスからのみ学習します。このとき、コンピュータAのMACアドレスがインタフェース1にあることを学習しました。スイッチはこの情報をMACアドレステーブルに追加します。しかし、スイッチは現在、コンピュータBがどこにあるかという情報を持っていません。残された選択肢は1つだけで、このフレームを元のインターフェイスを除くすべてのインターフェイスからフラッディングすることです。コンピュータBとコンピュータCはこのイーサネットフレームを受信します。

コンピュータBは、このイーサネット・フレームの宛先が自分のMACアドレスであることを知っているので、コンピュータCはそれを破棄します。コンピュータBはコンピュータAに応答し、イーサネットフレームを構築し、スイッチに向けて送信します。スイッチは両方のMACアドレスを知っているので、次回からはイーサネットフレームをフラッディングする代わりに「スイッチ」することができます。コンピュータCは、フラッディングされた最初のフレームを除いて、コンピュータAとBの間のフレームを見ることはありません。「show mac address-table dynamic」コマンドを使えば、スイッチが学習したすべてのMACアドレスを見ることができます。
ここで強調する価値のあるもう1つのポイントは、スイッチ上のMACアドレス・テーブルが動的エントリのエージング・メカニズムを使用していることです。コンピュータAとBのMACアドレスがそのエージング時間内に更新されない場合、新しいエントリのためのスペースを確保するために削除されます。つまり、コンピュータAとBの間のフレームは、AがBに情報を転送したい場合、再びコンピュータCにフラッディングされます。
スイッチのMACアドレステーブルを設定する方法
フレーム転送用にMACアドレステーブルが維持されるが、これは動的に学習されることも、手動で設定することもできます。前者については前章で紹介したが、次の部分では、ネットワークの変化に対応し、ネットワーク・セキュリティを強化するために、MACアドレスを手動で設定する方法を取り上げます。
静的、動的、ブラックホールMACアドレステーブルエントリの設定
ポートのセキュリティを向上させるには、MACアドレステーブルにMACアドレスエントリを手動で追加してポートをMACアドレスとバインドし、MACアドレススプーフィング攻撃を防ぐことができます。さらに、ブラックホールMACアドレスエントリを設定して、特定の送信元または宛先MACアドレスを持つパケットをフィルタリングすることもできます。
静的、動的、またはブラックホールMACアドレステーブルエントリを追加または変更するには、次の手順に従います:
ステップ | コマンド | 備考 |
1. システムビューに入ります。 | system-view | なし |
2. 動的または静的MACアドレスエントリを追加または変更します。 | mac-address { dynamic | static } mac-addressinterface interface-typeinterface-number vlan vlan-id | いずれかのコマンドを使用します。 |
3. ブラックホールMACアドレスエントリーを追加または変更します。 | mac-address blackhole mac-address vlan vlan-id |
マルチポートユニキャストMACアドレステーブルエントリの設定
マルチポートユニキャストMACアドレステーブルエントリを設定すると、ユニキャストMACアドレスを複数のポートに関連付けることができ、エントリに一致するパケットが複数の宛先ポートに配信されます。
マルチポートユニキャストMACアドレステーブルエントリを設定するには、次の手順に従います:
ステップ | コマンド | 備考 |
1. システムビューに入ります。 | system-view | なし |
2. マルチポートユニキャストMACアドレステーブルエントリを設定します。 | mac-address multiport mac-address interface interface-list vlan vlan-id | デフォルトでは、マルチポートユニキャストMACアドレステーブルエントリは存在しません。 VLANを作成し、インターフェイスをVLANに割り当てていることを確認してください。 |
動的MACアドレスエントリーのエージングタイマーの設定
スイッチのMACアドレステーブルは、動的エントリに対してエージングメカニズムを使用するため、エージング時間内に更新されなかったダイナミックMACアドレスエントリは削除され、新しいエントリのためのスペースがが確保されます。また、MACアドレステーブルは、最新のネットワーク変更に対応するためにすぐに更新されます。
動的MACアドレスエントリのエージングタイマーを設定するには、次の手順に従います:
ステップ | コマンド | 備考 |
1. システムビューに入ります。 | system-view | なし |
2. 動的MACアドレスエントリーのエージングタイマーを設定します。 | mac-address timer { agingseconds | no-aging } | オプション。エージング・タイマーの値の範囲は10~3600秒で、デフォルト値は300秒です。 |
ポートにおけるMAC学習制限の設定
MACアドレステーブルが大きくなりすぎてスイッチの転送性能が低下するのを防ぐために、ポートで学習できるMACアドレスの数を制限することができます。
ポートのMAC学習制限を設定するには、次の手順に従います:
ステップ | コマンド | 備考 |
1. システムビューに入ります。 | system-view | なし |
2.イーサネット・インターフェイス、ポート・グループ、またはレイヤ2アグリゲート・インターフェイス・ビューに入ります。 | 1. Enter Ethernet interface view: interface interface-type interface-number 2. Enter port group view: port-group manual port-group-name 3. Enter Layer 2 aggregate interface view: interface bridge-aggregationinterface-number | Use any command.
Settings in Ethernet interface view or Layer 2 aggregate interface view effect on the current port only. Settings in port group view take effect on all the member ports in the port group. |
3.インタフェースのMAC学習上限を設定し、MAC学習上限に達したときに送信元MACアドレスが不明なフレームを転送するかどうかを設定します。 | mac-address max-mac-count { count | disable-forwarding } | デフォルトでは、インターフェイスで学習できるMACアドレスの最大数は指定されていません。 |
VLANにおけるMAC学習制限の設定
また、VLANごとに学習できるMACアドレス数を制限することもできます。
VLANのMAC学習制限を設定するには、次の手順に従います:
ステップ | コマンド | 備考 |
1. システムビューに入ります。 | system-view | なし |
2. Enter VLAN view. | vlan vlan-id | なし |
3. VLANのMAC学習上限値を設定し、上限値に達した場合に送信元MACアドレスが不明なフレームをVLAN内で転送するかどうかを設定します。 | mac-address max-mac-count { count| disable-forwarding } | デフォルトでは、VLANで学習できるMACアドレスの最大数は指定されていません。 |
MACアドレステーブルの表示と管理
タスク | コマンド | 備考 |
1.MACアドレステーブル情報を表示します。 | display mac-address [mac-address [ vlan vlan-id ] | [ [ dynamic | static ] [ interface interface-type interface-number ] | blackhole ] [ vlan vlan-id ] [ count ] ] [ | { begin | exclude | include } regular-expression ] | どのビューでも利用可能 |
2. マルチポートユニキャストMACアドレステーブルエントリを表示します。 | display mac-address multiport [ vlan vlan-id ] [ count ] [ | { begin | exclude | include } regular-expression ] | どのビューでも利用可能 |
3. 動的MACアドレスエントリーのエージングタイマーを表示します。 | display mac-address aging-time [ | { begin | exclude | include } regular-expression ] | どのビューでも利用可能 |
まとめ
確かに、MACというと、男性は素晴らしいコンピュータを、女性は美しいものを思い浮かべる傾向があります。しかし、「MACアドレス」という言葉を聞くと、まったく別の話であることがわかります。MACアドレスはネットワークカードに固有のもので、再利用されることはないため、アプリケーションにおいて非常に便利で重要なものです。ネットワークスイッチは、各ポートで見られるMACアドレスのリストを保存し、パケットを見る必要のあるポートにのみパケットを転送します。ワイヤレス・アクセス・ポイントは、アクセス制御にMACアドレスを使うことが多いです。ワイヤレスアクセスポイントは、MACアドレスをアクセス制御のために使うことが多い。さらに、DHCP(Dynamic Host Configuration Protocol)サーバーは、MACアドレスを使用してデバイスを識別し、一部のデバイスに固定IPアドレスを与えます。