ネットワークエンジニア研修の2回目です。前回のIPアドレスとサブネット計算で「同じサブネットかどうか」を判断できるようになりました。今回は、その同じサブネットの中でフレームがどうやって相手まで届くのか、つまりスイッチの動作とVLANを扱います。座学・コマンド出力の読み方・自分のPCでできるハンズオン・演習問題と解答・現場でのつまずき方の順で進みます。
この回で身につくこと
- スイッチがMACアドレステーブルを使って転送先を決める流れを説明できる
- 宛先が「テーブルにある」「テーブルにない」「ブロードキャスト」の3つで動作が変わることを説明できる
- コリジョンドメインとブロードキャストドメインの数を数えられる
- VLANを分ける理由と、分けたあとに何が必要になるかを説明できる
show mac address-tableとshow vlan briefの出力を読める
前提/環境
- 手を動かす環境: Windows 11 のコマンドプロンプト(管理者権限は不要)
- コマンド出力の例: Cisco IOS のスイッチ
- 例に使うアドレス: 192.168.10.0/24(プライベートアドレス)
- スイッチの実機は不要です。出力例を読む形で進めます
座学
MACアドレスとは
IPアドレスがネットワーク上の「住所」だとすると、MACアドレスは機器そのものに焼かれた「製造番号」です。48bit(6オクテット)で表します。
00-1A-2B-3C-4D-5E
└────┬────┘└────┬────┘
前半24bit 後半24bit
OUI 製造番号
(ベンダー識別子) (ベンダーが機器ごとに振る)
・OUI はIEEEに登録された番号で、どのベンダーの製品かが分かる
・表記は環境によって変わる
Windows 00-1A-2B-3C-4D-5E
Linux 00:1a:2b:3c:4d:5e
Cisco 001a.2b3c.4d5e ← 4桁ずつ区切る
・すべてFの ff:ff:ff:ff:ff:ff はブロードキャスト(全員宛て)
スイッチの4つの動作
スイッチがやっていることは、次の4つだけです。これが分かればスイッチは理解できたと言えます。
1) 学習(Learning)
フレームを受け取ったら、その「送信元MACアドレス」と
「入ってきたポート」の組をテーブルに記録する
2) 転送(Forwarding)
宛先MACアドレスがテーブルにあれば、そのポートだけに送る
3) フラッディング(Flooding)
宛先MACアドレスがテーブルに無ければ、受信したポート以外の
すべてのポート(同じVLAN内)に送る
4) エージング(Aging)
一定時間(Cisco の既定は300秒)通信がないエントリは消す
ここで大事なのは、学習に使うのは「送信元」、転送の判断に使うのは「宛先」という点です。試験でもよく問われます。
PC-A(001a.1111.1111)が PC-B(001a.2222.2222)へ送る場合
① A から Fa0/1 にフレームが入る
→ スイッチは「001a.1111.1111 は Fa0/1」と学習する
② 宛先 001a.2222.2222 をテーブルで探す
→ 無ければ Fa0/1 以外の全ポートへフラッディング
③ B が応答すると、その送信元から
「001a.2222.2222 は Fa0/2」と学習する
④ 以降、A → B のフレームは Fa0/2 だけに送られる
コリジョンドメインとブロードキャストドメイン
コリジョンドメイン 信号がぶつかりうる範囲
スイッチは「ポートごと」に分割する
ブロードキャストドメイン ブロードキャストが届く範囲
スイッチでは分割されない
分割するのは「ルータ」または「VLAN」
8ポートのスイッチ1台(全ポートが同じVLAN)
コリジョンドメイン 8
ブロードキャストドメイン 1
同じスイッチで VLAN10 に4ポート、VLAN20 に4ポート
コリジョンドメイン 8
ブロードキャストドメイン 2 ← VLANの数だけ増える
機器ごとの違い
リピータ/ハブ すべてのポートが1つのコリジョンドメイン
ブロードキャストドメインも1つ
スイッチ ポートごとにコリジョンドメインを分割
ブロードキャストドメインは1つ(VLANで分割可能)
ルータ ブロードキャストドメインを分割する
VLANで分ける理由
VLANは、1台のスイッチを論理的に複数のスイッチに分ける機能です。分ける理由は3つあります。
- ブロードキャストを減らす。台数が増えるとブロードキャストが全端末に届いて負荷になります。
- 分離する。業務系と来客用の無線を、同じスイッチに収容しつつ通信させない、といった分け方ができます。
- 物理配置に縛られない。2階と3階の端末を同じVLANにまとめる、といったことができます。
VLANを分けるということは、ブロードキャストドメインを分けるということ。
つまり「別のサブネットにする」ということでもある。
VLAN 10 → 192.168.10.0/24
VLAN 20 → 192.168.20.0/24
この2つは別ネットワークなので、
通信させたければ L3(ルータ/L3スイッチ)が必要になる。
アクセスポートとトランクポート
アクセスポート 1つのVLANだけに属する。PCやプリンタをつなぐ
タグは付かない
トランクポート 複数のVLANのフレームを1本で運ぶ
スイッチ間や、スイッチとL3機器の間で使う
どのVLANのフレームかを示すタグを付ける(IEEE 802.1Q)
802.1Q のタグは、イーサネットフレームの途中に4バイト挿入される
タグなし | 宛先MAC | 送信元MAC | タイプ | データ | FCS |
タグあり | 宛先MAC | 送信元MAC | TPID | TCI | タイプ | データ | FCS |
└─── 4バイト ───┘
TPID = 0x8100(タグであることの目印)
TCI にVLAN ID(12bit)が入る
VLAN ID が12bitなので 0 〜 4095。実際に使えるのは 1 〜 4094
ネイティブVLAN
トランクの中で、1つだけタグを付けずに流すVLANがあります。これがネイティブVLANで、既定はVLAN 1です。
トランクを流れるフレーム
VLAN 10 のフレーム → タグあり(VLAN 10)
VLAN 20 のフレーム → タグあり(VLAN 20)
VLAN 1 のフレーム → タグなし(ネイティブVLANのため)
両端でネイティブVLANの番号が違うと、
タグなしフレームが意図しないVLANに入ってしまう
コマンド出力を読む
MACアドレステーブル
SW1# show mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 001a.1111.1111 DYNAMIC Fa0/1
1 001a.2222.2222 DYNAMIC Fa0/2
10 0050.56aa.1c2d DYNAMIC Fa0/5
10 0050.56aa.3f81 DYNAMIC Gi0/1
Total Mac Addresses for this criterion: 4
読み方の要点です。
Vlan列があることに注目します。テーブルはVLANごとに管理されます。DYNAMICは学習で覚えたもの。手動で設定したものはSTATICになります。- 1つのポートに複数のMACが載っていたら、その先にスイッチかハブ、あるいは仮想マシンが居ます。
Gi0/1に多数のMACが載っていれば、それは上位スイッチへのトランクです。
VLANの割り当て
SW1# show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/6, Fa0/7, Fa0/8
10 Gyomu active Fa0/1, Fa0/2, Fa0/5
20 Musen active Fa0/3, Fa0/4
ここに出てくるのはアクセスポートだけです。トランクポートはこの一覧に現れません。「ポートが見当たらない」と思ったら、それはトランクになっています。VLAN名に日本語は使えないため、ローマ字か英語で付けます。
トランクの状態
SW1# show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi0/1 on 802.1q trunking 1
Port Vlans allowed on trunk
Gi0/1 1-4094
Port Vlans allowed and active in management domain
Gi0/1 1,10,20
見る順番は、Status が trunking か → Native vlan が対向と一致しているか → Vlans allowed に必要なVLANが入っているか、の3つです。
設定の例
SW1(config)# vlan 10
SW1(config-vlan)# name Gyomu
SW1(config-vlan)# exit
SW1(config)# interface FastEthernet0/5
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10
SW1(config-if)# exit
SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk allowed vlan 10,20
SW1(config-if)# switchport trunk native vlan 999
機種によっては、トランクにする前に switchport trunk encapsulation dot1q が必要です。このコマンドが無い機種は802.1Qしか対応していないため、指定は不要です。
ハンズオン
自分のMACアドレスを見る
C:\> getmac /v
接続名 ネットワーク アダプター 物理アドレス トランスポート名
============= ============================== ==================== ================
イーサネット Intel(R) Ethernet Connection XX-XX-XX-XX-XX-XX \Device\Tcpip_...
Wi-Fi Wireless-AC XX-XX-XX-XX-XX-XX メディアは切断
前半3オクテットがOUIです。IEEEの登録データベースで検索すると、どのベンダーの製品かが分かります。有線と無線でMACアドレスが違うことも確認してください。MACアドレスは機器ではなくインタフェースごとに付きます。
同じセグメントの機器のMACを見る
C:\> ping 192.168.10.1
C:\> arp -a
インターフェイス: 192.168.10.50 --- 0x5
インターネット アドレス 物理アドレス 種類
192.168.10.1 xx-xx-xx-xx-xx-xx 動的
192.168.10.255 ff-ff-ff-ff-ff-ff 静的
224.0.0.22 01-00-5e-00-00-16 静的
確認してほしいのは次の3点です。
- ブロードキャストアドレス(192.168.10.255)のMACは ff-ff-ff-ff-ff-ff。前回のサブネットの回で計算したブロードキャストアドレスが、L2ではこの形で出てきます。
- 224 で始まるアドレスのMACは
01-00-5eで始まっています。これはマルチキャスト用の決まった形です。 - 別サブネットの相手にpingしても、その相手のMACはテーブルに載りません。載るのはゲートウェイのMACです。
学習とエージングを体験する
C:\> arp -a ← まず現在の状態を見る
C:\> ping 192.168.10.20 ← まだ通信していない相手にpingする
C:\> arp -a ← エントリが増えている
(しばらく放置してからもう一度)
C:\> arp -a ← エントリが消えている
スイッチのMACアドレステーブルでも、同じように「通信すると覚える/放っておくと消える」ことが起きています。PCのARPテーブルで動きを体験しておくと、スイッチの動作も想像しやすくなります。
演習問題
次のMACアドレステーブルを持つスイッチ(全ポートVLAN 1、8ポート)を前提に、1〜3に答えてください。
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 001a.1111.1111 DYNAMIC Fa0/1
1 001a.2222.2222 DYNAMIC Fa0/2
1 001a.3333.3333 DYNAMIC Fa0/3
- Fa0/1 から、宛先
001a.3333.3333のフレームが入ってきた。どのポートから出るか。 - Fa0/1 から、宛先
001a.9999.9999(テーブルに無い)のフレームが入ってきた。どうなるか。 - Fa0/1 から、宛先
ffff.ffff.ffffのフレームが入ってきた。どうなるか。 - このスイッチのコリジョンドメインとブロードキャストドメインはそれぞれいくつか。
- 同じスイッチで、VLAN 10 に4ポート、VLAN 20 に4ポートを割り当てた。コリジョンドメインとブロードキャストドメインはそれぞれいくつになるか。
- VLAN 10 のPCと VLAN 20 のPCは、同じスイッチにつながっていれば通信できるか。できない場合、何が必要か。
- スイッチを2台に増やし、両方に VLAN 10 と VLAN 20 の端末がある。スイッチ間のポートはどう設定するか。
- トランクを流れるフレームのうち、タグが付かないものがある。それは何か。
show vlan briefで Fa0/5 が VLAN 1 に入っていた。ここに VLAN 10 のPCをつないだが通信できない。原因は何か。- スイッチが学習に使うのは、フレームの「送信元MAC」と「宛先MAC」のどちらか。また、転送先の判断に使うのはどちらか。
解答と解説
1〜3(スイッチの3つの動作)
1. Fa0/3 だけに送られる(転送 / Forwarding)
テーブルに宛先があるので、そのポートにだけ送る。
他のポートには流れないので、Fa0/2 の機器はこの通信を見られない。
2. Fa0/1 以外のすべてのポートに送られる(フラッディング)
同じVLANの全ポートが対象。受信したポートには送り返さない。
相手が応答すれば、そこで学習されて次からは転送になる。
3. Fa0/1 以外のすべてのポートに送られる(ブロードキャスト)
宛先が ffff.ffff.ffff のフレームは、テーブルを引くまでもなく
同じVLANの全ポートへ送られる。
結果としてフラッディングと同じ動きになるが、理由が違う点に注意。
4〜5(ドメインの数え方)
4. コリジョンドメイン 8 / ブロードキャストドメイン 1
スイッチはポートごとにコリジョンドメインを分ける。
VLANが1つなので、ブロードキャストの届く範囲は1つ。
5. コリジョンドメイン 8 / ブロードキャストドメイン 2
ポート数が変わらないのでコリジョンドメインは8のまま。
VLANを2つに分けたので、ブロードキャストドメインは2つになる。
6〜8(VLANとトランク)
6. 通信できない。
VLANを分けた時点で別のブロードキャストドメイン、
つまり別のサブネットになる。
通信させるには L3 の機器が必要。
・ルータオンスティック(ルータ1本でサブインタフェースを切る)
・L3スイッチ(SVI: interface Vlan10 などを作る)
7. トランクポートにする。
両側で「トランクモード」「802.1Q」「許可VLANに10と20」
「ネイティブVLANを一致させる」の4点をそろえる。
8. ネイティブVLAN のフレーム。
既定ではVLAN 1。両端で番号が一致していないと、
タグなしフレームが別のVLANに入り込む。
9〜10
9. ポートのアクセスVLANが VLAN 1 のままだから。
PC側の設定は関係ない。スイッチのポートに
switchport mode access
switchport access vlan 10
を設定する必要がある。
「リンクは上がっているのに通信できない」典型例。
10. 学習に使うのは「送信元MAC」。
転送先の判断に使うのは「宛先MAC」。
現場でのつまずき方
VLANを作っただけで通信できると思う
VLANを分けるのは「通信できなくする」設定です。分けたあとに通信させたければ、L3の機器とルーティングの設定、そしてPC側のデフォルトゲートウェイの設定が必要になります。「VLANを作ったのに繋がらない」ではなく、「VLANを作ったから繋がらない」が正しい理解です。
トランクの許可VLANに入れ忘れる
SW1 側 switchport trunk allowed vlan 10,20
SW2 側 switchport trunk allowed vlan 10 ← 20 が抜けている
症状: VLAN 10 は通るが、VLAN 20 だけスイッチをまたげない
VLANを追加したときに、経路上のすべてのトランクに追加するのを忘れる、というのが定番です。switchport trunk allowed vlan add 30 のように add を付けないと、既存の許可リストが置き換わってしまう点にも注意します。
ネイティブVLANの不一致
両端でネイティブVLANが違うと、タグなしフレームが別のVLANに入ります。CDPが動いていればログに不一致の警告が出ますが、気付かないまま「一部の端末だけ変な挙動をする」状態になることがあります。ネイティブVLANは、使っていない番号(例: 999)にそろえておくのが安全です。
アクセスポートに複数のVLANを設定しようとする
アクセスポートは1つのVLANにしか属せません。1本のケーブルで複数のVLANを運びたい場合はトランクにします。なお、IP電話とPCを数珠つなぎにする場合は例外的に音声VLANを併用できますが、基本は「アクセス=1VLAN」です。
スイッチをまたぐとVLANが存在しない
VLAN 10 をSW1で作っても、SW2で作っていなければSW2側では使えません。トランクを通しても、受け側にそのVLANが無ければフレームは捨てられます。VLANは各スイッチで作る必要があります。
ループを作る
スイッチ同士をケーブル2本で直結すると、ブロードキャストがぐるぐる回り続けてネットワーク全体が停止します(ブロードキャストストーム)。これを防ぐのがスパニングツリーで、既定で有効になっている機種がほとんどです。「余っているポートに空いているケーブルを挿してみる」は絶対にやってはいけません。
MACアドレステーブルが埋まる
テーブルには上限があります。埋まると学習できなくなり、フラッディングが増えて性能が落ちます。通常の運用で埋まることは稀ですが、意図的にMACアドレスを大量に送りつける攻撃(MACフラッディング)への対策として、ポートセキュリティで1ポートあたりの学習数を制限します。
「リンクは上がっているのに通信できない」
確認する順番
1) リンクは上がっているか show interfaces status
2) ポートのVLANは正しいか show vlan brief
3) 対向のポートのVLANは正しいか (両側を見る)
4) トランクは張れているか show interfaces trunk
5) MACを学習しているか show mac address-table
6) IPアドレスとマスクは正しいか (前回のサブネットの回)
物理層から順に上げていくのが切り分けの基本です。L1(リンク)→ L2(VLAN・MAC)→ L3(IPアドレス)の順に確認すれば、原因の層を絞り込めます。