【HSRPとは】デフォルトゲートウェイ冗長化の基本解説

hsrp-base

本サイトはPRが含まれています。

ルータを冗長化しようと思うのだけどPCのDGWって1つしか設定できないんだっけ?ルータが2台だから2つ設定したいのだけど・・・

チャーチルさん

ポン先生

それぞれのルータのIP向けにDGWを向けたいのかな?でもそれより良い冗長化の方法があるよ。

この記事ではCiscoのHSRPについて説明します。HSRPを使うとDGW(デフォルトゲートウェイ)の冗長化ができます。まずはどういった場面で利用できるのか理解し、適切なネットワーク設計に活かして行きましょう。

HSRPとは

HSRP(Hot Standby Router Protocol)とはCisco独自のDGWを冗長化するプロトコルです。DGWの冗長化ってどうゆうこと?って思うかもしれませんが、この記事では具体的な構成を基に順番に説明していきます。

経路の切り替え

ルータ⇔ルータ間通信の冗長化(ダイナミックルーティング)

まずはダイナミックルーティングを使ってルータを冗長化する例を考えます。

あわせて読む

ダイナミックルーティングの基本的な内容はこちらを参照

【ルーティング③】転送先の決定とルーティングテーブル

ルータ⇔ルータ間通信の冗長化(ダイナミックルーティング)

例えば上記例において、ルータ1~A~B~2間でOSPFを利用しています。障害時の動作は下記の通りです。

  • ルータ1から見るとルータA方向とルータB方向がある
  • 通常はルータA経由で通信している
  • もし、ルータAで障害が発生すると
    • ルータ1は障害を検知する
    • 転送先をルータBに自動的に切り替える

これはあくまでも『ルータ間はOSPFでおしゃべりしているので障害を検知できる』というお話でした。これを踏まえて次の構成を見てみましょう。

PC⇔ルータ間通信の冗長化

上記はルータ⇔ルータ間通信でしたが、今度はPC⇔ルータ間の通信です。同じように『障害発生時に自動的に切り替えられるか』を考えます。

PC⇔ルータ間通信の冗長化

PCから見るとルータは2台あるので当然別々のIPアドレスです。例えばPCのDGW設定をルータ1(192.168.100.1)に向けた場合以下のようになります。

  • 通常時はルータ1経由で通信する
  • ルータ1で障害が発生すると
    • PCは通信不可となる
    • PCのDGW設定をルータ2(192.168.100.2)方向に手動で変更する
    • するとルータ2経由になるので通信は復旧する

なるほどなるほど、ルータ2台にしたからいざという時はPCの設定変えれば良いのか!これで解決だね・・・って面倒じゃない??

チャーチルさん

実際には下記理由でこの運用は難しいでしょう。

手動切り替えが難しい理由
  • 全ユーザがPCに詳しい訳ではなく、設定変更できない人もいる
  • 切り替え先のIPアドレスをユーザが知らないとできない
  • そもそも通信不可の時に『ルータ1が障害だからDGWを切り替えよう』という発想はユーザには無い

ルータ⇔ルータ間であればダイナミックルーティングを使い、自動的に経路(ネクストホップ)を切り替える仕組みがあるので簡単です。しかしPC⇔ルータ間にはそのような仕組みが無く『自動的にDGWを別IPへ切り替える』ということはできないのです。

う~ん、困ったねぇ。。。こうなったらオフィスにDGWの設定方法と切り替え先のIPアドレスを書いた紙を貼っておいてユーザに頑張ってもらうしか無いのか?(*_*)

フロア毎にアドレスも違うし面倒だな~

チャーチルさん

HSRPを使うとDGWを冗長化できる

ポン先生

もちろん、ユーザに設定変更してもらう・・・なんて非現実的な方法じゃなくて自動的に切り替わる方法があるよ!

そこで使われるのがHSRPです。DGWの冗長化とは、PC⇔ルータ間通信の冗長化と読み替えてOKです。具体的に下記のようなイメージです。

通常時

HSRPでの通信(正常時)

  • HSRPではルータ1とルータ2のIPアドレスとは別の“バーチャルな”IPアドレスがある
  • ルータ1とルータ2はお互いにおしゃべりして、『このバーチャルなIPアドレスを一緒に使おうね』と事前に約束している
  • でも同じネットワーク上で同時に使ってしまうとケンカになるのでどっちが親分かは事前に決めておく
  • この場合は、ルータ1=親分、ルータ2=子分という事にしておく
  • バーチャルなIPは192.168.100.254とする
  • PC側のDGWも192.168.100.254で設定する
  • そうすると通信はルータ1(親分)経由で転送される

障害時

HSRPでの通信(障害時)

  • ルータ1とルータ2は仲間なので定期的に互いに点呼を取っている
  • でもある時、ルータ1が故障しました
  • ルータ2が何度呼びかけてもルータ1は反応しません
  • 『これはルータ1に何かあったんだ!』とルータ2が認識する
  • ルータ2は自分がバーチャルなIPアドレスの親分の役を引き継ぐ
  • するとPCの通信はルータ2経由に切り替わる
  • PCから見るとDGWはずっと192.168.100.254のまま何も変えずに通信が切り替わったように見える

このようにHSRPでは

  • ルータ間で共通のバーチャルなIPアドレスを持つ
  • どちらのルータがこのバーチャルなIPアドレスの主導権を持つかコントロールする

この2点でPCからの通信を引き寄せ自動的な切り替わりを実現しています。

用語解説

これがHSRPの大まかな動作の説明です。ここでは上記の動作上出てくるHSRPの新しい用語について解説します。

仮想IPアドレス

仮想IPアドレスはバーチャルなIPアドレスの事で上記構成だと192.168.100.254です。ルータ1/ルータ2の物理ポートのIPアドレスとは別の値になります。PCから見ると、物理的な転送先(ルータ1 or ルータ2)に関わらず通信できるので“仮想”という訳です。

仮想MACアドレス

仮想MACアドレスは仮想IPアドレスに対応するMACアドレスです。上記例だと

  • 正常時はルータ1で仮想MACアドレスが有効
  • 障害時はルータ2で仮想MACアドレスが有効

になります。PCから来る通信は仮想MACアドレスの方に吸い寄せられます。そのため『仮想MACアドレスをどのルータで有効にするか』、この制御によって通信の切り替えが可能になるのです。

あわせて読む

MACアドレスの通信ってどんな感じ?という方はこちらの記事を参照

【MACアドレスとは】L2通信の基本的な仕組み

因みに、仮想MACアドレスは以下の値で決まっています。

0000.0c07.acXX

“0000.0c07.ac”までは固定、“XX”の部分には後述するHSRPグループの番号が入ります。例えばHSRPグループの番号が2の場合仮想MACアドレスは下記の通りです。

0000.0c07.ac02

アクティブルータ

アクティブルータとは仮想MACアドレスが有効になっているルータの事です。PCからのトラフィックを転送します。

スタンバイルータ

スタンバイルータとは仮想MACアドレスが無効になっているルータの事です。普段はPCからの通信を処理しませんが、アクティブルータの障害を検知した際は自分がアクティブルータに昇格します。上記の例だと

■正常時
ルータ1:アクティブルータ
ルータ2:スタンバイルータ

■障害時
ルータ1:(障害)
ルータ2:アクティブルータ

という状態です。

HSRPグループ

HSRPグループは“お互い仲間だよね~”を確認するためのモノで、同じ番号のルータ同士であればHSRPを組む事ができます。
※0~255を利用可能。

HSRPプライオリティ

HSRPプライオリティは同じHSRPグループの中でどのルータがアクティブルータになるかを決めるための値です。一番値が大きいルータがアクティブルータになります。デフォルト値は100。
※もしHSRPプライオリティが同じだった場合は一番IPアドレスが大きいルータがアクティブルータになる。

Helloパケット

Helloパケットは上記で言う“定期的な点呼”のことで、応答がない場合対向ルータで障害が発生したと認識します。デフォルトでは

  • 3秒に一回Helloパケットを送信
  • 10秒応答がないと障害と認識

となります。そのためデフォルト設定ではユーザから見て約10秒で通信が切り替わります。

用語まとめ

具体的な設定値の例を先程の構成図に当てはめると以下のようになります。

■正常時

HSRPでの通信(正常時)※設定値追記

■障害時時

HSRPでの通信(障害時)※設定値追記

ネットワークエンジニアを目指すならCCNAを取得しよう!

CCNAとはCisco社のメーカ認定資格です。CCNAの取得はネットワークエンジニアの基本的な知識Cisco製品の理解の証明になります。

特定メーカの資格で役に立つの?実際には他メーカの機種も扱うんじゃないの?

チャーチルさん

ポン先生

確かに業務上Cisco以外の機器を扱うことはあるだろうけど、最初にCiscoを勉強しておくと他の機器も理解しやすくなるんだ。

Ciscoは数あるネットワーク機器メーカの内の1社ですがディファクトスタンダードと言われています。つまり業界標準として位置付けられており、他メーカ機種でもCiscoのコマンドライン等を参考にしている事が多いです。そのため初見の機器でもCiscoと設定方法が似ており、「大体は分かる」なんてケースも多々あります。ネットワークエンジニアとしてはCiscoの学習はむしろ必須と言えるレベルでしょう。

また、Ciscoの資格と言っても独自仕様や製品の話だけでなく、ネットワークの一般的な知識も必要です。Cisco製品と言えベースはネットワークの標準規格に基づいて設計されており、CCNA取得でネットワークの一般的な知識も習得可能です。

上記理由からCCNAは非常におすすめの資格です。ネットワークエンジニアとして本格的に活躍したいのであれば是非チェックすべきでしょう。

【CCNAとは】難しい?勉強は?Cisco資格の登竜門 基本解説

まとめ

ポイント
  • HSRPとはCisco独自のDGWを冗長化するプロトコル
  • ルータ⇔ルータ間のダイナミックルーティングであれば障害時に自動的な切り替えが可能
  • PC⇔ルータ間は同じように自動的な切り替えができない
  • HSRPを使うと、PC⇔ルータ間通信の冗長化が可能
  • ざっくりな動き
    • 事前にルータ同士でバーチャルなIPアドレスを一緒に使う約束をしておく
    • 普段どっちが親分になるかルータ同士で決めておく
    • バーチャルなIPアドレスに来た通信は親分ルータが転送する
    • もし親分ルータが故障したら、子分ルータが自動検知して役割を引き継ぐ
    • PCから見るとDGWは変わらずに通信が復旧する
  • 用語(説明は本文参照)
    • 仮想IPアドレス
    • 仮想MACアドレス
    • アクティブルータ
    • スタンバイルータ
    • HSRPグループ
    • HSRPプライオリティ
    • Helloパケット

HSRPは一般的によく使う設定です。Cisco機器で冗長化する場合はかなりの頻度で出てくるのでネットワークエンジニアとしては押さえておきたいポイントです。初めてだと“仮想”のイメージが少し掴みにくいかもしれませんが徐々に慣れて行けばOKです。最初は、HSRP=PCの設定変更なしで切り替え可能、というポイントから覚えておきましょう。