/ 8.-bgp-i-ip-sla / 3.-pbr / 1.-praktika.md
1.-praktika.md
 1  # Практика
 2  
 3  Немного практики для закрепления
 4  
 5  Имеем вот такую топологию:
 6  
 7  ![](http://img-fotki.yandex.ru/get/6716/83739833.2b/0_c0950_6b7e5d1_XXL.png)
 8  
 9  В данный момент трафик R1-R5 и обратно идет по маршруту R1-R2-R4-R5, для удобства, адреса присвоены так, чтобы последняя цифра адреса была номером маршрутизатора:
10  
11  > R1\#traceroute 192.168.100.5  
12  > 1 192.168.0.2 20 msec 36 msec 20 msec  
13  > 2 192.168.2.4 40 msec 44 msec 16 msec  
14  > 3 192.168.100.5 56 msec \* 84 msec
15  >
16  > R5\#traceroute 192.168.0.1  
17  > 1 192.168.100.4 56 msec 40 msec 8 msec  
18  > 2 192.168.2.2 20 msec 24 msec 16 msec  
19  > 3 192.168.0.1 64 msec \* 84 msec
20  
21  Для примера, предположим, что нам нужно, чтобы обратно трафик от R5 \(с его адресом в источнике\) шел по маршруту R5-R4-**R3**-R1. По схеме очевидно, что решение об этом должен принимать R4. На нем сначала создаем ACL, который отбирает нужные нам пакеты:
22  
23  ```text
24  R4(config)#access-list 100 permit ip host 192.168.100.5 any
25  ```
26  
27  Затем создаем политику маршрутизации с именем “BACK”:
28  
29  ```text
30  R4(config)#route-map BACK
31  ```
32  
33  Внутри нее говорим, какой трафик нас интересует:
34  
35  ```text
36  R4(config-route-map)#match ip address 100
37  ```
38  
39  И что с ним делать:
40  
41  ```text
42  R4(config-route-map)#set ip next-hop 192.168.3.3
43  ```
44  
45  После чего заходим на интерфейс, который смотрит в сторону R5 \(PBR работает с входящим трафиком!\) и применяем на нем полученную политику:
46  
47  ```text
48  R4(config)#int fa1/0
49  R4(config-if)#ip policy route-map BACK
50  ```
51  
52  Проверяем:
53  
54  > R5\#traceroute 192.168.0.1  
55  > 1 192.168.100.4 40 msec 40 msec 16 msec  
56  > 2 192.168.3.3 52 msec 52 msec 44 msec  
57  > 3 192.168.1.1 56 msec \* 68 msec
58  
59  Работает! А теперь посмотрим внимательно на схему и подумаем: все ли хорошо?
60  
61  А вот и нет!  
62  Следуя данному ACL, у нас заворачивается на R3 весь трафик с источником R5. А это значит, что если, например, R5 захочет попасть на R2, он, вместо короткого и очевидного маршрута R5-R4-R2, будет послан по маршруту R5-R4-R3-R1-R2. Поэтому, нужно очень аккуратно и вдумчиво составлять ACL для PBR, делая его максимально специфичным.
63  
64  В этом примере мы в качестве действия, применяемого к трафику, выбрали переопределение некстхопа \(узла сети, куда дальше отправится пакет\). А что еще можно сделать с помощью PBR? Имеются в наличие команды:
65  
66  * set ip next-hop
67  * set interface
68  * set ip default next-hop
69  * set default interface
70  
71  С первыми двумя все относительно понятно – они переопределяют некстхоп и интерфейс, из которого пакет будет выходить \(чаще всего set interface применяется для point-to-point линков\). А в случае, если мы применяем команды set ip **default** next-hop или set **default** interface, роутер сначала смотрит таблицу маршрутизации, и, если там имеется маршрут для проверяемого пакет, отправляет его соответственно таблице. Если маршрута нет, пакет отправляется, как сказано в политике. К примеру, если бы мы в нашей топологии вместо set ip next-hop 192.168.3.3 скомандовали set ip default next-hop 192.168.3.3, ничего бы не поменялось, так как у R4 есть маршрут к R1 \(через R2\). Но если бы он отсутствовал, трафик направлялся бы к R3.
72  
73  > Вообще говоря, с помощью команды **set** можно изменять очень много в подопытном пакете: начиная от меток QoS или MPLS и заканчивая атрибутами BGP
74