ネットワークの海を漂うパケットの挙動に思いを馳せる、インフラエンジニアの皆さん、こんにちは。
今回は、レイヤー2スイッチングの深淵であり、マルチテナント環境やセキュリティ要件の厳しいデータセンター・企業ネットワークの設計において「知っていて当然、しかし実装を誤ると大ハマりする」Private VLAN(PVLAN)を取り上げます。
特に、PVLANを構成する3つのポートロール(Promiscuous、Isolated、Community)が、いかにしてレイヤー2のセグメンテーションの常識を覆し、VLANIDの枯渇問題に終止符を打つのか。パケットのバイナリや実機でのトラブルシューティングの匂いを感じさせながら、徹底的に解説していきましょう。
—
1. PVLANとは何か?なぜ「1つのVLANを細かく切り刻む」必要があるのか
通常のIEEE 802.1Q VLAN環境では、「1つのVLAN = 1つのブロードキャストドメイン = 1つのIPサブネット」が鉄則です。しかし、クラウド基盤やホスティングサービスにおいて、すべてのテナントに別々のVLANを割り当てていたらどうなるでしょうか。VLANの上限である「4094」という数字は、大規模な環境ではあっという間に枯渇します。また、プライベートIPアドレスを節約するために単一の大きなサブネットを切りたいが、「同じセグメントにいるサーバー同士の通信(横方向への通信:東西トラフィック)は完全に遮断したい」という強烈なセキュリティ要件に直面します。
ここで登場するのが、Cisco Systemsが主導し、のちにRFC 5517として定義されたPrivate VLANです。
PVLANの魔法は、1つの「Primary VLAN(プライマリVLAN)」の中に、複数の「Secondary VLAN(セカンダリVLAN)」を内包させる構造にあります。これにより、レイヤー3のIPサブネットを細分化することなく、L2スイッチのハードウェアレベル(ASICの転送テーブル)で「誰と誰が通信できて、誰と誰が通信できないか」を厳格にコントロールできるのです。
—
2. PVLANを構成する3つのポートロールと通信の掟
PVLANを理解するための最大の肝は、スイッチのポートに割り当てられる3つの「ロール(役割)」です。それぞれのポートがどのような運命を背負っているのか、パケットの送受信のルールとともに紐解きます。
① プロミスキャスポート(Promiscuous Port: P-Port)
- 役割: プライマリVLANに所属し、他のすべてのセカンダリVLAN(IsolatedおよびCommunity)と通信が可能な「特権階級」のポートです。
- 主な接続対象: デフォルトゲートウェイとなるルーター、L3スイッチのSVI、ファイアウォール、あるいは管理用の踏み台サーバー。
- 通信の制約: 無制限。Isolatedポートとも、Communityポートとも、他のPromiscuousポートとも双方向で通信できます。
② アイソレーテッドポート(Isolated Port: I-Port)
- 役割: 完全な「孤島」です。セカンダリVLANの中でもIsolated VLANに属します。
- 主な接続対象: 相互通信を絶対に許可してはならない各テナントのWebサーバーや仮想マシン。
- 通信の制約: 同じIsolatedポート同士の通信は、スイッチのハードウェアレベルで完全に破棄(Drop)されます。 通信が許されているのは、唯一「Promiscuousポート(ルーター等)」との間だけです。
③ コミュニティポート(Community Port: C-Port)
- 役割: 「同じ村の住民」です。セカンダリVLANの中でもCommunity VLANに属します。
- 主な接続対象: 同じ部署のPC群や、同じWebクラスタを構成する複数のフロントエンドサーバー。
- 通信の制約: 同じCommunity VLANに属するポート同士であれば、お互いに通信が可能です。しかし、他のCommunity VLANに属するポートや、Isolatedポートとは通信できません。 当然、Promiscuousポートとは通信可能です。
—
3. パケットはスイッチ内でどうルーティングされるか?(通信フローの真実)
「Isolatedポート同士は通信できない」と言いますが、レイヤー2のスイッチはMACアドレス学習に基づいてフレームを転送します。では、同じIsolatedポートに接続されたサーバーAからサーバーBへ、ARPリクエストやICMPパケットが飛んだとき、内部で何が起きているのでしょうか。
ここで鍵を握るのが、PVLANのマッピング情報とPromiscuousポートの存在です。
[サーバーA (Isolated)]
│
▼ (フレーム送信: Source MAC A, Dest MAC B)
[L2 Switch] ──(同居するIsolatedポート同士の直接転送はハードウェア破棄)
│
▼ (プライマリVLANへカプセル化・アップリンク転送)
[ルーター / プロミスキャスポート (P-Port)]
│
▼ (ルーターでルーティング or プロミスキャスポート経由でリダイレクト)
[サーバーB (Isolated)]
1. サーバーAがサーバーBへパケットを送ろうとすると、フレームは一度L2スイッチのIsolatedポートに到達します。
2. スイッチのASICは、送信元がIsolatedポートであり、宛先MACアドレスが同じIsolatedセグメント内であっても、「ポートセキュリティおよびPVLANのルールに基づき、同一セカンダリVLAN内のポート間転送を禁止」しているため、直接ポートBへフォワードしません。
3. 結果として、パケットはPromiscuousポート(ルーター等)を経由せざるを得なくなります。ルーターが間に入らない限り、Isolatedポート間の直接通信は物理的に不可能なのです。これがPVLANのセキュリティ担保の正体です。
—
4. 実務で直面する!Cisco IOSでのPVLAN設定実例
机上の空論はここまでにして、現場で即座に使えるCisco Catalystスイッチでのコンフィグレーションを見ていきましょう。ここでは、VLAN 100をPrimary、VLAN 101をIsolated、VLAN 102をCommunityとして設定します。
スイッチのコンフィグレーション手順
! 1. VTPモードをTransparentに変更(PVLANはVTP V2/V3のTransparent環境でのみ安定稼働します)
vtp mode transparent
! 2. プライマリVLANの作成
vlan 100
name WEB-PRIMARY-VLAN
private-vlan primary
! 3. セカンダリVLAN(Isolated)の作成とプライマリへの紐付け
vlan 101
name TENANT-ISOLATED-VLAN
private-vlan isolated
association 100
! 4. セカンダリVLAN(Community)の作成とプライマリへの紐付け
vlan 102
name DEPT-COMMUNITY-VLAN
private-vlan community
association 100
! 5. プライマリVLANにセカンダリVLANを関連付ける(VLANコンフィグの保存)
vlan 100
private-vlan association 101,102
続いて、各物理ポートをそれぞれのPVLANロールに割り当てます。
! 6. プロミスキャスポートの設定(ルーター接続用:Gi0/1)
interface GigabitEthernet0/1
description Connected to Default Gateway Router
switchport mode private-vlan promiscuous
switchport private-vlan mapping 100 add 101,102
no shutdown
! 7. アイソレーテッドポートの設定(テナントAのサーバー接続用:Gi0/2)
interface GigabitEthernet0/2
description Tenant A - Isolated Server
switchport mode private-vlan host
switchport private-vlan host-association 100 101
no shutdown
! 8. コミュニティポートの設定(開発チームのサーバー接続用:Gi0/3)
interface GigabitEthernet0/3
description Dev Team - Community Server
switchport mode private-vlan host
switchport private-vlan host-association 100 102
no shutdown
この設定により、Gi0/2のサーバーは外の世界(ルーター経由)としか話せなくなり、Gi0/3のサーバーは同じVLAN 102の仲間とだけ自由に喋れる、堅牢なL2要塞が完成します。
—
5. 現場のシニアが教える「PVLANトラブルシューティングの極意」
PVLANは非常に強力ですが、実務の現場では「設定したのに通信できない」「なぜかルーティングループが起きる」といった罠に足を取られがちです。私自身、幾夜の徹夜を共にしてきたトラブルシューティングのTipsをいくつか授けましょう。
トラブル1: 「Isolatedポート同士でなぜか通信できる?」と思ったら
もしIsolatedポート同士でPingが通ってしまう場合、スイッチのモデルがPVLANのハードウェアフォワーディングをサポートしていないか、あるいはトランクポートを介した対向スイッチへの伝搬設定(PVLAN Trunk Port)が間違っている可能性が高いです。
Cisco環境では、スイッチ間を跨ぐトランクポートで switchport trunk allowed vlan add 100,101,102 を行うだけでなく、プライマリ・セカンダリの関連性が正しくトランク越しに伝わっているかを show vlan private-vlan コマンドで必ず確認してください。
デバッグ用コマンドの活用
実機で状態を確認する際は、以下のコマンドを叩いてパケットの挙動とポートの結びつきを常に疑いましょう。
! PVLANの全体構造とポートの対応関係を確認
show vlan private-vlan
! 各インターフェースのPVLANモードとマッピングの正確性を確認
show interfaces switchport
もし、サーバー側でIPアドレスのスタティック設定をミスしていたり、ハイパーバイザー(VMware ESXi等)のvSwitch側でPVLANのポリシー設定(Promiscuous/Isolated等)が一致していないと、いかに物理スイッチ側を完璧に組んでもパケットは闇に消えます。必ずレイヤー2の終端からレイヤー3のゲートウェイまで、一気通貫でパケットのパスを追跡する習慣を持ちましょう。
—
6. おわりに
Private VLANのプロミスキャス、アイソレーテッド、コミュニティという3つのポートロールは、VLANという古の技術に現代的なセキュリティの息吹を吹き込む美しい仕組みです。
教科書を読んだだけでは「 Isolatedって何だか難しそうだな」と感じるかもしれませんが、パケットがスイッチのASIC上でどう処理され、どこへ弾かれているのかを頭の中でイメージできるようになれば、インフラ設計の引き出しは確実に一段深くなります。
皆さんのネットワークが、今日も無数のパケットを安全かつ軽快に導くことを願って。それではまた、次の技術の深淵でお会いしましょう。
コメント