経路変更方法のまとめ-EIGRP

## 概要
主なeigrp 経路変更の方法をまとめました。

| 方法||
|:-----------|:-----------|
| distribute-list|受信したくない経路をフィルタする<br>今回のなかでprefix-listが使用できるのはdistribute-listだけ|
| summary-address|アドレスを集約でロンゲストマッチの優先度を下げる<br>優先したくない経路の送信元で設定|
| distance|アドミニストレーティブディスタンスの変更<br>優先したくない経路を上げるor優先したい経路を下げる|
| offset-list|メトリックを直接的に加算<br>優先したくない経路の優先度を下げる|
| delay |IFの遅延を調整<br>K値を変更することでメトリックを操作する|


以下はコマンド例です。
## 構成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/3d6761f3-fdfc-d499-90fc-9f93e2e65563.png)

R1 Loopback0 1.1.1.1/32はEIGRPでアドバタイズされています。

**eigrpの設定**
R1(config)#router eigrp 100
R1(config-router)#net 12.1.1.1 0.0.0.0
R1(config-router)#net 13.1.1.1 0.0.0.0
R1(config-router)#net 1.1.1.1 0.0.0.0

R2(config)#router eigrp 100
R2(config-router)#net 24.1.1.2 0.0.0.0  
R2(config-router)#net 12.1.1.2 0.0.0.0

R3(config)#router eigrp 100
R3(config-router)#net 34.1.1.3 0.0.0.0
R3(config-router)#net 13.1.1.3 0.0.0.0

R4(config)#router eigrp 100
R4(config-router)#net 24.1.1.4 0.0.0.0
R4(config-router)#net 34.1.1.4 0.0.0.0

<br>

**変更前**
R4はR2(g0/2)とR3(g0/3)の両方から1.1.1.1/32を受信しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/c78af651-0464-5edf-8194-1a4d1257890f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/3a7bfcba-9256-873c-b9c4-5cc6ea32e07b.png)

R3からの経路をプライマリに変更します。
いずれの方法で変更してもR3(g0/3)からの受信だけ表示される結果になります。

**変更後**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/f149747c-07e5-d2ca-b774-89d603426259.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/bb68bb48-d7e5-e7f1-0646-6dbeb515d0b9.png)

## コマンド
普通のeigrpと名前つきeigrpの例です。

**distribute-list　(access-listを使用)**
■standard eigrp
R4(config)#access-list 1 deny 1.1.1.1
R4(config)#access-list 1 permit any

R4(config)#router eigrp 100
R4(config-router)#distribute-list 1 in g0/2

■named eigrp
R4(config)#access-list 1 deny 1.1.1.1
R4(config)#access-list 1 permit any

R4(config)#router eigrp NAMED
R4(config-router)#address-family ipv4 as 100
R4(config-router-af)#topology base
R4(config-router-af-topology)#distribute-list 1 in g0/2
<br>
**distribute-list　(prefix-listを使用)**
■standard eigrp
R4(config)#ip prefix-list 1 deny 1.1.1.1/32
R4(config)#ip prefix-list 1 per 0.0.0.0/32

R4(config)#router eigrp 100
R4(config-router)#distribute-list prefix 1 in g0/2

■named eigrp
R4(config)#ip prefix-list 1 deny 1.1.1.1/32
R4(config)#ip prefix-list 1 per 0.0.0.0/32

R4(config)#router eigrp NAMED
R4(config-router)#address-family ipv4 as 100
R4(config-router-af)#topology base
R4(config-router-af-topology)#distribute-list prefix 1 in g0/2

:::note info
受信したくない IF の in 方向に deny を適用して完全にフィルタ
プライマリ経路で障害が発生した場合も代替えルートにならない
:::

##
**summary-address**
■standard eigrp
R2(config)#int g0/0
R2(config-if)#ip summary-address eigrp 100 1.1.1.1 255.255.255.0

R4(config)#ip prefix-list toR3 deny 1.1.1.0/24
R4(config)#ip prefix-list toR3 per 0.0.0.0/0 le 32
R4(config)#router eigrp 100
R4(config-router)#distribute-list pre toR3 out g0/3

■named eigrp
R2(config)#router eigrp NAMED
R2(config-router)#address-family ipv4 as 100
R2(config-router-af)#af-int g0/0
R2(config-router-af-interface)#summary-address 1.1.1.0 255.255.255.0

R4(config)#ip prefix-list toR3 deny 1.1.1.0/24
R4(config)#ip prefix-list toR3 per 0.0.0.0/0 le 32
R4(config)#router eigrp NAMED
R4(config-router)#address-family ipv4 as 100
R4(config-router-af)#topology base
R4(config-router-af-topology)#distribute-list prefix toR3 out g0/3


:::note info
R4のdistribute-listは不要なsummary-addressを送信しないための設定
:::
##
**distance**
■standard eigrp
R4(config)#access-l 2 per 1.1.1.1

R4(config)#router eigrp 100
R4(config-router)#distance 91 24.1.1.2 0.0.0.0 2

■named eigrp
R4(config)#access-l 2 per 1.1.1.1

R4(config-router-af)#topology base
R4(config-router-af-topology)#distance 91 24.1.1.2 0.0.0.0 2

:::note info
AD値を255にした場合、完全にフィルタされる
:::

:::note warn
type external で受信しているときは使用できない
:::

##
**offset-list**
■standard eigrp
R4(config)#access-l 2 per 1.1.1.1

R4(config)#router eigrp 100
R4(config-router)#offset-list 2 in 50000 g0/2

■named eigrp
R4(config)#access-l 2 per 1.1.1.1

R4(config-router-af)#topology base
R4(config-router-af-topology)#offset-list 2 in 50000 g0/2

##
**delay**
■standard eigrp
R4(config)#int g0/2
R4(config-if)#delay 10000

■named eigrp
standard eigrpと同じ


## まとめ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/00708456-5b67-0def-2a9e-5ff11b892395.png)

## おまけ
資格の勉強中で演習問題を解いています。
経路変更の設問で時間をロスしがちだったので、頭を整理したいなーと思いこの記事を書きました。

Do not useやYou should useなどの要件に法則がないかと並べてみました(下図)があまり収穫はありませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122841/f3d440fa-2823-9a88-9cfc-8dd7e38a9cbd.png)					

例:distribute-listの設定が求められている場合は「You should use access-list」が要件に記載されている

<br>


とりあえず
代替え経路を残したい場合
・access-list使用可ならdistance
・access-list使用不可ならsummary-address
完全にフィルタしたい場合
・distribute-listまたはdistance 255

でまずは考えようかなと思いました。
prefix-listけっこう好きなのに、意外と使用できないのですね。
次はospfで書こうかな。大変そうだな。