Ответ к задаче №8.10

В конфигурации не хватает статического маршрута по умолчанию для маршрутизации трафика не описанного в правилах PBR:

ip route 0.0.0.0 0.0.0.0 101.0.0.1

Примечание: Эта конфигурация упрощена для задачи и, для использования в реальной сети, должна быть дополнена.
Например, правилами проверки доступности провайдеров, которые будут влиять на политику PBR и/или статические маршруты.

Ответ к задаче №8.9

Тесты IP SLA для проверки доступности провайдеров (в реальной жизни лучше делать более сложные тесты, по аналогии с задачей 8.8):

ip sla 1
icmp-echo 101.0.0.1 source-interface FastEthernet0/0
threshold 200
timeout 200
frequency 3
ip sla schedule 1 life forever start-time now
!
ip sla 2
icmp-echo 102.0.0.1 source-interface FastEthernet0/1
threshold 200
timeout 200
frequency 3
ip sla schedule 2 life forever start-time now

Треки, которые отслеживают тесты:

track 101 ip sla 1 reachability
!
track 102 ip sla 2 reachability

Привязка трека к статическому маршруту и создание запасного маршрута:

ip route 0.0.0.0 0.0.0.0 101.0.0.1 track 101
ip route 0.0.0.0 0.0.0.0 102.0.0.1 200

Создание ACL, которые описывают нужный трафик.
HTTP-трафик из локальной сети 10.0.1.0:

ip access-list extended HTTP
permit tcp 10.0.1.0 0.0.0.255 any eq 80

Весь трафик из сети 10.0.2.0:

ip access-list extended LAN2
permit ip 10.0.2.0 0.0.0.255 any

Весь трафик, кроме трафика из локальных сетей:

ip access-list extended EX_LAN
deny ip 10.0.1.0 0.0.0.255 any
deny ip 10.0.2.0 0.0.0.255 any
permit ip any any

Создание route-map, которая описывает правила PBR с привязкой треков для отслеживания состояния провайдеров:

route-map PBR_RULES permit 10
match ip address HTTP
set ip next-hop verify-availability 101.0.0.1 1 track 101
route-map PBR_RULES permit 20
match ip address LAN2
set ip next-hop verify-availability 102.0.0.1 1 track 102

Если в адресе отправителя будет стоять IP-адрес не принадлежащий локальным сетям, то такие пакеты будут отброшены:

route-map PBR_RULES permit 30
match ip address EX_LAN
set interface null 0

Применение правил PBR к пакетам, который генерирует сам маршрутизатор (так как локальные сети представлены loopback-интерфейсами):

ip local policy route-map PBR_RULES


Итоговая конфигурация:

hostname msk-arbat-gw1
!
track 101 ip sla 1 reachability
!
track 102 ip sla 2 reachability
!
interface Loopback1
ip address 10.0.1.1 255.255.255.0
ip nat inside
!
interface Loopback2
ip address 10.0.2.1 255.255.255.0
ip nat inside
!
interface FastEthernet0/0
description Balagan_Telecom_Internet
ip address 101.0.0.2 255.255.255.252
ip nat outside
duplex auto
speed auto
!
interface FastEthernet0/1
description Philkin_Certificate_Internet
ip address 102.0.0.2 255.255.255.252
ip nat outside
speed 100
full-duplex
!
ip nat inside source route-map BALAGAN interface Fa0/0 overload
ip nat inside source route-map PH_CERT interface Fa0/1 overload
!
ip route 0.0.0.0 0.0.0.0 101.0.0.1 track 101
ip route 0.0.0.0 0.0.0.0 102.0.0.1 200
!
!
ip access-list extended LAN
permit ip 10.0.1.0 0.0.0.255 any
permit ip 10.0.2.0 0.0.0.255 any
!
ip access-list extended HTTP
permit tcp 10.0.1.0 0.0.0.255 any eq 80
!
ip access-list extended LAN2
permit ip 10.0.2.0 0.0.0.255 any
!
ip access-list extended EX_LAN
deny ip 10.0.1.0 0.0.0.255 any
deny ip 10.0.2.0 0.0.0.255 any
permit ip any any
!
ip sla 1
icmp-echo 101.0.0.1 source-interface FastEthernet0/0
threshold 200
timeout 200
frequency 3
ip sla schedule 1 life forever start-time now
ip sla 2
icmp-echo 102.0.0.1 source-interface FastEthernet0/1
threshold 200
timeout 200
frequency 3
ip sla schedule 2 life forever start-time now
!
route-map BALAGAN permit 10
match ip address LAN
match interface FastEthernet0/0
route-map PH_CERT permit 10
match ip address LAN
match interface FastEthernet0/1
!
route-map PBR_RULES permit 10
match ip address HTTP
set ip next-hop verify-availability 101.0.0.1 1 track 101
route-map PBR_RULES permit 20
match ip address LAN2
set ip next-hop verify-availability 102.0.0.1 1 track 102
route-map PBR_RULES permit 30
match ip address LAN
set interface null 0
!
ip local policy route-map PBR_RULES


Примечание: Эта конфигурация упрощена для задачи и, для использования в реальной сети, должна быть дополнена.
Доступность провайдеров конечно же лучше проверять не по ближайшему интерфейсу, а по аналогии с задачей 8.8.
Кроме того, так как локальная сеть представлена интерфейсами loopback, то правила PBR применены локально.
В реальной сети, скорее всего, нужны будут правила для трафика, который проходит сквозь маршрутизатор. Соответственно, правила PBR должны будут применяться в таком случае не локально, а к интерфейсу, в который входит трафик.

В данной задаче было бы проще не прописывать статические маршруты, а с помощью правил PBR настроить всю маршрутизацию. Но в реальной жизни, полезнее будет такой вариант, когда оставшийся трафик маршрутизируется по стандартной таблице маршрутизации.
Так как на локальном маршрутизаторе, кроме подключения к провайдерам, могут быть также какие-то туннельные интерфейсы и подобное, маршрутизация через которые осуществляется, например, на основании протоколов динамической маршрутизации.

Ответ к задаче №8.8

Создание тестов IP SLA для проверки доступности «google» и «yandex»:

ip sla 10
icmp-echo 103.0.0.10 source-interface FastEthernet0/0
threshold 200
timeout 200
frequency 3
ip sla schedule 10 life forever start-time now
ip sla 20
icmp-echo 103.0.0.20 source-interface FastEthernet0/0
threshold 200
timeout 200
frequency 3
ip sla schedule 20 life forever start-time now

Так как маршрут по умолчанию будет меняться, то надо явно прописать маршруты к тем ресурсам, доступность которых проверяется в тестах.
Маршруты должны быть через того провайдера, доступность которого будет зависеть от ответа тестов.
Статические маршруты для тестов (маршруты к «гугл» и «яндекс»):

ip route 103.0.0.10 255.255.255.255 101.0.0.1
ip route 103.0.0.20 255.255.255.255 101.0.0.1

Треки следящие за тестами:

track 110 ip sla 10 reachability
track 120 ip sla 20 reachability

Комбинированный трек, который будет в состоянии UP, если хотя бы один из внутренних треков (110 или 120) будет в состоянии UP:

track 12 list boolean or
object 110
object 120
delay down 5 up 5

Маршрут по умолчанию к Балаган Телеком с привязанным к нему треком:

ip route 0.0.0.0 0.0.0.0 101.0.0.1 track 12

Маршрут по умолчанию через Филькин Сертификат будет резервным, так как у него значение AD больше:

ip route 0.0.0.0 0.0.0.0 102.0.0.1 200

При переключении между провайдерами возникает проблема с «подвисаниями» сессий. Это связано с тем, что для сессий, которые были для переключения, остаются записи в таблице трансляций. Поэтому после переключения между провайдерами, необходимо очищать таблицу трансляций.
Для того чтобы делать это автоматически используется EEM (Embeded Event Manager).
Тут приведен простой пример, когда при смене состояния трека, каждый раз очищается таблица трансляций и генерируется сообщение (можно сделать два отдельных скрипта, для состояния UP и DOWN):

event manager applet TRACK_NAT
event track 12 state any
action 1 cli command "enable"
action 2 cli command "clear ip nat trans *"
action 3 syslog msg "Vse zarabotalo!!! Ura!"

Итоговая конфигурация:

hostname msk-arbat-gw1
!
track 110 ip sla 10 reachability
!
track 120 ip sla 20 reachability
!
track 12 list boolean or
object 110
object 120
delay down 5 up 5
!
interface Loopback1
ip address 10.0.1.1 255.255.255.0
ip nat inside
!
interface Loopback2
ip address 10.0.2.1 255.255.255.0
ip nat inside
!
interface FastEthernet0/0
description Balagan_Telecom_Internet
ip address 101.0.0.2 255.255.255.252
ip nat outside
duplex auto
speed auto
!
interface FastEthernet0/1
description Philkin_Certificate_Internet
ip address 102.0.0.2 255.255.255.252
ip nat outside
speed 100
full-duplex
!
ip nat inside source route-map BALAGAN interface Fa0/0 overload
ip nat inside source route-map PH_CERT interface Fa0/1 overload
!
ip access-list extended LAN
permit ip 10.0.1.0 0.0.0.255 any
permit ip 10.0.2.0 0.0.0.255 any
!
!
route-map BALAGAN permit 10
match ip address LAN
match interface FastEthernet0/0
route-map PH_CERT permit 10
match ip address LAN
match interface FastEthernet0/1
!
ip sla 10
icmp-echo 103.0.0.10 source-interface FastEthernet0/0
threshold 200
timeout 200
frequency 3
ip sla schedule 10 life forever start-time now
ip sla 20
icmp-echo 103.0.0.20 source-interface FastEthernet0/0
threshold 200
timeout 200
frequency 3
ip sla schedule 20 life forever start-time now
!
ip route 103.0.0.10 255.255.255.255 101.0.0.1
ip route 103.0.0.20 255.255.255.255 101.0.0.1
!
ip route 0.0.0.0 0.0.0.0 101.0.0.1 track 12
ip route 0.0.0.0 0.0.0.0 102.0.0.1 200
!
event manager applet TRACK_NAT
event track 12 state any
action 1 cli command "enable"
action 2 cli command "clear ip nat trans *"
action 3 syslog msg "Vse zarabotalo!!! Ura!"
!

Ответ к задаче №8.7

Надо исправить правило as-path prepend в route-map (в правиле используется неправильный номер автономной системы):

route-map INBOUND permit 10
set as-path prepend 64500 64500 64500

Ответ к задаче №8.6

В задаче просто показано то, что часть механизмов для управления BGP, могут быть использованы в разных направлениях.
Так, например, AS prepend обычно используется для управления входящим трафиком.
Но, при необходимости, он может использоваться и для управления исходящим трафиком.

router bgp 64500
no synchronization
bgp log-neighbor-changes
network 100.0.0.0 mask 255.255.254.0
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 prefix-list LAN out
neighbor 102.0.0.1 remote-as 64502
neighbor 102.0.0.1 prefix-list LAN out
neighbor 102.0.0.1 route-map PREPEND in
no auto-summary
!
route-map PREPEND permit 10
set as-path prepend 64502 64502 64502 64502

!
ip prefix-list LAN permit 100.0.0.0/23
!
!
ip route 100.0.0.0 255.255.254.0 Null0

Ответ к задаче №8.5

interface FastEthernet0/0
description Balagan_Telecom_Internet
ip address 101.0.0.2 255.255.255.252
bandwidth 9000
!
interface FastEthernet0/1
description Philkin_Certificate_Internet
ip address 102.0.0.2 255.255.255.252
bandwidth 3000
!
!
router bgp 64500
no synchronization
bgp log-neighbor-changes
bgp bestpath as-path multipath-relax
maximum-paths 2
bgp dmzlink-bw

network 100.0.0.0 mask 255.255.254.0
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 prefix-list LAN out
neighbor 101.0.0.1 dmzlink-bw
neighbor 102.0.0.1 remote-as 64502
neighbor 102.0.0.1 prefix-list LAN out
neighbor 102.0.0.1 dmzlink-bw
no auto-summary
!
ip prefix-list LAN permit 100.0.0.0/23
!
ip route 100.0.0.0 255.255.254.0 Null0

Ответ к задаче №8.4

Проблема в route-map OUTBOUND.
В ней не хватает правила, которое разрешает остальные обновления.
При текущих настройках, от провайдера Филькин Сертификат приходят только его сети.
В route-map надо добавить правило разрешающее остальные обновления:

route-map OUTBOUND permit 10
match as-path 10
set weight 1000
route-map OUTBOUND permit 20


Кроме того, для того чтобы, при доступности двух провайдеров, через провайдера Филькин Сертификат передавался только трафик в его сети, надо добавить route-map, которая повысит приоритет маршрутов полученных через Балаган Телеком:

neighbor 101.0.0.1 route-map WEIGHT in
!
route-map WEIGHT permit 10
set weight 500


Итоговая конфигурация:

router bgp 64500
no synchronization
bgp log-neighbor-changes
network 100.0.0.0 mask 255.255.254.0
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 prefix-list LAN out
neighbor 101.0.0.1 route-map WEIGHT in
neighbor 102.0.0.1 remote-as 64502
neighbor 102.0.0.1 prefix-list LAN out
neighbor 102.0.0.1 route-map OUTBOUND in
no auto-summary
!
route-map OUTBOUND permit 10
match as-path 10
set weight 1000
route-map OUTBOUND permit 20
!
route-map WEIGHT permit 10
set weight 500
!
ip prefix-list LAN permit 100.0.0.0/23
!
ip as-path access-list 10 permit ^64502$
!
ip route 100.0.0.0 255.255.254.0 Null0

Ответ к задаче №8.3

router bgp 64500
no synchronization
bgp log-neighbor-changes
network 100.0.0.0 mask 255.255.254.0
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 prefix-list LAN out
neighbor 102.0.0.1 remote-as 64502
neighbor 102.0.0.1 prefix-list LAN out
no auto-summary
!
ip route 100.0.0.0 255.255.254.0 Null0
!
ip prefix-list LAN permit 100.0.0.0/23

Ответ к задаче №8.2

hostname balagan-router
!
router bgp 64501
no synchronization
bgp log-neighbor-changes
network 101.0.0.0 mask 255.255.240.0
neighbor 101.0.0.2 remote-as 64500
neighbor 101.0.0.2 default-originate
neighbor 101.0.0.2 prefix-list DEFAULT out

neighbor 101.0.0.6 remote-as 64502
neighbor 101.0.0.10 remote-as 64503
no auto-summary
!
ip prefix-list DEFAULT seq 5 permit 0.0.0.0/0

hostname PhCert-router
!
router bgp 64502
no synchronization
bgp log-neighbor-changes
network 102.0.0.0 mask 255.255.248.0
neighbor 101.0.0.5 remote-as 64501
neighbor 102.0.0.2 remote-as 64500
neighbor 102.0.0.2 default-originate
neighbor 102.0.0.2 prefix-list DEFAULT out

neighbor 102.0.0.10 remote-as 64503
no auto-summary
!
ip prefix-list DEFAULT seq 5 permit 0.0.0.0/0

Ответ к задаче №8.1

P3 получает два маршрута в сеть 195.12/16: один через P1, другой через P2.

Они равнозначны, но P3 должен выбрать только один из них. Делается это на основе IP-адреса, который меньше у P2.

Соответственно P3 анонсирует своим соседям только один маршрут через P2 до данной сети. P2 его не получает, разумеется, а вот P1 он этот маршрут изучит.
В итоге P1 получит два анонса об этой сети, а P2 только один.

Это очень простая в постановке задача с нетривиальным ответом.