【FAQ】VRRPのあるある疑問をパパっと解消

哲学者トニーくん
哲学者トニーくん

仮想IPアドレスって何?

仮想IPアドレスとは

仮想IPアドレスは、「実際には物理的なインターフェースに直接結びついていないけれど、特定のルータや機器が共有して使うIPアドレス」です。

VRRPのような冗長化プロトコルで使われる場合、複数のルータで1つの共通IPアドレスを持つことで、障害が発生してもクライアント側の設定を変えずに通信を続けられる仕組みになります。

たとえば次のような感じです:

  • R1の実IPアドレス → 192.168.1.1
  • R2の実IPアドレス → 192.168.1.2
  • 仮想IPアドレス → 192.168.1.254

PCやサーバは、この仮想IPアドレス(192.168.1.254)をデフォルトゲートウェイとして設定します。マスタルータが正常なときは、そのルータが仮想IPを受け持ちますが、障害時はバックアップルータがこの仮想IPを引き継ぎます。


グローバルIP?プライベートIP?

仮想IPアドレスは、基本的には通常のIPアドレスと同じ扱いなので、プライベートIPでもグローバルIPでも使えます。どちらを使うかは、ネットワーク設計次第です。

  • プライベートIP: 社内ネットワーク内のデフォルトゲートウェイなどに使う場合。よく使われるのはこちら。
    例: 192.168.1.254、10.0.0.1
  • グローバルIP: インターネット接続を冗長化する場合。ISPから割り当てられたグローバルIPを仮想IPにすることも可能。
    例: 203.0.113.1

たとえば、インターネットに接続するルータが2台あり、外向けのグローバルIPをVRRPで冗長化したい場合は、グローバルIPを仮想IPとして割り当てることもあります。


なぜ「仮想」なのか?

「仮想」という言葉がつくのは、実際の物理的なインターフェースに結びついているわけではなく、ルータ間で持ち回りできるからです。

通常のIPアドレスは、特定の機器に固定されますが、仮想IPは「今マスタになっているルータ」に動的に割り当てられます。だから「仮想」なんですね!


要するに….

仮想IPアドレスというのは 物理的な筺体に紐づいていないから仮想と言われているだけで、何か特別なアドレスを指しているのではない。
自分が持っているネットワークのサブネットの範囲で空いているものを割り当てるという感覚が近い。

仮想IPアドレスのためにわざわざ「新しい IPアドレスをISPから契約する」みたいなものではなく、 普通に自分で割り当てられている サブネットの中から空いているものを割り当てて それを仮想IPアドレスとして 共通使用させればいいよというニュアンス。
だからそれは、グローバルIPが空いていてグローバルIPにしたいならそれでもいいし、 プライベートIPアドレスが空いていてプライベートネットワーク内でのみの使用だったら、空いているプライベートIPアドレスでいいよ みたいな解釈でOKです。


哲学者トニーくん
哲学者トニーくん

アドバタイズメントパケットって何?

アドバタイズメントパケットの正体

アドバタイズメントパケットは、VRRPの生存確認やルータの役割(マスタ・バックアップ)を伝えるためのパケットです。これはIPパケットとして送信されます。

具体的には:

  • プロトコル: IPパケット(IPv4 or IPv6)
  • プロトコル番号: 112(VRRP専用の番号)
  • 送信元IPアドレス: 物理インターフェースのIPアドレス
  • 宛先IPアドレス: 224.0.0.18(VRRPのマルチキャストアドレス)
  • TTL(生存時間): 255(ルータをまたがないようにする。1つでも減ったらそれを不正パケットだと判断する)

つまり、マスタルータはVRRP専用のマルチキャストアドレス(224.0.0.18) に向けて、特定のフォーマットのパケットを送ります。このパケットをバックアップルータが受け取り、「マスタが生きているな」と確認します。


アドバタイズメントパケットの中身

パケットの中には、次のような情報が入っています:

  • VRRPバージョン(2か3)
  • VRRPグループID(同じグループのルータ同士を識別する番号)
  • 優先度(Priority)(ルータの優先順位)
  • 仮想IPアドレス(クライアントが使うゲートウェイIP)
  • チェックサム(データ破損を検出するため)

バックアップルータはこれを受け取り、マスタルータが正常稼働しているかどうかを判断します。もし一定時間パケットが届かなくなった場合、「マスタが死んだ!」と判断し、バックアップルータが自動的に昇格します。


ルータ同士のやりとりのイメージ

  1. マスタルータ → バックアップルータに定期通知
    マスタルータは「私は生きてるよ!優先度110だよ!」と、1秒ごとに224.0.0.18 にパケットを送る。
  2. バックアップルータ → パケットを監視
    バックアップルータはこのパケットを受信し続けて、「マスタは大丈夫だな」と確認する。
  3. 障害発生 → バックアップルータが昇格
    マスタが壊れてパケットが来なくなると、バックアップルータは「3秒間パケット来ない!じゃあ俺がマスタになる!」と仮想IPアドレスの処理を引き継ぐ。

なぜマルチキャスト?

VRRPはマルチキャストアドレス(224.0.0.18)を使うので、同じネットワークにいる複数のバックアップルータが同時にパケットを受け取れます。これにより、ルータが2台以上ある場合でも、全員がマスタの状況を把握できます。

また、TTLが255に固定されているので、ルータを超えてパケットが広がることはありません。これはVRRPが同一セグメント内で動作するプロトコルだからですね!


まとめ

  • アドバタイズメントパケットはIPパケットで送られる。
  • VRRP専用のプロトコル番号(112) を使用。
  • 送信先は224.0.0.18(マルチキャストアドレス)。
  • パケット内には優先度や仮想IP などの重要な情報が含まれる。
  • TTLは255 で、同じネットワーク内だけでやりとりされる。

結論として、アドバタイズメントパケットは普通のIPパケットの一種で、VRRP専用のプロトコル番号とマルチキャストアドレスを使うことで、ルータ同士が効率的に生存確認をしているんですね!


哲学者トニーくん
哲学者トニーくん

VRRPは拠点間では使わないの?

1. VRRPは「同じLAN内のルータ」専用だから

VRRPはもともと、同じネットワークセグメント内のルータを冗長化するためのものです。

なぜかというと:

  • アドバタイズメントパケットは、リンクローカルのマルチキャスト(224.0.0.18)で送られる。
  • TTL=255 なので、ルータを1台でも越えるとパケットが破棄される。

つまり、拠点ごとにネットワークが分かれていると、VRRPパケットが届かず、そもそも拠点間でVRRPは動かないんです!


2. 仮に拠点間でVRRPを無理やり使ったら?

例えば、VRRPを無理やり拠点間で使って、本社と支社のルータを1つの仮想ルータにまとめたとします。するとこうなります:

LESS
【本社】                【支社】
PC — R1(マスタ) — インターネット — R2(バックアップ) — PC

このとき、仮想IPアドレスを持つのはマスタルータ(例:R1)です。支社のPCは、デフォルトゲートウェイに本社ルータの仮想IPを使うことになります。

するとどうなるか?

  • 支社のPC → 本社ルータまでわざわざ通信する。
  • 支社ルータが生きてても無視される(マスタじゃないから)。
  • 遅延が増えるし、回線帯域も無駄になる。

これだと「支社ルータがあるのに使わない」という無駄な状態になります!


3. WAN回線障害に弱い

さらに問題なのが、WAN回線が切れたとき

  • VRRPはルータ障害には強いけど、WAN障害は検知できない
  • WAN回線が切れてても、本社ルータが生きていれば、支社の通信は本社に行こうとして詰まる

これだと、WAN回線が死んでるのに切り替わらないので、冗長化の意味がなくなります!


4. じゃあどうすればいい?

こういう拠点間の冗長化には、ルーティングプロトコル(OSPF/BGP)がぴったりです!

  • 障害発生時に自動で経路切り替え
  • WAN回線障害も検知できる。
  • 最適なルート選択で、通信の遅延や無駄なトラフィックを防ぐ。

結果:

  • LAN内のゲートウェイ冗長化はVRRP
  • 拠点間の冗長化はOSPF/BGP

この組み合わせがベストです!


5. まとめ(超シンプル)

拠点間でVRRPを使わない理由は:

  • VRRPは同一LAN専用で、ルータを越えられない。
  • 無理やり使うと遅延とトラフィックの無駄が発生。
  • WAN回線障害に対応できないから、冗長化にならない。

だから、拠点間はルーティングプロトコル、LAN内はVRRPと使い分けたほうが、ずっと効率的で安定します!



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