HSRPが組めない原因はACLのマルチキャストdeny|設定ミスの落とし穴と対処法【Cisco実機検証】

ネットワークポートのupdown繰り返し障害を確認するターミナル画面と配線パネル

HSRPの基本動作とマルチキャスト通信の仕組み

HSRP Cisco ACL マルチキャスト 冗長化

CiscoルータやL3スイッチでHSRP(Hot Standby Router Protocol)を設定する際、アクセスリスト(ACL)の設定ミスで気づかないうちにHSRPが機能しなくなるケースがあります。原因はシンプルで、HSRPが使用するマルチキャストアドレスをACLでdenyしてしまっていることです。

本記事では、HSRPとACLの関係、よくあるミスとその確認・対処方法を解説します。

HSRP ACLマルチキャストdeny問題の原因と対策
HSRP + ACL マルチキャストdeny問題
👷 現場での体験談

アクセスリストを使って不要なトラフィックを制限する作業をしていたとき、インターフェースにACLを適用した直後にHSRPのステータスが怪しくなっていることに気づきました。

原因を調べると、HSRPが使用するマルチキャストアドレス(224.0.0.2)をACLにpermitする記述を入れ忘れていました。暗黙のdeny any anyに引っかかってHSRPのHelloパケットがブロックされ、ネイバーが組めなくなりかけていた状況です。

気づいて即座にACLにpermitを追加したことで実害は免れましたが、もし本番環境で適用していたらActiveルータが切り替わらない障害につながっていたと思うとヒヤッとしました。ACLを設定する際はHSRP・OSPF・EIGRPなどのプロトコルが使うマルチキャストを必ず意識することの重要さを改めて実感した案件です。

HSRPが使うマルチキャストアドレスとは

HSRPはActiveルータとStandbyルータの間でHelloパケットを交換して死活監視を行います。このHelloパケットはマルチキャストアドレス宛に送信されます。

プロトコルマルチキャストアドレスUDPポート用途
HSRPv1224.0.0.21985Hello / Coup / Resign
HSRPv2224.0.0.1021985Hello / Coup / Resign
OSPF224.0.0.5 / 224.0.0.6—(IP proto 89)Hello / LSA
EIGRP224.0.0.10—(IP proto 88)Hello / Update
⚠ バージョンに注意

HSRPv1は224.0.0.2、HSRPv2は224.0.0.102と異なります。使用しているバージョンに合わせてACLに記述してください。バージョンは show standby で確認できます。

問題が起きるACLパターンと正しい書き方
❌ NGパターン:マルチキャストのpermitが抜けている
ip access-list extended INBOUND
 10 permit ip 192.168.1.0 0.0.0.255 any   ← 内部からの通信は許可
 20 permit ip 10.0.0.0 0.0.255.255 any    ← 拠点間通信を許可
 ! ← ここにHSRPのマルチキャストpermitが抜けている
 ! 末尾の暗黙deny any anyで224.0.0.2宛がブロックされてしまう
✅ OKパターン:マルチキャストを明示的にpermit
ip access-list extended INBOUND
 10 permit ip 192.168.1.0 0.0.0.255 any
 20 permit ip 10.0.0.0 0.0.255.255 any
 ! ▼ HSRPv1のマルチキャストを許可
 30 permit udp any host 224.0.0.2 eq 1985
 ! ▼ HSRPv2を使っている場合はこちらも追加
 40 permit udp any host 224.0.0.102 eq 1985
 ! ▼ OSPFも動いていれば忘れずに
 50 permit ospf any any
 ! ▼ EIGRPも動いていれば
 60 permit eigrp any any

ACLをインターフェースのinbound方向に適用している場合、対向ルータからのHSRP Helloパケットがブロックされます。outbound方向でも自分が送信するHelloが出て行かなくなるケースがあるため、両方向で確認が必要です。

HSRPとACLの状態確認コマンド
① HSRPの状態確認
Router# show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State    Active          Standby         Virtual IP
Gi0/1       1    110 P Active   local           192.168.1.2     192.168.1.254
                                ↑Active正常   ↑Standbyが見えていればOK

StandbyがUnknownや空欄になっている場合、HelloパケットがブロックされてStandbyルータを認識できていません。

② ACLのヒットカウント確認
Router# show ip access-lists INBOUND
Extended IP access list INBOUND
    10 permit ip 192.168.1.0 0.0.0.255 any (12455 matches)
    20 permit ip 10.0.0.0 0.0.255.255 any (8821 matches)
    30 permit udp any host 224.0.0.2 eq 1985 (0 matches) ← ここが0のままならHSRPが届いていない
    ! 末尾に暗黙のdeny any anyがある(matchesが増えていたら何かがブロックされている)

HSRPのpermitエントリのmatchesが増えていれば正常に許可できています。0のままであれば、ACLがインターフェースの正しい方向に適用されているか・バージョンが合っているかを再確認してください。

③ インターフェースへのACL適用方向を確認
Router# show ip interface GigabitEthernet0/1
GigabitEthernet0/1 is up, line protocol is up
  Inbound  access list is INBOUND   ← in方向に適用されているACL名
  Outbound access list is not set   ← out方向はACLなし
ACL適用前の必須チェックリスト

インターフェースにACLを適用する前に、そのインターフェースで動作しているプロトコルを必ず確認してください。

1
HSRPが動いているか確認

show standby でHSRPグループとバージョンを確認。v1なら224.0.0.2、v2なら224.0.0.102をpermitに追加。

2
ルーティングプロトコルが動いているか確認

OSPFなら permit ospf any any、EIGRPなら permit eigrp any any を追加。

3
ACL適用後すぐにshow standby / show ip ospf neighbor を確認

適用直後にネイバーが落ちていないか・HSRPのStandbyが消えていないかを確認します。問題があれば即座にACLをインターフェースから外してください。

4
ACLヒットカウントを一定時間後に再確認

show ip access-lists で意図しないDENYが増えていないか確認します。

図1: ACL設定時にpermitし忘れやすいプロトコルとマルチキャスト

HSRPv1 (224.0.0.2)
忘れやすい
HSRPv2 (224.0.0.102)
忘れやすい
OSPF (224.0.0.5/6)
やや忘れやすい
EIGRP (224.0.0.10)
やや忘れやすい
BGP (TCPポート179)

まとめ:HSRPとACL設計で気をつけるポイント

比較的気づきやすい
まとめ

ACL設定時はルーティングプロトコルや冗長化プロトコルが使うマルチキャストを必ず意識してください。

  • HSRPv1は 224.0.0.2 UDP 1985、v2は 224.0.0.102 UDP 1985 を必ずpermitする
  • OSPFは permit ospf any any、EIGRPは permit eigrp any any を忘れない
  • ACL適用直後に show standbyshow ip access-lists で即確認する
  • HSRPが組めなくなると冗長化が機能せず、Active障害時にフェイルオーバーできなくなる重大障害につながる

HSRP・ACLに関するよくある質問(FAQ)

Q. HSRPで使用するマルチキャストアドレスは?

HSRPv1は224.0.0.2(All Routers)、HSRPv2は224.0.0.102を使用します。ACLでこれらのアドレス宛の通信をdenyしてしまうと、HSRPのHelloパケットが届かずネイバーが形成されません。ACL設計時はマルチキャストアドレスの許可を忘れずに確認しましょう。

Q. HSRPとVRRPの違いは?

HSRPはCisco独自プロトコル、VRRPはIEEE標準(RFC 5798)です。動作原理はほぼ同じですが、VRRPはマルチベンダー環境で使える利点があります。Ciscoのみの環境ではHSRPが一般的で、プリエンプションのデフォルト動作やタイマー設定に細かい違いがあります。

Q. ACLでマルチキャストをdenyしていないか確認する方法は?

「show access-lists」でACLの内容を確認し、224.0.0.0/4(クラスDアドレス)へのdenyルールがないかチェックします。また「show ip interface [インターフェース名]」で適用されているACLを確認し、「show access-lists [ACL名]」でヒットカウンタを見ると、実際にブロックされているかが分かります。