概要

プライベートVLAN(PVLAN)によって、同一ネットワーク(VLAN)内でレイヤ2レベルのアクセス制御が可能です。プライベートVLANの仕組みとCisco Catalystスイッチでの設定・確認コマンドについて解説します。

プライベートVLANとは

プライベートVLANとは、レイヤ2レベルでトラフィックを分離するための技術です。同じネットワークアドレスのホスト間の通信をプライベートVLANで制御できます。

集合住宅でインターネット接続を提供するサービスでは、セキュリティやプライバシー保護のためユーザ同士は直接アクセスできないようにする必要があります。そのために、単純にVLANを分けると、VLANとIPネットワークは通常1対1に対応付けます。すると、多数のIPネットワークが必要です。その結果、IPアドレスの無駄が生じ、管理上の負荷も高くなります。このような状況において、プライベートVLANの機能を利用すれば、VLANを分けなくてもレイヤ2レベルでトラフィックを分離することができます。

図 プライベートVLANでトラフィックを分離 その1

サーバファームを一つのネットワークで構成しているときにもプライベートVLANでレイヤ2レベルのトラフィックの分離が有効です。あるサーバが不正侵入されてしまうと、そのサーバを踏み台にしてさらに別のサーバへ不正侵入されてしまう可能性があります。プライベートVLANを利用して、必要なサーバ間のみの通信ができるようにしておけば、万が一、あるサーバが不正侵入されてしまっても不正侵入の被害の拡大を防止することができます。

図  図 プライベートVLANでトラフィックを分離 その2
図 図 プライベートVLANでトラフィックを分離 その2

プライベートVLANの仕組み

プライベートVLANでは、次の3つの種類のVLANを作成します。

  • プライマリVLAN
  • セカンダリVLAN
    • コミュニティVLAN
    • 隔離(isolated)VLAN

プライマリVLANをレイヤ3のIPネットワークに対応づけます。隔離VLANはレイヤ2レベルで完全にトラフィックを分離します。一方、コミュニティVLANは特定のグループ内の通信ができるようにします。そして、隔離VLANとコミュニティVLANのセカンダリVLANは、プライマリVLANと対応付けられます。

そして、プライベートVLANでのスイッチのポートは次の3つあります。

  • 混合(Promiscuous)ポート
  • コミュニティ(Community)ポート
  • 隔離(Isolated)ポート

混合ポートは、プライマリVLANとセカンダリVLANの両方のイーサネットフレームを転送するためのポートです。コミュニティポートはコミュニティVLANのポートで、コミュニティポート間およびコミュニティポートと混合ポート間の通信が可能です。隔離ポートは隔離VLANのポートで、隔離ポートと混合ポート間の通信が可能です。隔離ポート同士の通信はできません。隔離ポートとコミュニティポート間の通信もできません。

図 プライベートVLANの通信
図 プライベートVLANの通信

プライベートVLANの設定と確認コマンド

プライベートVLANの設定は次の手順で行います。

Step1 プライマリVLAN/セカンダリVLANの定義
プライマリVLANおよびセカンダリVLAN(コミュニティ/隔離VLAN)を定義します。
Step2 プライベートVLANのポートの設定
混合ポート/隔離ポート/コミュニティポートの設定を行います。

なお、プライベートVLANはVTPで同期しません。VTPのモードをトランスペアレントモードにする必要があります。VTPモードをトランスペアレントモードにするには、グローバルコンフィグレーションモードで次のコマンドを入力してください。

VTPモード トランスペアレント

(config)#vtp mode transparent

プライマリVLAN/セカンダリVLANの定義

プライマリVLAN、セカンダリVLANを定義するにはグローバルコンフィグレーションモードで次のように設定します。

プライベートVLANの定義

(config)#vlan <vlan-num>
(config-vlan)#private-vlan {primary|isolated|community}

<vlan-num> : VLAN番号

プライマリVLANでは、さらにセカンダリVLANとのマッピングを行います。

プライマリVLAN セカンダリVLANとマッピング

(config)#vlan <vlan-num>
(config-vlan)#private-vlan primary
(config-vlan)#private-vlan association <secondary_vlan_list>

<vlan-num> : VLAN番号
<secondary_vlan_list> : セカンダリVLANのリスト

プライベートVLANのポートの設定

プライベートVLANのポートは前述のように3種類あります。それぞれの設定について解説します。

混合ポート

(config-if)#switchport mode private-vlan promiscuous
(config-if)#switchport private-vlan mapping <primary_vlan_num> <secondary_vlan_list>

<primary_vlan_num> : プライマリVLAN番号
<secondary_vlan_list> : セカンダリVLANのリスト

switchport mode private-vlan promiscuousコマンドでポートを混合ポートとします。そして、switchport private-vlan mappingコマンドによって、混合ポート上で通信を行うプライマリVLANとセカンダリVLANのマッピングを行います。

隔離ポート/コミュニティポート

(config-if)# switchport mode private-vlan host
(config-if)#switchport private-vlan host-association <primary_vlan_num> <secondary_vlan_num>

<primary_vlan_num> : プライマリVLAN番号
<secondary_vlan_num> : セカンダリVLANのリスト

switchport mode private-vlan hostコマンドでポートを隔離ポートもしくはコミュニティポートとして設定します。隔離ポートかコミュニティポートのどちらのポートになるかは、switchport private-vlan host-associationコマンドで決まります。セカンダリVLANとしてコミュニティVLANを指定すればコミュニティポートになります。セカンダリVLANとして隔離VLANを指定すれば隔離ポートです。

プライベートVLANの確認コマンド

プライベートVLANの設定の確認には、主に次のshowコマンドを使います。

コマンド概要
#show vlan private-vlanプライマリ/セカンダリVLANとポートを表示します。
#show vlan private-vlan typeプライマリVLANとセカンダリVLANを表示します。
#show interface switchportインタフェースのプライベートVLANの割り当ての詳細を表示します。
表 プライベートVLANの確認コマンド

show vlan private-vlan [type]

show vlan private-vlanコマンドで、プライマリ/セカンダリVLANとそのポートの割り当てを一覧で表示します。

show vlan private-vlan

SW1-IOU#show vlan private-vlan

Primary Secondary Type              Ports
------- --------- ----------------- ------------------------------------------
100     10        isolated          Et0/0, Et0/1, Et3/0
100     20        community         Et0/2, Et0/3, Et3/0

typeをつけるとプライマリVLANとセカンダリVLANを表示します。

show vlan private-vlan type

SW1-IOU#show vlan private-vlan type

Vlan Type
---- -----------------
10   isolated
20   community
100  primary

show interface switchport

show interface switchportコマンドは、スイッチポートすなわちレイヤ2のポートの詳細情報を表示します。プライベートVLANを割り当てていると、その詳細がわかります。

show interface switchport (混合ポート)

SW1-IOU#show interfaces Ethernet3/0 switchport
Name: Et3/0
Switchport: Enabled
Administrative Mode: private-vlan promiscuous
Operational Mode: private-vlan promiscuous
Administrative Trunking Encapsulation: negotiate
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Administrative private-vlan host-association: none
Administrative private-vlan mapping: 100 (VLAN0100) 10 (VLAN0010) 20 (VLAN0020)
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk Native VLAN tagging: enabled
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk associations: none
Administrative private-vlan trunk mappings: none
Operational private-vlan:
  100 (VLAN0100) 10 (VLAN0010) 20 (VLAN0020)
-- omitted --

show interface switchport (隔離ポート)

SW1-IOU#show interfaces Ethernet0/0 switchport
Name: Et0/0
Switchport: Enabled
Administrative Mode: private-vlan host
Operational Mode: private-vlan host
Administrative Trunking Encapsulation: negotiate
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Administrative private-vlan host-association: 100 (VLAN0100) 10 (VLAN0010)
Administrative private-vlan mapping: none
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk Native VLAN tagging: enabled
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk associations: none
Administrative private-vlan trunk mappings: none
Operational private-vlan:
  100 (VLAN0100) 10 (VLAN0010)
-- omitted --

show interface switchport (コミュニティポート)

SW1-IOU#show interfaces Ethernet0/2 switchport
Name: Et0/2
Switchport: Enabled
Administrative Mode: private-vlan host
Operational Mode: private-vlan host
Administrative Trunking Encapsulation: negotiate
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Administrative private-vlan host-association: 100 (VLAN0100) 20 (VLAN0020)
Administrative private-vlan mapping: none
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk Native VLAN tagging: enabled
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk associations: none
Administrative private-vlan trunk mappings: none
Operational private-vlan:
  100 (VLAN0100) 20 (VLAN0020)
-- omitted --

まとめ

ポイント

  • プライベートVLANによって、同一ネットワーク(プライマリVLAN)内でレイヤ2レベルのトラフィック制御ができます。
  • プライベートVLANの3つの種類のVLANは以下の通りです。
    • プライマリVLAN
    • 隔離VLAN
    • コミュニティVLAN
  • プライベートVLANのポートには以下の3つあります。
    • 混合ポート
    • 隔離ポート
    • コミュニティポート

VLAN(Virtual LAN)の仕組み