1.-praktika.md
1 # Практика 2 3 Немного практики для закрепления 4 5 Имеем вот такую топологию: 6 7  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