ネットワーク

ネットワーク研修 スイッチの動作とVLAN

ネットワークエンジニア研修の2回目です。前回のIPアドレスとサブネット計算で「同じサブネットかどうか」を判断できるようになりました。今回は、その同じサブネットの中でフレームがどうやって相手まで届くのか、つまりスイッチの動作とVLANを扱います。座学・コマンド出力の読み方・自分のPCでできるハンズオン・演習問題と解答・現場でのつまずき方の順で進みます。

この回で身につくこと

  1. スイッチがMACアドレステーブルを使って転送先を決める流れを説明できる
  2. 宛先が「テーブルにある」「テーブルにない」「ブロードキャスト」の3つで動作が変わることを説明できる
  3. コリジョンドメインとブロードキャストドメインの数を数えられる
  4. VLANを分ける理由と、分けたあとに何が必要になるかを説明できる
  5. show mac address-tableshow 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つあります。

  1. ブロードキャストを減らす。台数が増えるとブロードキャストが全端末に届いて負荷になります。
  2. 分離する。業務系と来客用の無線を、同じスイッチに収容しつつ通信させない、といった分け方ができます。
  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

読み方の要点です。

  1. Vlan 列があることに注目します。テーブルはVLANごとに管理されます。
  2. DYNAMIC は学習で覚えたもの。手動で設定したものは STATIC になります。
  3. 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

見る順番は、Statustrunking か → 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点です。

  1. ブロードキャストアドレス(192.168.10.255)のMACは ff-ff-ff-ff-ff-ff。前回のサブネットの回で計算したブロードキャストアドレスが、L2ではこの形で出てきます。
  2. 224 で始まるアドレスのMACは 01-00-5e で始まっています。これはマルチキャスト用の決まった形です。
  3. 別サブネットの相手に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
  1. Fa0/1 から、宛先 001a.3333.3333 のフレームが入ってきた。どのポートから出るか。
  2. Fa0/1 から、宛先 001a.9999.9999(テーブルに無い)のフレームが入ってきた。どうなるか。
  3. Fa0/1 から、宛先 ffff.ffff.ffff のフレームが入ってきた。どうなるか。
  4. このスイッチのコリジョンドメインとブロードキャストドメインはそれぞれいくつか。
  5. 同じスイッチで、VLAN 10 に4ポート、VLAN 20 に4ポートを割り当てた。コリジョンドメインとブロードキャストドメインはそれぞれいくつになるか。
  6. VLAN 10 のPCと VLAN 20 のPCは、同じスイッチにつながっていれば通信できるか。できない場合、何が必要か。
  7. スイッチを2台に増やし、両方に VLAN 10 と VLAN 20 の端末がある。スイッチ間のポートはどう設定するか。
  8. トランクを流れるフレームのうち、タグが付かないものがある。それは何か。
  9. show vlan brief で Fa0/5 が VLAN 1 に入っていた。ここに VLAN 10 のPCをつないだが通信できない。原因は何か。
  10. スイッチが学習に使うのは、フレームの「送信元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アドレス)の順に確認すれば、原因の層を絞り込めます。

-ネットワーク
-, ,