前の記事では、 VLANを使うと1台の物理スイッチを論理的に複数のLANへ分割できる ことを学びました。
たとえば、1台のL2スイッチに VLAN 10とVLAN 20を作成するとします。
ここで、次の疑問が出てきます。
どのような設定をするのでしょうか?
さらに、スイッチが2台になった場合、 VLAN 10とVLAN 20の両方を 1本のスイッチ間リンクで運ぶにはどうすればよいのでしょうか。
そこで登場するのが、 Access(アクセスポート)と Trunk(トランクポート)です。
AccessポートとTrunkポートの違いを暗記するのではなく、 「Accessは端末を1つのVLANへ所属させる」 「Trunkは1本のリンクで複数VLANを運ぶ」 という役割の違いを理解することが目標です。
AccessポートとTrunkポートの違い
まずは2つの違いを大まかに理解しましょう。
基本的に1つのVLANに所属するポート
PC・プリンターなどの接続で利用1本のリンクで複数VLANを運ぶポート
スイッチ間などで利用
Access=基本的に1 VLAN
Trunk=複数 VLAN
Accessポートとは?
Accessポートとは、 基本的に1つのVLANに所属させるポートです。
PCやプリンターなどの一般的な端末を スイッチへ接続するときによく利用します。
たとえばGi0/1を Access VLAN 10として設定すると、 Gi0/1から入ってきた通常のフレームは VLAN 10に所属する通信として扱われます。
PCが「VLAN 10」と指定して送信するわけではない
ここは初学者が混乱しやすいポイントです。
一般的なPCをAccessポートへ接続している場合、 PCは通常、 「これはVLAN 10のフレームです」と指定して送信しているわけではありません。
どのVLANとして扱うかは、 スイッチ側のAccessポート設定 によって決まります。
一般的な端末とのAccessリンクでは、 端末側は通常VLANタグを意識しません。 スイッチが 「このポートから入った通信はVLAN 10」 のように判断します。
CiscoスイッチでAccessポートを設定する
Cisco IOSでは、たとえばGi0/1を VLAN 10のAccessポートにする場合、 次のように設定します。
Switch> enable
Switch# configure terminal
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
重要なのは次の2行です。
switchport mode access
ポートをAccessモードにする
switchport access vlan 10
AccessポートをVLAN 10へ所属させる
これにより、 Gi0/1へ接続した端末の通信は VLAN 10として扱われます。
なぜTrunkポートが必要なの?
次に、2台のスイッチを接続するケースを考えます。
VLAN 10
VLAN 20
VLAN 10
VLAN 20
PC-AとPC-CはVLAN 10、 PC-BとPC-DはVLAN 20です。
Switch-AとSwitch-Bの間では、 VLAN 10とVLAN 20の両方の通信 を運ぶ必要があります。
VLAN 10なのかVLAN 20なのかどうやって区別するのでしょうか?
そこで利用されるのが TrunkポートとIEEE 802.1Q です。
Trunkポートとは?
Trunkポートとは、 1本のリンクで複数のVLANの通信を運ぶためのポート です。
たとえばTrunkリンクであれば、 VLAN 10、20、30など 複数のVLANを1本の物理リンク上で運ぶ ことができます。
802.1QタグでVLANを識別する
Trunkリンクで複数VLANを運ぶ場合、 どのフレームがどのVLANに所属しているのかを 識別する必要があります。
そこで代表的に利用されるのが IEEE 802.1Q(dot1q)です。
802.1Qでは、 EthernetフレームへVLANを識別するための 4バイトのタグ情報 を挿入します。
前の記事で、 VLAN IDは12ビットで表現されると学びました。
このVLAN IDを利用することで、 Trunkリンクを流れるフレームが VLAN 10なのかVLAN 20なのか を識別できます。
AccessからTrunkへフレームが流れる仕組み
ここまでを一連の通信として確認してみましょう。
PC-Aから、別のスイッチに接続された 同じVLAN 10のPC-Cへ通信するとします。
PC-Aが通常のEthernetフレームを Accessポートへ送信
Switch-Aは受信ポートの設定から VLAN 10の通信として扱う
Trunkリンクを通過するとき、 802.1Qによって VLAN 10を識別できる状態で転送
Switch-BはVLAN情報をもとに VLAN 10の転送先を判断
PC-C側のAccessポートから 通常のEthernetフレームとして端末へ転送
一般的なAccessポートに接続されたPCとの通信では、 端末が通常802.1Qタグを意識する必要はありません。
複数VLANを同じ物理リンクで識別して運ぶ Trunkリンクで802.1Qタグが重要になります。
Native VLANとは?
802.1QのTrunkを学習すると、 Native VLANという言葉も登場します。
Native VLANとは、 802.1Q Trunkにおいて 通常タグなしで送受信されるVLAN です。
この段階では、 「Trunkでも例外的にタグなしで扱うVLANが存在する」 と理解しておけば十分です。
CiscoスイッチでTrunkポートを設定する
たとえばGi0/24をTrunkポートにする場合、 次のように設定します。
Switch> enable
Switch# configure terminal
Switch(config)# interface GigabitEthernet0/24
Switch(config-if)# switchport mode trunk
さらに、Trunkリンクで通過を許可するVLANを 制限することもできます。
Switch(config-if)# switchport trunk allowed vlan 10,20
この場合、 Trunkリンクで許可されるVLANは VLAN 10とVLAN 20です。
switchport mode trunk
ポートをTrunkモードにする
switchport trunk allowed vlan 10,20
TrunkでVLAN 10・20を許可する
AccessポートとTrunkポートを比較
| 項目 | Access | Trunk |
|---|---|---|
| 主な用途 | 端末接続 | スイッチ間など |
| 扱うVLAN | 基本的に1つ | 複数 |
| 802.1Qタグ | 一般的な端末側では通常意識しない | VLAN識別に利用 |
| 代表的な接続 | PC ─ Switch | Switch ─ Switch |
| Cisco設定 | switchport mode access |
switchport mode trunk |
ここで実際に試してみよう:Access / Trunk判定シミュレーター
ネットワーク構成を選択して、 AccessとTrunkのどちらを利用するべきか考えてみましょう。
Port Mode Simulator
この接続ではどちらのポートを利用する?
AccessまたはTrunkを選択してください
接続する機器と、リンク上で扱うVLAN数を考えてみましょう。
理解度チェック:フレームはどう変化する?
PC-AからSwitch-Aへ入り、 Trunkリンクを通ってSwitch-BのPC-Cへ届くまでを 順番に確認してみましょう。
AccessとTrunkでよくある勘違い
いいえ。 Trunkは複数VLANを運ぶ仕組みです。 VLAN 10とVLAN 20を相互通信させる機能ではありません。
いいえ。 AccessポートもVLANに所属します。 たとえば Access VLAN 10 として設定します。
いいえ。 Allowed VLANを設定して、 通過を許可するVLANを制限 できます。
Trunkでも異なるVLAN同士は通信できない
ここは次の記事につながる非常に重要なポイントです。
たとえばVLAN 10とVLAN 20を Trunkリンクで運べるようにしたとします。
VLAN 20 複数VLANを転送
Trunkは、 VLAN 10とVLAN 20のフレームを それぞれのVLANとして運ぶだけです。
VLAN 10の端末からVLAN 20の端末へ通信するには、 L2スイッチの機能だけでは足りません。
ネットワーク機器はどのように転送先を判断するのでしょうか?
ここから必要になるのが、 ルーティングというL3の仕組みです。
確認問題:AccessとTrunkを理解できたか確認しよう
一般的なPCをVLAN 10へ接続するとき、 スイッチ側で利用する代表的なポートはどれですか?
一般的なPCなどを特定のVLANへ所属させる場合、 Accessポートを利用するのが代表的です。
Switch-AとSwitch-Bの1本のリンクで VLAN 10・20・30を運びたい場合、 適切なのはどれですか?
1本の物理リンクで複数VLANを運ぶ場合は Trunkポートを利用します。
Trunkポートを設定すれば、 VLAN 10とVLAN 20は自動的に相互通信できますか?
Trunkは複数VLANを識別して運ぶ仕組みです。 異なるVLAN間を通信させるには、 ルーターやL3スイッチによるルーティングが必要です。
3問に挑戦してみましょう。
まとめ
Accessポートは 基本的に1つのVLANへ端末を所属させる ポート
Trunkポートは 1本のリンクで複数VLANを運ぶ ポート
Trunkリンクでは IEEE 802.1Q によりVLANを識別する
一般的なAccess接続の端末は、 通常VLANタグを意識する必要がない
TrunkはVLANを運ぶ仕組みであり、 異なるVLAN間をルーティングする機能ではない
次は「ルーティングとは?パケット転送の基本を理解する」を学びましょう
ここまでで、 L2スイッチ、MACアドレステーブル、VLAN、 Accessポート、Trunkポートと、 L2ネットワークの基本的な仕組み を学習しました。
しかし、VLAN 10とVLAN 20のような 異なるIPネットワーク同士を通信させる にはL2の知識だけでは足りません。
次はL3へ進み、 ルーターが 宛先IPアドレスとルーティングテーブルを使って、 パケットの転送先を決める仕組み を学習します。
ルーティングとは?パケット転送の基本を理解する →
