【検証】ip nhrp おまじないコマンドの存在意義

## 概要
DMVPN phase3を設定する際、ip nhrp ～　というコマンドをたくさん入力します。
それぞれのコマンドは何のために必要なのか？debugを見ながら検証しました。

##
NHRPとは
ブロードキャスト通信ができない環境でネクストホップを解決するプロトコルです。
主にDMVPNで使用します。

https://community.cisco.com/t5/tkb-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/nhrp-%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%81%9D%E3%81%AE1-nhrp-%E3%81%A8%E3%81%AF/ta-p/3835782

↑めちゃくちゃわかりやすい！

## 構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/de6f9e90-d712-45ed-dbe0-714a52ccbed3.png)

**前提**
・アンダーレイはRIPv2で接続、それぞれの物理IFへのpingは通る
・オーバーレイではeigrpを動作させている
・HUB(R1)とSPOKE-1(R3)はDMVPN phase3が確立できている
・SPOKE-2(R4)含め、eigrp設定済み
<br>

トンネルIFの設定
**HUB(R1)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/e27e2fbc-ed92-0822-7cba-e18a80bb7fdf.png)

**SPOKE-1(R3)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/5e25b500-a85f-c26c-8a0b-18c221455560.png)

<br>



## 検証
SPOKE-2(R4)のトンネルIFにコマンドを追加していき、nhrpやeigrpの動作を確認します。


**入力するコマンド**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/62396f77-6fd0-195c-7527-1506826e4f47.png)
R3とほとんど同じです。
IPアドレスだけ"100.1.1.4"に変更します。
<br>

**まずはdebugコマンドを入力**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/0a7a4116-f918-813d-9dca-484463622d4c.png)

**トンネルIFを作成する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/7ead2a46-e102-ba40-4bcb-0d3253b3d871.png)
カプセル化がデフォルトのpoint-to-point GREになりました。
<br>

**オーバーレイとアンダーレイのアドレスを指定する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/85211f04-dcaf-1dd7-2992-174d4cbda970.png)
<br>

**mGREでカプセル化する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/1ef57069-9ba9-9a9c-9cea-25b304dbdc42.png)
GREがmultipointに変更されています。
トンネルIFがupして、eigrp helloパケットが送信され始めました。
<br>

**nhrpを有効化する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/f9708773-f629-3eba-5b86-c9a863bbb86b.png)
nhsが見つからないため、nhrpのメッセージを送信できていません。
<br>

**HUBをnhrpのnext-hop server(nhs)として指定する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/e9e98196-dfbf-4c39-3364-50ac9f27c5a9.png)
nhsのオーバーレイアドレス(100.1.1.1)と通信を試みているものの、何度か失敗しています。
実際の宛先であるアンダーレイのアドレスが不明なようです。
<br>

**nhsのオーバーレイとアンダーレイアドレスをマッピングする**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/9b915956-914e-e832-61ad-9041c4965cce.png)
nhrpのマッピングは成功しましたが、eigrpはupとdownを繰り返しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/43feacda-282c-cd8e-4390-782fbbdddbee.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/c1bd8786-5e1d-8112-6c67-86425789c4a0.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/a04ee31f-cd29-11bf-fbdf-9e1f8667d135.png)
R2-R4間のキャプチャを見てみると、SPOKE-2(100.1.1.4)からeigrpマルチキャスト(224.1.1.10)宛にhelloパケットが送信できていません。
debugだとhelloパケットを送信しているように見えるのですが、届いていないみたいです。悲しい。

:::note info
eigrpはhelloパケットをマルチキャスト、updateパケットをユニキャストで送信します。
ネイバを確立してお互いの情報を交換するためには、マルチキャストとユニキャスト両方を送受信できる必要があります。
:::

<br>

**マルチキャストをnhsのアンダーレイアドレスに送信する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/76f66f8c-e2f4-7178-9e2f-80b1d25b3b32.png)
マルチキャストとアンダーレイのマッピングが成功しました。
eigrpも安定してお互いの情報を送受信できているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/ffcd6c4f-5c23-e07f-84f2-4c1d43649f64.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/83980d5f-1b1b-96ac-85e2-53e52ef179a5.png)
R2-R4間のキャプチャを見てみると、SPOKE-2(100.1.1.4)からeigrpマルチキャスト(224.1.1.10)宛にhelloパケットが送信できています。

<br>

**SPOKE-SPOKEの直接通信を有効化する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/c4d6691c-2bfb-4cfe-d3d0-95ffb5bf90d7.png)

eigrpの場合は、**no ip split-horizon eigrp** の設定が必要です。
設定か所はオーバーレイのIFであるトンネルIFです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/5fecf62c-c0a2-7bee-305b-a9e556855449.png)

:::note warn
no ip split-horizon **eigrp (AS)** が正解で、no ip split-horizon は違うコマンドです。
調べてみると、何もつかない方はRIPで使用できるみたいですね。
:::


確認のため、SPOKE-1(R3)にLoopbackアドレス(3.3.3.3)を設定してeigrpでアドバタイズします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/1b6fee16-45fd-5829-0621-5e7de27c9ddb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/137c6189-d42e-b520-b617-b0b3f542ac31.png)
SPOKE間で直接通信できました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/17eff19b-2714-46b7-cf24-999030c32362.png)
show ip routeに **%** が表示されています。

<br>


## おまけ
nhrpで入力したコマンドをshow runで確認するとき、表示されない場合があります。
そんなときはshow run allで確認するといいかもしれません。

例えば、SPOKEの**ip nhrp shortcut**はshow runには表示されませんが、show run allには表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/aa9fd85d-4944-e5bf-eea5-d333bdd1d19e.png)

show run allは出力が膨大なので、include | ip nhrpで表示するのがおすすめです。
私はDMVPNの勉強を始めたころ、何を設定したかわからなくなってよく混乱していました。


## 参考

・CCIE Enterprise Infrastructure Foundation 
　Chapter7:DMVPN

https://amzn.asia/d/2HhKYBg

改めてじっくり読むと発見があります。
<br>
・IP Addressing Configuration Guide, Cisco IOS XE 17.x
　Chapter: Configuring NHRP

https://www.cisco.com/c/en/us/td/docs/routers/ios/config/17-x/ip-addressing/b-ip-addressing/m_config-nhrp-0.html?dtid=osscdc000283

<br>
・Cisco Community NHRP シリーズ : その1 NHRP とは？

https://community.cisco.com/t5/tkb-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/nhrp-%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%81%9D%E3%81%AE1-nhrp-%E3%81%A8%E3%81%AF/ta-p/3835782

上にも書いたけど、わかりやすい！

<br>

・31 Days Before Your CCNP and CCIE Enterprise Core Exam

https://amzn.asia/d/ebbDrlT

簡潔で図がわかりやすいです。eigrpの図を載せたかった..
もしお持ちの方がいましたら、Figure 26-2 EIGRP Operation Overview を見ながら読んでほしいです。


## まとめ
キャプチャがきれいに取得できて嬉しかったので記事を書こうと思いました。
正直、SPOKEの設定は**ip nhrp nhs ～ nbma ～ multi**を多用しています。



<br>
----------------

10/8追記　備忘
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/cfdf0c7f-e01b-8c86-350f-c09750d35975.png)