DMVPNの設定

NHRPの設定(実機検証編)

この章では、Cisco CML上で実際にDMVPN(Dynamic Multipoint VPN)を構築し、
NHRP設定の構成方法と動作を確認します。

Hubと2台のSpokeで構成し、すべてのルータは同一のNBMA(Non-Broadcast Multi-Access)ネットワーク上に存在します。

物理インターフェースの設定

トンネルインターフェースのソースとなる物理インターフェース(通常はWAN側のインターフェース)を正しく設定します。IPアドレスの設定など基本的なネットワーク構成が前提となります。

GREトンネルインターフェースの設定

DMVPNで使用するGREトンネル(mGRE)インターフェースを設定します。トンネルインターフェースは、仮想的なインターフェースであり、ここでmGREやNHRPの設定を行います。

コマンド構文説明補足
interface Tunnel0仮想トンネルインターフェースを作成DMVPNで使用する論理的なトンネル。
ip address 192.168.1.x 255.255.255.0トンネルインターフェースにIPアドレスを設定HubとSpoke間の論理的アドレス空間。
tunnel source GigabitEthernet0/0トンネルの送信元(物理IF)を指定インターネット側(NBMA)インターフェース。
tunnel mode gre multipointマルチポイントGRE(mGRE)を有効化Spokeを複数同時に接続可能。
tunnel key 10トンネル識別用のキーを設定HubとSpoke間で一致させる。

NHRP(Next Hop Resolution Protocol)の設定

NHRPは、DMVPNでの動的なネクストホップ解決に使われる重要なプロトコルです。これにより、スポークルーターがハブを通じて他のスポークのIPアドレスを取得できます。

コマンド構文説明補足
ip nhrp network-id 1NHRPネットワークの識別子Hub・Spoke間で共通にする必要あり。
ip nhrp map multicast dynamicHub側でマルチキャストの動的登録を許可SpokeからのEIGRPマルチキャストなどを受け取る。
ip nhrp map <トンネルIP> <NBMA IP>トンネルと実アドレスのマッピングSpokeがHubのアドレスを指定。
ip nhrp map multicast <NBMA IP>マルチキャストトラフィックをHubへ転送EIGRPなどのルーティング更新を伝搬。
ip nhrp nhs <HubトンネルIP>HubをNHS(Next Hop Server)として指定Spokeが他のSpokeを解決するために使用。
ip nhrp authentication cisco認証キーを設定HubとSpoke間で一致必須。
ip nhrp holdtime 300NHRP登録の保持時間を設定秒単位で登録を維持。

トンネルの保護(IPsec)の設定

DMVPNでのトラフィックを暗号化するために、IPsecを使用することが一般的です。これにより、データ通信のセキュリティが強化されます。

コマンド構文説明補足
crypto isakmp policy 10IKEフェーズ1ポリシーの作成暗号・認証方式などを定義。
hash sha512ハッシュアルゴリズム設定データ完全性を確保。
encr aes 256暗号化方式設定高強度のAES 256ビット暗号。
authentication pre-share事前共有鍵(PSK)認証方式シンプルかつ一般的な方式。
group 16DHグループ設定鍵交換の強度を指定。
crypto isakmp key cisco address 0.0.0.0PSK登録すべてのピアと共通のキーを使用。
crypto ipsec transform-set AES esp-aes 256 esp-sha512-hmacIPsecの暗号化・認証方式を指定フェーズ2の設定。
mode transportトランスポートモード指定GREトンネルと併用するため。
crypto ipsec profile DMVPN-Profileプロファイル作成transform-setやPFSなどを束ねる。
set pfs group16Perfect Forward Secrecyを有効化毎回異なる鍵を生成。
set security-association lifetime seconds 86400SAの有効期限設定24時間ごとに再交渉。
tunnel protection ipsec profile DMVPN-ProfileトンネルにIPsecを適用GREをIPsecで暗号化。

ルーティングプロトコルの設定

ルーティングプロトコルは、DMVPN上でルート情報を交換するために必須です。最も一般的にはEIGRPやOSPFが使用されます。

スプリットホライゾンは、特定のインターフェースから学習したルート情報をその同じインターフェースから再広告しないようにするルールです。しかし、スプリットホライゾンが有効になっていると、ハブが特定のトンネルインターフェースから受信したルートを同じトンネルインターフェースに向けて広告できなくなります。そのため、スプリットホライゾンを無効化することで、ハブがスポーク間でルート情報を共有できるようになります。

EIGRPを使用してルートを広告する際に、自身のトンネルインターフェースアドレスを「次ホップ」に設定します。「no ip next-hop-self eigrp 1」を設定することで、ハブがスポーク間のルートを中継する際に元の次ホップを保持することで、スポーク間のダイレクト通信が可能になります。

コマンド構文説明補足
router eigrp 1EIGRPプロセスを開始AS番号を指定。
network 192.168.1.0 0.0.0.255トンネルネットワークを広告HubとSpoke共通のセグメント。
network 10.x.x.0 0.0.0.255各SpokeのローカルLANを広告各拠点固有のセグメント。
no ip split-horizon eigrp 1Split Horizonを無効化Hubが受信ルートを再広告可能に。
no ip next-hop-self eigrp 1Hubが元のNextHopを維持Spoke間の直接通信を実現(Phase2)。

設定後の確認

スポークルータ1からスポークルータ2にtracerouteを実行すると最初はハブルータを経由していますが、その後は直接通信されていることが確認できます。

DMVPN Phase 3の設定

「no ip split-horizon eigrp 1」や「no ip next-hop-self eigrp 1」を設定してスポーク間で直接通信することをフェーズ2といいます。

フェーズ3では上記コマンドを使用せず、「ip nhrp redirect」と「ip nhrp shortcut」コマンドを使用してスポーク間の直接通信を行います。

スポーク間で対抗のネットワークに接続するため要約ルートを作成しています。

設定完了後、スポーク間で直接通信することが出来ています。

フェーズ主な特徴コマンド動作概要
Phase1Hub & Spoke通信のみip nhrp nhs のみ使用Spoke間通信はHub経由。
Phase2Spoke間直接通信(NextHop維持)no ip split-horizon eigrp / no ip next-hop-selfHubを介さずダイレクト通信。
Phase3Redirect / Shortcut 機能Hub:ip nhrp redirectSpoke:ip nhrp shortcutSpoke間通信を動的に最適化。

DMVPNのルーティングプロトコルにOSPFを使用する際の注意点

OSPFネットワークタイプの選択:「ip ospf network broadcast」コマンドを使用してタイプを変更します。

優先度の設定:スポークルータがDRにならないように「 ip ospf priority 0」コマンドを使用して優先度を0にします。

DMVPN トラブルシューティング

セッション/統計クリアコマンド

コマンド目的使用例確認ポイント
clear dmvpn session interface tunnel 0トンネル上のNHRPセッションをリセットし、再登録を促すRouter# clear dmvpn session interface tunnel 0show dmvpnで再登録されたPeerが表示される
clear dmvpn statistics interface tunnel 0DMVPN関連の送受信統計を初期化Router# clear dmvpn statistics interface tunnel 0show ip nhrp traffic interface tunnel0 のカウンタがリセットされる

デバッグコマンド

コマンド目的使用例主な出力例/確認ポイント
debug dmvpn error allDMVPN全般のエラー(NHRP・ソケット・暗号保護)を表示Router# debug dmvpn error allNHRP Registration failedCrypto SS Downなどが出力
debug dmvpn condition interface tunnel 0指定トンネルのみのデバッグを有効化Router# debug dmvpn condition interface tunnel 0指定トンネルのUP/DOWNのみ出力される
debug nhrp conditionNHRP登録・解決・削除動作を表示Router# debug nhrp conditionReceived Registration RequestAdding peer to cache など
debug nhrp errorNHRPの認証や解決失敗を表示Router# debug nhrp errorAuthentication failedRegistration Request failed
nhrp debug-traceNHRPの詳細トレースログを有効化Router(config)# nhrp debug-trace cachecache / multicast / limit など対象を指定して詳細解析
undebug allすべてのデバッグを停止Router# undebug all以降のデバッグ出力を停止

ログ出力と監視

コマンド目的使用例主なログ出力例
logging dmvpn rate-limit 20DMVPNログを20秒間隔で出力し、過剰出力を防ぐRouter(config)# logging dmvpn rate-limit 20%DMVPN-7-CRYPTO_SS: Tunnel0 socket is UP%DMVPN-5-NHRP_NHS: ... is UP%DMVPN-5-NHRP_CACHE: Client Registered
`show logginginc DMVPN`DMVPN関連ログを抽出して表示`Router# show logging

状態確認(show系)

コマンド目的使用例確認ポイント
show dmvpnDMVPNセッション一覧を表示Router# show dmvpnInterface: Tunnel0 / Peer UP / Type: Spoke
show ip nhrpNHRPキャッシュと解決情報を確認Router# show ip nhrpvia 203.0.113.1, Tunnel0 created など登録状態を確認
show ip nhrp traffic interface tunnel0NHRP統計情報を確認Router# show ip nhrp traffic interface tunnel0Requests / Replies / Registration の送受が対応しているか
show crypto isakmp saIKEフェーズ1状態を確認Router# show crypto isakmp sastate QM_IDLE = 正常確立
show crypto ipsec sa activeIPsecフェーズ2状態を確認Router# show crypto ipsec sa active#pkts encrypt/decrypt が増加していれば通信中
show crypto mapIPsecマップ構成を確認Router# show crypto mapTransform-set, Peerアドレス, Profile名の一致確認
show crypto sessionISAKMPとIPsec両方の概要確認Router# show crypto session状態が“UP-ACTIVE”であるか確認
show interface tunnel0トンネル状態の確認Router# show interface tunnel0line protocol is up、MTU値、トラフィック統計など
show ip route経路情報の確認Router# show ip routeHub⇔Spoke間のルートが存在するか
show ip eigrp neighborsEIGRP隣接の確認(EIGRP使用時)Router# show ip eigrp neighbors隣接がup状態であるか
show crypto engine connections active暗号エンジンの動作状態を確認Router# show crypto engine connections active使用中セッション数、負荷状況の確認

状況別コマンドクイックリファレンス

状況確認すべきコマンド
トンネルがUpしないshow ip int brief / show interface tunnel0 / show dmvpn
NHRP登録がされないshow ip nhrp detail / debug nhrp error / debug nhrp condition
IPsec確立しないshow crypto isakmp sa / show crypto ipsec sa active / debug dmvpn error all
Spoke間通信ができないshow dmvpn detail / show ip nhrp / show crypto ipsec sa
ルーティングできないshow ip route / show ip eigrp topology / show ip ospf neighbor
デバッグ停止undebug all

参考文献

DMVPN Configuration Guide