こんにちは!インフラエンジニアの皆さん、そして日夜ネットワークの仕組みと格闘している学習者のみなさん。
ネットワークの世界って、目に見えないデータが瞬く間に世界中を駆け巡っていて、まるで魔法のようですよね。「どうやってあんなに複雑な経路を間違えずに進んでいるんだろう?」と、ワクワクしたことはありませんか?
今回は、そんなイーサネットの世界を支える「スパニングツリープロトコル(STP)」の、ちょっとディープで最高にクールなセキュリティ機能「ルートガード(Root Guard)」について、じっくりとお話ししていきたいと思います。
教科書の硬い定義は少し脇に置いて、身近な世界に置き換えながら、一歩ずつ一緒に理解していきましょう!
—
ネットワークの「お約束」を壊す者たち
会社や学校で、誰かがうっかり自分の小さなスイッチをオフィスのコンセント(ネットワークジャック)に繋いでしまった……なんてトラブル、現場ではよくある話です。
「え、スイッチを1台繋いだくらいで何が問題なの?」と思いますよね。実はここに、イーサネットが持つ「ループを嫌う」という大きな特徴が絡んできます。
ネットワークがぐるぐると輪っか(ループ)を作ってしまうと、データが永遠にぐるぐる回り続けてしまい、ネットワークがものの数秒でダウンしてしまいます。それを防ぐために動いているのがSTPという仕組みです。
STPは、ネットワーク全体の「ボス(ルートブリッジ)」を1台だけ決め、そこを起点として木(ツリー)の形のように綺麗に経路を整理します。
郵便配達に例えてみよう
この「ボス」を決める仕組みを、手紙の配達網に例えてみましょう。
日本全国に手紙を届けるとき、必ず「中央郵便局(ボス)」があって、そこから各地域の郵便局へと効率よくルートが割り振られますよね。もし、この中央郵便局が勝手に別の場所にすり替わってしまったらどうでしょう? 配達網は大混乱です。
ネットワークでも全く同じことが起き得ます。
もし、誰かがネットワークに接続した古いスイッチが、「俺こそが一番えらいボスだ!」(嘘の強力なBPDU:設定メッセージを送信)と叫び出したらどうなるでしょうか?
スイッチたちは「えっ、あっちのほうがボスなの!?」と勘違いして、大切なデータの通り道(トポロジ)をガラリと変えてしまいます。これが、意図しないスイッチによる「ルートブリッジの乗っ取り」です。
—
ルートガード(Root Guard)という名の「門番」
「じゃあ、そんな勝手な奴の言うことを聞かないようにすればいいのでは?」
その通り!それを実現するのが、今回主役のルートガードです。
ルートガードは、スイッチのポートに設定する「優秀な門番」のような機能です。
この門番が立っているポートでは、次のようなルールが厳格に適用されます。
- 「うちの会社(ネットワーク)の外から、ボスを名乗るメッセージ(優れたBPDU)が来たら、絶対にその言うことを聞いてはいけない!」
- 「もしそんな怪しいメッセージが来たら、そのポートを一時的に『お説教中(Root-Inconsistent状態)』にして、通信を遮断しちゃおう!」
つまり、ルートガードを有効にしておけば、外部からどれだけ強力な「私がボスです!」というメッセージが届いても、自分の足元が勝手にルートポート(ボスへの道)に昇格してしまうのをピタリと防いでくれるんです。なんて頼もしいんでしょうか!
—
どんなところで使うの?(実務でのユースケース)
実務の現場では、このルートガードはどこに設定すべきでしょうか?
基本の考え方はシンプルです。「絶対にボス(ルートブリッジ)になってはいけない機器や、外部と繋がる境界線のポート」に設定します。
1. アクセスレイヤのスイッチのダウンリンク(端末側を向いたポート)
2. 社外のパートナー企業や、別の部署のネットワークと接続する境界(エッジ)のポート
社内の一般社員がアクセスするポートにこれを仕掛けておけば、万が一ユーザーが自前の無線ルーターやスイッチを持ち込んで変な接続をしても、社内ネットワーク全体が乗っ取られる最悪の事態を未然に防ぐことができます。
—
実際に設定してみよう(Cisco IOSの例)
それでは、CiscoのCatalystスイッチを例に、実際にルートガードを設定するコマンドを見てみましょう。設定自体はとてもシンプルですが、インフラエンジニアとしての優しさを込めて、丁寧なコメントをつけておきますね。
! 特権モードに移行します
enable
! グローバルコンフィギュレーションモードに移行します
configure terminal
! 対象のインターフェイス(例: ユーザーのPCや外部機器が繋がるポート)を指定します
interface GigabitEthernet0/1
! スイッチポートをアクセスポート(またはトランク)として適切に設定します
switchport mode access
! ★ここが今回の主役!このポートで「上位のBPDUを受け取ってもルートにしない」設定を有効にします
spanning-tree guard root
! 設定を保存します
end
write memory
たったこれだけの行数ですが、この1行(spanning-tree guard root)があるかないかで、ネットワークの堅牢性が劇的に変わります。まさに「転ばぬ先の杖」ですね。
—
トラブルシューティングの現場から
もし、このルートガードを設定しているポートに、うっかり上位のBPDUが流れてきてしまったら、ネットワークはどうなるでしょうか?
スイッチのログ(コンソール画面)には、次のようなメッセージが流れます。
%SPANTREE-2-ROOTGUARD_BLOCK:
Port GigabitEthernet0/1 blocked on Spanning Tree instance Vlan1.
Root inconsistent received.
「おっ、怪しいメッセージを検知したから、このポートをブロック(Root-Inconsistent)したよ!」というスイッチからの叫び声です。
もし現場で「あれ、急にあのポートだけ通信ができなくなったぞ?」となったときは、慌てずにshow spanning-tree inconsistentportsコマンドを叩いてみましょう。
Switch# show spanning-tree inconsistentports
Name Interface Inconsistent State
-------------------- ------------------ ------------------
Vlan1 GigabitEthernet0/1 Root-Inconsistent
Number of inconsistent ports (in this system) == 1
このように、ルートガードによってブロックされているポートが一目でわかります。
原因となっている外部機器(勝手に繋がれたスイッチなど)を物理的に取り外せば、特別な再起動をしなくても、自動的にポートは通常のステータスへと復旧します。この自己治癒的なところも、STPとガード機能の素晴らしいところです。
—
まとめ
今回は、ネットワークの安全を守る「ルートガード」について、郵便配達の例えを交えながら紐解いてみました。
- ルートガードとは?:外部からの不審な「ボス宣言(優れたBPDU)」を無視し、意図しないルートブリッジの乗っ取りを防ぐセキュリティ機能。
- どこに設定する?:外部と繋がる境界や、一般ユーザーが接続するポートなど、「ボスになってはいけない場所」。
- 効果は?:不正なトポロジ変更を検知すると、自動でポートをブロックしてネットワークを守ってくれる。
ネットワークの基礎技術は、一見すると難しく感じるかもしれませんが、私たちが暮らす現実世界のルールや仕組みと繋げて考えると、ぐっと親しみやすくなりますよね。
日々のインフラ構築や運用の現場で、ぜひこの「ルートガード」という強力な門番を思い出して、頑健で美しいネットワークを作り上げていってください。
それでは、また次のネットワークの深淵でお会いしましょう!
コメント