[size=0.19] 拓扑如下: 7 M6 `8 r3 k# t% N$ ~
! n9 E7 M* i9 { Y: R$ `! B
C0 c1 l9 Z) d8 o+ b- q
& L4 d0 t5 F# a, s
& A( I5 [0 X1 Y& o- ]" n% I: f" i$ U[size=0.19]作业:在两个路由器之间通告" `; g6 i2 @$ w5 l. _! y# S3 b
[size=0.19], u+ n) ~. q0 `7 F4 o- Y
6 b3 n0 m, H- F[size=0.19]router-policy匹配前缀列表来过滤路由和修改路由属性7 m2 r1 C% [5 s3 |4 U: ?* B
[size=0.19]
7 J6 a' I' l1 p+ |
. d+ a% K1 P% u& z9 G" u[size=0.19]
# R0 Z# D9 \7 S! p, N
我们在AR1和AR2路由器之间运行的是OPSF协议,这里的配置就不写了。在AR2上创建4个本地回环口地址,通过引入直连路由时调用route-policy 时过滤掉想被过滤的路由条目,让AR1学习到想学习的路由。 4 S7 z) l8 F. s& x l
7 ?1 S# A, ^* y' x: G+ w7 U
, I3 H, h! \ U! O9 \ 2 ~4 e3 M. ]9 j2 o% Z! w+ w
[size=0.19]1.首先我们在AR2上创建4条ip前缀 ; R+ F8 D3 }3 T
; m- ^$ y2 V" Q' M' w5 e; Y2 c, P; R+ P9 d# d. |' U
: j: D1 d* X% i6 H$ {$ K; e[size=0.19]创建ip 前缀,ip前缀后面是数字(红色框),接着是索引号(黄色框),当然也可以不加,接着是动作(绿色框),后面是ip地址(白色框),最后是掩码(紫色框),不同于ACL这样用的是掩码,而ACL最后加的是通配符。在全局模式下创
8 R2 n$ H' ?' ?- M R* n
' r. k0 A0 J% g8 e
F( s) g3 C ?( U* N7 u' p
建一条编号是1索引号是10的允许192.168.1.0网段掩码24的ip 前缀。 ( F) o' r) a' f) h8 s

- u+ D, q/ A1 B1 `% T. a
, D2 H$ z6 r8 j# Y: j! A, Z9 W) E, |5 p e0 u2 W! p
, B- e5 g5 u9 l! ^6 ~
) q- d& t6 C# S0 J. h& W; y
2 o4 s; V. _4 u: V; ?0 A3 _3 `; {' p' r. K
- f9 b+ v: T; Y7 L[size=0.19] 创建一条编号5 K0 N7 b$ w/ Y( n6 Q, m" w7 P5 N
[size=0.19]6 Z# t, D I& y5 T, f& c$ M& Z
7 H+ O7 }' f* z: t
[size=0.19]
; L& P) M8 h; x) \0 [: {[size=0.19] 2的索引号是10,允许172.16.0.0网段掩码16的ip前缀。
$ u& c. C4 h8 {( z& V 8 W" h: q. Q& F; ~1 H) s
! Y1 i4 H+ u8 |( r5 Z
, N5 G/ P* B# @1 |: [" Y0 l0 l, g7 F C/ K( c* r* w
[size=0.19] 红色框中的掩码,在这里是ip 前缀,所以表示2.2.2.2 这条单条路由条目,要用32,如果写的是0,表示的是默认路由。这里是和ACL不同的地方。 3 R: A7 k/ B% W. S, u9 H8 M7 z9 E U
: @$ o& u4 X/ l/ m/ Q' ?# c9 Y
$ H- j. ?, t' O4 w3 d% y9 R
, m8 P8 S$ F; E- c9 u7 ~$ L7 ^
& E' B6 {4 }2 N D" j, t[size=0.19] 接着还是在AR2上配置4条route-policy
1 t+ X: Y$ S" g, l
9 c2 |& ^# F V6 q! N2 {% G
8 I% O! u0 Y5 T7 _
[size=0.19]
8 [+ N9 F2 Z# n6 x
在全局模式下创建route-policy,后面接的是编号(红色框),动作允许还是拒绝(蓝色),节点(蓝色)后面是ID号(绿色,必须是10的倍数)节点+ID号相当于ACL的rule+ID .
* s3 D2 \. Z, f5 S6 J
4 r4 k5 E+ U8 B7 v9 f
! |- h- B& p$ W. g
[size=0.19] 创建1条路由策略编号是1的节点10的匹配通过的这么一条节点语句
4 I5 ~6 V! i( m' o4 B. a * Z6 n* b7 G, \3 `* I( {" J: B

4 r( p3 \! c8 D* W, X
9 J- n4 m% \5 J; v, ^, {5 M& o7 I: L+ `! i5 p
! w: }) Y" a/ u% y# b
[size=0.19]3 d& N# `+ ]4 b. _0 n
# ~4 P! f! o/ T% \
一条路由策略包括节点语句包括节点语句和条件语句以及执行语句的集合。按照编号大小从小到大顺序执行
5 j! Y e( q7 ]+ w& q6 S4 L
0 U5 `5 X$ J! J/ k4 l, u
4 ~# ?* s7 x# S2 @$ U6 \ . ^. }7 V5 \3 L6 J1 R
: f/ ~1 \$ i( D9 a; o8 I8 d
0 w" y* d* H( `0 l1 ?2 ?( y0 U4 e: V
- D8 i# x( j' @; W: q[size=0.19] 如果符合ip 前缀列表1里面的动作,就去执行
+ t6 c% {) E) D+ p
& v% n: o# e9 Q' N
' [% f3 p* K! J+ `3 V( @
[size=0.19] 同样的接下来是匹配剩下的3条ip 前缀列表 ~/ M2 ^' @$ u5 I1 ?2 d3 g
 ) |/ N E9 I/ {5 d4 Z7 X+ k8 `
2 l- j( O! G( z) O3 F3 Y
' |/ P' H* E6 M5 b+ R8 K* A' S7 M/ ]5 o1 Q: l, g
[size=0.19]
$ w5 i* u2 X, @/ }6 n7 w8 w
8 t' g; _6 `9 ~
/ T/ q# J- O) n" w/ e$ _# L$ S
查看刚刚配置过的4条route-policy
- k9 q4 c( d* P: x, y, _% r9 m
$ N+ A- q& U! m , ~( ^% H8 ]) K0 M7 c9 f
5 e i }' E4 d8 P1 x. }5 R3 ]
$ O" `, ~% t9 R+ T' q, z- \
% D8 J( X) C) K! O$ l
[size=0.19]
( @+ N5 _4 W. k/ V. W
% l) x3 @" t8 E' X1 G1 q$ H, x! f
在ospf进程下引入直连路由时调用route-policy 1 4 Q# }6 _5 R7 [3 k' ]7 [ Q
" R3 z; q3 G) E/ b) u4 N: l, y2 `
4 Q7 ~7 y& |$ r: d3 v; a
/ P+ H* l# e- E
& y* Z9 h* V% @7 [8 z! a+ O& e* S$ @, p" U! Q
' ]$ R; D) Q, J& c
[size=0.19] 当然我们也可以查看刚刚配置过的4条前缀列表的含义
5 @! c5 H( | _# |
* t4 P3 x; j: u: t; z
0 g; l b) E% O, \3 y/ S5 ]9 j' }! M# y' _8 U) W
7 ~1 s/ l. x/ k9 d. E) R
[size=0.19]
/ Q K4 {. B4 i6 D0 c
那么在AR2上调用了这条策略后,AR1能学习到哪些路由? 4 D# D# ]' D: u. J! |, x4 S
L3 R$ f8 O, v+ u3 a/ h- T
( q9 i- I [, U- b6 K: V% p, t首先我们看一下第一个前缀ip列表,执行的动作是允许192.168.1.0网段的路由,这里是能命中到我们创建的192.168.1.1,在节点10的语句中,执行的是允许动作,而条件语句中的前缀列表1也是允许的动作,那么就会匹配到,但是由于
2 V8 f9 |$ R" B; L$ l9 x
) G- i' `" I8 }. E
route-policy 和acl 也有隐含默认(在华为设备中)。所以节点语句10的内容就是匹配192.168.1.0网段,其它的都不允许
, i. r4 Q. s9 R; P& B, d
。
$ q: j% M8 g: K3 P[size=0.19]第二个节点20,前缀列表2中也是允许就能命中172.16.0.0,加上节点语句的允许动作,那么也就会被匹配到。其它的都不允许。 * a9 t9 L4 E2 h+ ~1 j# w; d
1 h) Q# D# u* Z( X( K) Y, @
\% Z- ?- `% t( y' K# t, N
7 {9 m8 u* p$ F M, d& J& k
[size=0.19]第三个节点30中,前缀列表3是允许2.2.2.2这条路由,首先这里能命中。在看节点语句是也是允许的动作,和条件语句也一样,那么就会别匹配。其它的都不允许。 5 a; c# K. t, I" ~9 [
6 S" w; i) A* x* A- F( I
$ Q" p( F- n, |% q- U1 H+ \% T. @
& R1 L* g6 o z0 R2 X$ F: ~2 Q[size=0.19]第4个节点40中,前缀列表4是拒绝的,而节点语句是允许的。所以这里就不会匹配,就会自动跳到下一条节点,而之后没有,所以就执行前3个节点语句。所以除了3.3.3.3/32这条路由条目,其它3条都会被AR1学习到。
6 Q2 P" `! U4 B# B7 P
. u; Y9 y: I X
9 ]8 L0 h6 I* M8 |
' r: m- @# e7 d
[size=0.19]我们在AR1上查看路由表验证下,可以发现只过滤了3.3.3.3这条路由条目
8 ]# e @) K( d3 f- U
3 U- b% ?6 `& e0 z4 J* ~
/ z: E% M0 t4 [ J/ h1 t& b
0 @/ ^, @$ B3 A. ]3 @9 y6 n3 O4 | d+ b$ r
5 l* k4 \$ u* [0 c6 u. W& C
4 @' Y7 Z$ j. z) J+ E1 S( |( G[size=0.19]
! C% j$ l* C0 }: n% S' M 2.如果我们把第一个节点语句10的动作改为deny,后面的3个节点语句不动。不过我们把节点10里面的条件语句删除。那么AR1可以学习到什么路由呢? % {% @2 ?0 s$ X( S+ |
6 m. q! y. l1 [$ o3 ?# V; }
9 L+ n5 z" A( ?7 W: ^[size=0.19] 在AR2上重新写节点10,会提示已经覆盖了之前的节点10 : X8 P" u$ q! F& v( r
4 T9 [8 K( b( _% l$ f+ n6 i/ a
" V2 ]) h+ _9 c$ D+ `" p
& ^! c& r- } c7 S8 G+ z+ @# r8 x9 O7 ]1 x

2 a* _! e! C4 I; j3 s6 H* v/ K. D- O6 u7 [; c$ u
4 }& o9 X! q; \7 _5 i: O) d/ d" @
! k% u$ m6 q( O2 E9 }[size=0.19] 在路由策略进程下,删除掉ip前缀列表1 " j1 b: |# y0 [; K: b% H6 v
' u9 \9 L, h" s j7 M' s9 ?
3 T. J- I' H8 t' q6 C1 K7 n
6 x* [" S4 |3 L' g2 \5 O- K[size=0.19] 查看刚刚的配置,可以发现节点10只有节点语句而没有条件语句
9 W }2 w% o# P5 s) [- E8 G1 \
" C: \- U* H8 ]# `! e
( y0 h, O% b/ h" L
0 D) y2 d5 d: z7 J

% m% A+ D% G7 z* a+ d( B+ U' O& l' \, H$ i+ ?7 a- z
* D1 D3 A& _* u0 p' e- i9 `
" f8 B. d) J& N0 D[size=0.19]# F5 H3 v9 c# r6 ?# q( N& j. |
/ x; n, p4 O4 N' S8 C
我们首先看一下第一个节点语句10,而没有条件语句,节点语句是拒绝。那么就会拒绝所有路由,AR1上自然也就学习不到引入的路由。
9 J6 Z, k9 X& r4 y5 F! q. ^6 f
7 Z6 |$ S/ o# f) c, ]' O, n
2 z. {1 ~1 `2 O$ n$ G7 k! \" V8 s
, h( F( T9 _) Z[size=0.19] 在AR1上查看路由表验证下,果然是没有学习到路由。 : W3 j7 f/ z+ K. U% y" y; j' Q" R
0 e5 W- y K! r& k
; z; V! ~, g' Q8 f
+ U: b9 i9 T6 Q# X' h# g" d% h
) D" j/ Z9 w6 h
8 G; f8 c: ~4 B c1 z" K; q0 P1 g9 W* C( U% s7 O
" X7 c% e5 z. @/ `; |# Z
[size=0.19]; G$ O, {( f9 ^: C( {: N
2 p( z4 X( Z. m1 y: p" w$ T
2 ~# m, s& n. g' o4 W a 3.那我们把ip前缀列表1-4都修改成如下 4 q8 j+ f: G& _5 b6 T" j
3 H/ `8 j2 [$ J h
# k6 V2 ?4 o6 ^7 O8 j

) C2 p. w9 v2 [0 A# h0 Y0 ~. o( H8 T$ r! M$ j
3 A* b7 I7 h% U }8 C7 v3 ^
f( O7 N5 A% A, F* V; H" q: E& A" q

6 B: y+ a' \: Z; T1 L
( p) F5 p2 O6 `. X4 f4 e
9 Y; K. f" T5 i" a" l5 q
2 S, i* A/ z `3 d 3 j+ ^1 B; a' n* Q
2 ~! r6 c" F' s% O8 ~# l: H8 A& V( g7 l& W+ u
5 ]6 h, | o. ^4 q- H8 L. r 5 I0 I2 c, G- o+ F$ p& t, d3 J j) F
7 g6 W$ d! F3 J6 x& b9 ^% E, C. ~
8 X% @( P2 G( O7 D* y/ F: r8 E h: @; z/ F; O
[size=0.19] 重新配置下route-policy 4条 & R# R' c& c& g: a' P1 o: y
, ^3 v! ]4 W! M0 P2 \* n1 k
. g2 I6 V# d4 O* V6 B / o; @) i" M! {

+ P q3 E2 K( C, B0 b2 `( T( P7 z
" v { K6 [. f( S, }8 n7 p9 v
; b T! m. [. w8 I+ O% D4 M) L9 l

8 \+ v4 d9 ~8 f. P) Y/ Q- H% S& n' i% i, ?$ J
2 g$ t! {7 Z( D0 b, _3 q# ^3 u/ {" m# b* B+ b

$ z$ U/ r' C( l$ B
4 o. V' `2 ?" L7 j$ G1 K) X* B$ }) `2 W* o T
; @5 p1 ] u$ S7 j4 Z/ _8 w* E/ j

t, S" X+ }! ^0 U
( z, f5 |6 I" O# w2 R
( E4 \) o1 E+ k5 {+ l1 \0 D# P, {3 s2 ^

6 i# J! e$ ^) B
; d' Y- i- t. \) r0 C3 g2 ?, }+ S4 A' R. W1 d
- m5 K4 e; r4 ^4 [
1 k2 P8 @- [! [! F
# l8 F& F1 H. x8 \, \$ a
! @* q$ m$ r- t0 V) E/ c$ y
- a0 O3 X& r2 r& N" a+ r: c) Y D[size=0.19]那么现在AR1可以学习到什么路由条目呢?
7 {# G, e% H! a5 ?: Q( ?
4 h% r) c/ C# d1 P/ f# D. P: f3 B[size=0.19]我们来看下节点10,节点10的动作是允许,而ip前缀1是拒绝,那么就不会选中,就去跳到第二个节点20,节点20的动作是拒绝,而ip前缀2是允许,那么同样也不会选择,跳到第三个节点30,节点30的动作是允许,而ip前缀3是允许,那么
# r B0 R$ W8 T" I8 |3 R
) D+ ?& S n# t" {# S: M
就会命中和匹配上,第四个节点40,节点40的动作是允许,而ip前缀4是允许,那么也会命中和匹配上。 + R/ G5 W! L: I- h, N
: ]& V, W. }! F0 L
9 g1 x; W b0 z& M1 U[size=0.19]所以节点30和节点40,就会被执行。所以这时可以学习到192.168.1.1和172.16.1.1这两条路由。
1 A4 D* p7 s9 B: n
$ [8 V. t) c% Z) K) n6 n: K2 }
$ s: t8 m2 @! E$ U[size=0.19]我们在AR1上查看验证下,可以发现已经学习到两条路由了。
" s0 o$ m0 k5 y, l; g
K8 q# C$ P2 u. Q# D. P# Z" o9 K' q3 F, \( d8 J- q2 b
i5 D3 j+ R6 Z5 e8 S6 g7 d" d- C% E
[size=0.19]我们都知道一个完成的route-policy 是由三部分组成,节点语句+条件语句+执行语句。每个节点语句可以有多个条件语句,节点语句可以有多个条件语句,条件语句之间的关键是“与”(和)关系。但是一个节点只有一个ACL或者是ip前缀列
}: F- V7 T4 s" p% f" `
2 p) ]7 m& Q3 `& K* q# c' {
3 E7 U" C3 K: ~5 D& ?4 n1 M7 j/ r
表。当条件语句的一个或者多个条件语句满足了,才会执行本节点内的动作。 6 l0 b! j* |8 C( Z# q/ \% [
! F! m% L8 ]9 E! E0 w! v
8 Y- d3 d, g! B7 j) R$ H 4 o' e+ Z \4 b3 @2 a7 b
[size=0.19]当然一个route-policy 由一个或者多个节点组成,节点之间的关系是“或”,是根据节点编号大小自上而下按顺序执行,匹配上一个节点就不会继续向下匹配。
! x4 u* G& j: H: |, ^
9 w8 T; V2 R% c3 P
1 N0 \3 e. j1 j5 N[size=0.19]我们接着3的实验,也可以通过route-policy 修改它的属性,修改它的属性就是必须要满足他们的条件语句,最后的执行语句才会执行。 6 [& |( m& z9 w) {; ?
6 V3 w7 I- c' q
1 O, R& O; j) r6 {: U
[size=0.19]接着我们在重新添加route-policy 在节点30和节点40中 ) f9 d# f- {0 H) }% F! Z3 U
+ L( g$ M% Y. [
4 G4 {: N: y( y ]! r! L2 e1 K! u3 u! ], z) _0 E0 ?
5 U" t8 @$ |: g, {2 k' R1 M
[size=0.19]执行把192.168.1.0网段路由改为type-1 : q: e F6 ^) L0 x- O
: c. H t' t4 U. |) U# z+ o: h
( [2 m7 W" Z# E; X* D: g
) `9 y+ O6 J6 c; S1 \" j
& Q! ]: V! i% Y: n6 W& E ' k% ~1 W2 W V
9 Y( q% ?" B9 R* L. K n
* m% k6 @# q g3 z% I/ i1 \6 I/ n
4 q/ R' Y( q1 ~$ h% m2 v[size=0.19]如果匹配tag标记100,执行开销为20 4 v% _% t( s% H& M1 ^

' T# ^3 P* l: O8 X3 C& M, A4 u: m: o
/ l% k1 L/ l5 j. G! ~% }+ q* _& _0 t* Q) `9 o, Q0 x3 I, s+ [( v$ V
[size=0.19]执行开销类型为类型1
* C) ~" T) H4 c9 D1 @8 U
! P7 h9 l' u0 X% K& E
2 f) W8 c* K" Z# Y1 I0 {8 w[size=0.19]查看刚刚配置的结果 - }& U. H* z5 ~" Z- ?$ ~5 s3 }* f/ |
3 |- F% @2 {4 M
4 C# J: v. s( L+ K
" X1 m" R+ X6 L) o# T$ @' W& B8 m3 I o: o6 F
[size=0.19]最后在AR1上查看路由表和lsdb验证下
! n7 ^7 R# N8 Q, \) C, E
2 k9 C& g# P( y' l! }& |. I% V
4 G2 w. R. M" i% k+ M
[size=0.19]我们可以看到节点30的条件语句都匹配了,所以AR1可以学习到,并且把引入外部路由的默认类型2改成了1
" ^' h: m9 n1 l& q x" N* t4 z8 P
3 z& e6 H% |" C4 s; @& u9 |
6 `3 E& |% g' s" Y {[size=0.19]而节点30 中的条件语句第一条就不匹配,所以后面的条件语句都不会匹配,所以就会被过滤掉。条件语句必须全部满足才可以。
5 z" f% E, s; I) ^ # O" R' y, k. [

! R* z( {+ G1 f; R
4 ]0 u- W- I5 W6 m1 b* ]# H/ B: e4 d& s, E( E5 t8 p4 C9 t+ p
4 d3 v+ e1 o+ Q) V& k

6 [4 `% \: g4 @+ C6 \* w% Y( R( A! N( i4 F
4 U0 I8 [6 B: v' P+ Z
3 y' z' ^0 ~; D( g4 u" E
h7 U3 F" _! K0 @: ~ n9 W* g. [% c; ?& |: W, h; I( M
|