参考資料・時間
資料:
CCIE Enterprise Infrastructure Foundation lab
BGP lab 7
勉強時間:
約5時間
学習内容
ルートフィルタリング
コマンドは以下
ip as-path access-list 1-500 [permit|deny] [pattern]
ip as-path access-listには暗黙のdenyが存在する。
そのため、特定のASをからの経路を弾くには
ip as-path access-list 1 deny _300_
ip as-path access-list 1 permit .*
といった形でpermitする必要がある。
ネイバーへの適用は主に2種類。
1. ルートマップを使用
ip as-path access-list 1 deny _300_
ip as-path access-list 1 permit .*
route-map deny-300-map permit 10
match as-path 1
router bgp 100
neighbor 6.6.6.6 route-map deny-300-map in|out
2. neighbor filter-listを使用
ip as-path access-list 1 deny _300_
ip as-path access-list 1 permit .*
router bgp 100
neighbor 6.6.6.6 filter-list 1 in|out
コマンドの詳細
^ : ASパスの先頭(隣接ルータ)に一致
$ : ASパスの末尾(広告の生成元)に一致
_ : 空白・カンマ・[]・()・入力文字の先頭もしくは末尾に一致
[] : 任意の1文字と一致。
- : 範囲を指定。
() : ()内の式をグループ化。
. : 任意の1文字に一致
+ : 1個以上の直前の文字パターンと一致
* : 0個以上の直前の文字パターンと一致
\n : nには数字が入る。直前のパターンに一致したものがn回以上繰り返されるものと一致
設定例
show ip bgp regexp [pattern] にて、一致確認ができるためこれを例とする。
まずは設定が入ってない状態。例として出すには無駄な項目多いですね。
R3#sh ip bgp | beg Network
Network Next Hop Metric LocPrf Weight Path
*> 30.3.3.0/24 0.0.0.0 0 32768 i
*> 31.3.3.0/24 0.0.0.0 0 32768 i
*> 32.3.3.0/24 0.0.0.0 0 32768 i
*> 33.3.3.0/24 0.0.0.0 0 32768 i
*> 34.3.3.0/24 0.0.0.0 0 32768 i
*> 200.1.1.1/32 1.1.1.1 0 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.2/32 20.1.1.20 0 100 0 200 i
*> 200.1.1.3/32 0.0.0.0 0 32768 i
* 200.1.1.4/32 1.1.1.1 0 100 400 i
*> 5.5.5.5 0 500 400 i
* 200.1.1.5/32 1.1.1.1 0 100 500 i
*> 5.5.5.5 0 0 500 i
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
* 5.5.5.5 0 500 100 700 700 700 700 700 i
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
*> 200.1.1.10/32 1.1.1.1 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.20/32 20.1.1.20 0 100 0 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
* 5.5.5.5 0 500 400 100 800 933 i
^100
隣接ASが100のものと一致
R3#show ip bgp regexp ^100
Network Next Hop Metric LocPrf Weight Path
* 200.1.1.4/32 1.1.1.1 0 100 400 i
* 200.1.1.5/32 1.1.1.1 0 100 500 i
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
800$
経路の生成元がAS800のものと一致
R3#show ip bgp regexp 800$
Network Next Hop Metric LocPrf Weight Path
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
^$
自分が生成した経路と一致
R3#show ip bgp regexp ^$
Network Next Hop Metric LocPrf Weight Path
*> 30.3.3.0/24 0.0.0.0 0 32768 i
*> 31.3.3.0/24 0.0.0.0 0 32768 i
*> 32.3.3.0/24 0.0.0.0 0 32768 i
*> 33.3.3.0/24 0.0.0.0 0 32768 i
*> 34.3.3.0/24 0.0.0.0 0 32768 i
*> 200.1.1.3/32 0.0.0.0 0 32768 i
*>i 200.1.1.20/32 20.1.1.20 0 100 0 i
_800_
ASパスの中のどこかにAS800が存在する経路と一致
R3#show ip bgp regexp _800_
Network Next Hop Metric LocPrf Weight Path
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
* 5.5.5.5 0 500 400 100 800 933 i
[0-9]00
0~9とに加えて00が付くパスと一致。
AS000,100,200,300,400,500,600,700,800,900が対象。
前後に"_"がないので、1000とか65100にも一致する。
R3#show ip bgp regexp [0-9]00
Network Next Hop Metric LocPrf Weight Path
*> 200.1.1.1/32 1.1.1.1 0 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.2/32 20.1.1.20 0 100 0 200 i
* 200.1.1.4/32 1.1.1.1 0 100 400 i
*> 5.5.5.5 0 500 400 i
* 200.1.1.5/32 1.1.1.1 0 100 500 i
*> 5.5.5.5 0 0 500 i
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
* 5.5.5.5 0 500 100 700 700 700 700 700 i
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
*> 200.1.1.10/32 1.1.1.1 0 100 i
* 5.5.5.5 0 500 100 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
* 5.5.5.5 0 500 400 100 800 933 i
[0-9]+
0-9が複数一連続するものと一致。
AS1~65535まで一致するが、自身が生成する経路は含まない。
R3#show ip bgp regexp [0-9]+
Network Next Hop Metric LocPrf Weight Path
*> 200.1.1.1/32 1.1.1.1 0 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.2/32 20.1.1.20 0 100 0 200 i
* 200.1.1.4/32 1.1.1.1 0 100 400 i
*> 5.5.5.5 0 500 400 i
* 200.1.1.5/32 1.1.1.1 0 100 500 i
*> 5.5.5.5 0 0 500 i
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
* 5.5.5.5 0 500 100 700 700 700 700 700 i
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
*> 200.1.1.10/32 1.1.1.1 0 100 i
* 5.5.5.5 0 500 100 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
* 5.5.5.5 0 500 400 100 800 933 i
([0-9]+)+
0-9が複数個一致するもの→([0-9]+)
が1個以上連続する(+)ものと一致。
ASパスが1個以上の物が一致。
R3#show ip bgp regexp ([0-9]+)+
Network Next Hop Metric LocPrf Weight Path
*> 200.1.1.1/32 1.1.1.1 0 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.2/32 20.1.1.20 0 100 0 200 i
* 200.1.1.4/32 1.1.1.1 0 100 400 i
*> 5.5.5.5 0 500 400 i
* 200.1.1.5/32 1.1.1.1 0 100 500 i
*> 5.5.5.5 0 0 500 i
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
* 5.5.5.5 0 500 100 700 700 700 700 700 i
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
*> 200.1.1.10/32 1.1.1.1 0 100 i
* 5.5.5.5 0 500 100 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
* 5.5.5.5 0 500 400 100 800 933 i
(([0-9]+)_\2)
この辺から難しい。
AS1~65535と一致したASと""同じもの""が2回より多く登場するものと一致。
([0-9]+)が700と一致した場合、700が2回より多いという意味。
なので「700 300 i」 等は一致しない。
R3#show ip bgp regexp (([0-9]+)_\2)
Network Next Hop Metric LocPrf Weight Path
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
* 5.5.5.5 0 500 100 700 700 700 700 700 i
.*
任意の文字が0以上…なので全てを示す。
ip as-path access-listは暗黙のdenyがあるので、
denyしたもの以外をpermitする際に使う。
R3#show ip bgp regexp .*
Network Next Hop Metric LocPrf Weight Path
*> 30.3.3.0/24 0.0.0.0 0 32768 i
*> 31.3.3.0/24 0.0.0.0 0 32768 i
*> 32.3.3.0/24 0.0.0.0 0 32768 i
*> 33.3.3.0/24 0.0.0.0 0 32768 i
*> 34.3.3.0/24 0.0.0.0 0 32768 i
*> 200.1.1.1/32 1.1.1.1 0 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.2/32 20.1.1.20 0 100 0 200 i
*> 200.1.1.3/32 0.0.0.0 0 32768 i
* 200.1.1.4/32 1.1.1.1 0 100 400 i
*> 5.5.5.5 0 500 400 i
* 200.1.1.5/32 1.1.1.1 0 100 500 i
*> 5.5.5.5 0 0 500 i
*> 200.1.1.7/32 1.1.1.1 0 100 700 700 700 700 700 i
* 5.5.5.5 0 500 100 700 700 700 700 700 i
*> 200.1.1.8/32 1.1.1.1 0 100 800 i
* 5.5.5.5 0 500 400 100 800 i
*> 200.1.1.10/32 1.1.1.1 0 100 i
* 5.5.5.5 0 500 100 i
*>i 200.1.1.20/32 20.1.1.20 0 100 0 i
*> 200.1.1.30/32 1.1.1.1 0 100 800 933 i
* 5.5.5.5 0 500 400 100 800 933 i
続きはまた明日