【入門編】 BPDUガード(BPDU Guard)の機能とエッジポート保護 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

こんにちは!ネットワークの世界へようこそ。インフラアーキテクトの私です。

日々のインフラ構築や運用、本当にお疲れ様です。スイッチの電源を入れてケーブルを挿せば、魔法のように通信ができるイーサネットの世界ですが、その裏側ではネットワークの平和を守るためのさまざまな「番人たち」が働いています。

今回は、そんな番人のひとりである「BPDUガード(BPDU Guard)」について、一緒に優しく紐解いていきましょう。「名前からして何やら難しそう…」と思うかもしれませんが、一歩ずつ身近な例えから見ていけば、すぐに「なるほど!」と腑に落ちるはずです。それでは、さっそく世界を覗いてみましょう!

—

1. なぜスイッチの世界には「番人」が必要なのか?

皆さんは、オフィスや学校のデスクの下にある小さなスイッチングハブや、壁のLANポートを思い浮かべてみてください。あれらは通常、パソコンやIP電話といった「端末(エンドユーザーの機器)」が接続される場所ですよね。ネットワークの世界では、こうした端末が繋がるポートのことを「エッジポート」と呼びます。

エッジポートの役割はシンプルです。「そこにつながっているパソコンとだけ通信すること」。ほら、おうちの玄関のようなものです。

ここで、少し想像してみてください。もし、誰かが悪意を持って(あるいはうっかりミスで)、そのオフィスのデスクの下のLANポートに別の謎のネットワークスイッチをケーブルで繋いでしまったら、何が起きるでしょうか?

郵便配達のパニックに例えてみよう

ネットワークの通信は、いわば「郵便配達」に似ています。スイッチは郵便局の仕分け人です。
通常、エッジポート(玄関)には「手紙(データ)を出す人や受け取る人(パソコン)」だけがいてほしいのです。

ところが、そこに突然「別の小さな郵便局(勝手に持ち込まれたスイッチ)」が接続されたとします。その小さな郵便局が、勝手に独自の配達ルール(スパニングツリープロトコル:STPのBPDUという制御メッセージ)を大声で叫び始めると、どうなるでしょう?

「おい!こっちの道の方が早いから、みんなこっちを通れ!」
「いや、こっちが正解ルートだ!」

元々きちんと秩序が保たれていたオフィスのネットワーク全体で、郵便局同士の主導権争いが始まり、手紙がぐるぐると同じ場所を回り続ける「ルーピング(通信の嵐)」が発生してしまいます。結果、ネットワーク全体がフリーズし、「ネットが繋がらない!」と大パニックになるわけです。

こんな悲劇を防ぐために登場するのが、今回主役の「BPDUガード」という強力なセキュリティ機能なんです。

—

2. BPDUガードの仕組みと「エラーディセーブル」

では、BPDUガードは具体的にどうやってネットワークを守るのでしょうか?

基本のルールはとてもシンプルです。
「ここはエッジポート(パソコンが繋がるべき場所)だから、外のスイッチから届くはずのない制御メッセージ(BPDU)が流れてきたら、即座にこのポートをシャッターを下ろして封鎖する!」

この「シャッターを下ろしてポートを完全に無効化する状態」のことを、ネットワークの業界用語で「エラーディセーブル(Err-disabled)状態」と呼びます。

エッジポートに間違えてスイッチが接続された瞬間、BPDUガードがそれを検知し、瞬時にそのポートをピタッと止める。これにより、ネットワーク全体がループの渦に巻き込まれるのを未然に防いでくれるのです。まさに、オフィスの平和を守る優秀な警備員ですよね。

—

3. 実務で設定してみよう!Ciscoスイッチでの具体例

「理屈は分かったけれど、実際の設定はどうやるの?」という方のために、ネットワーク機器で圧倒的なシェアを誇るCisco Catalystスイッチを例に、実際のCLI設定を見ていきましょう。

実務では、エンドユーザーが繋がるアクセスポートに対して「ここはエッジポートですよ」と教える設定(spanning-tree portfast)とセットでBPDUガードを有効にするのが定番のベストプラクティスです。

以下の設定例を参考にしてみてください。

! 1. 特権EXECモードに移動します
enable

! 2. グローバルコンフィギュレーションモードに移動します
configure terminal

! 3. スイッチ全体で「ポートファーストが有効なポートに、うっかりBPDUが来たら即座にポートを落とす」機能を有効にします
spanning-tree portfast default
spanning-tree portfast bpduguard default

! 4. 個別のポート(ここではFastEthernet 0/1)に対して個別にエッジポート設定とBPDUガードを適用する場合の書き方
interface FastEthernet0/1
 description ユーザー端末接続用ポート
 switchport mode access
 spanning-tree portfast
 spanning-tree bpduguard enable

! 設定を保存します
end
write memory

このように設定しておけば、もし誰かがポート FastEthernet0/1 に勝手なスイッチを接続してBPDUを送信してきた場合、スイッチは次のようなログをシステムに残し、ポートを自動的にシャットダウン(エラーディセーブル)します。

%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Fa0/1 with BPDU Guard enabled. Disabling port.
%PM-4-ERR_DISABLE: bpduguard error detected on Fa0/1, putting Fa0/1 in err-disabled state

コンソールにこのログが出たら、「おっ、誰かがエッジポートにスイッチを挿したな?」とすぐに特定できるわけですね。

—

4. トラブルシューティングの現場から:もしポートが落ちてしまったら?

現場でよくあるのが、「総務部の〇〇さんが、自分のデスクの下の配線を綺麗にしようと、Amazonで買った安価なハブを勝手に挿したら、その周辺のネットが全部繋がらなくなった!」というお問い合わせです。

現地に駆けつける(あるいはリモートで確認する)と、そのポートがエラーディセーブル状態になっています。

復旧の手順は以下の通りです:
1. まず、原因となっている不正な機器(勝手に持ち込まれたスイッチやハブ)を物理的に取り外します。(これ最重要です!)
2. ポートの電源を一度入れ直すか、管理コマンドでリセットします。

コマンドで手動復旧させる場合は、対象のインターフェースモードに入って以下のように再起動(shutdownからのno shutdown)を行います。

! コンフィギュレーションモードへ移動
configure terminal

! 該当のポートを指定
interface FastEthernet0/1

! 一度ポートを完全にシャットダウン
shutdown

! 数秒待ってから、再度ポートを有効化(これでエラーディセーブル状態が解除されます)
no shutdown

end

【プロの裏技】自動復旧(Err-disable Recovery)の設定

「遠隔地の拠点だから、わざわざ現地に行かずに勝手に復旧してほしい!」という場合は、一定時間経ったら自動的にポートを復活させる機能もあります。ただし、原因の機器が繋がったままだとループが再発するため、利用には少し注意が必要です。

! エラーディセーブルになったポートを、300秒(5分)後に自動で復旧させる設定
errdisable recovery cause bpduguard
errdisable recovery interval 300

—

まとめ

今回は、ネットワークの安全を守る「BPDUガード」について解説しました。

  • エッジポート(端末用の出口)に不正なスイッチが接続されるのを防ぐ
  • 怪しい制御メッセージ(BPDU)を検知すると、瞬時にポートをエラーディセーブル(封鎖)する
  • ネットワーク全体の致命的なループ(通信障害)を未然に食い止める

日々のインフラ運用において、こうしたセキュリティ機能の積み重ねが、巨大で安定したネットワーク基盤を支えています。「なんだか難しそう」と感じていた方も、こうして役割や例えで見ていくと、ネットワークの仕組みがぐっと身近に感じられるのではないでしょうか?

それでは、また次回の深淵でお会いしましょう。快適なネットワークライフを!

コメント

タイトルとURLをコピーしました