Особенности фильтрации маршрутов

Материал из Cisco CCNP
Перейти к навигации Перейти к поиску

Особенности использования extended ACL в distribute-list и route-map

Возможно использование extended access-list c distribute-list, однако, синтаксис может немного смутить, так как он отличается от использования в других местах (например, фильтрации пакетов). Когда extended ACL используется в distribute-list для BGP он работает в точности как prefix-list. Это значит, что вы можете искать совпадения как по адресу, так и по префиксу маски. Другими словами, если у вас есть префиксы 10.0.0.0/8 и 10.0.0.0/16 в можете задать правило, что не просто сеть должна быть 10.0.0.0, но и маска иметь определённый вид. Для prefix-list это выглядело бы, например, так

ip prefix-list PREFIX1 permit 10.0.0.0/8

Если использовать extended access-list в BGP, следует обратить внимание, что синтаксис листа меняется с совпадения пары source и destination (ip access-list NUM permit ip <source> <source mask> <dst> <dst mask>) на совпадение адреса и маски маршрута. Аналогичный ext ACL для префикса выше выглядел бы так

access-list 100 permit ip host 10.0.0.0 host 255.0.0.0

Данное выражение означает буквально следующее: сеть должна быть в точности 10.0.0.0, маска в точности 255.0.0.0. Например,

access-list 101 permit ip 192.168.0.0 0.0.255.255 host 255.255.255.0

выражение означает, что адрес должен начинаться с “192.168”, а маска быть /24. Т.е. совпали сети 192.168.0.0/24, 192.168.100.0/24, 192.168.200.0/24, etc.

Ext ACL может использоваться для фильтрации при редистрибуции как в IGP, так и в BGP. Например, если мы возьмём предыдущий access-list 101 и используем его в route-map так, как в примере ниже:

route-map OSPF_TO_RIP permit 10
 match ip address 101
!
router rip
 redistribute ospf 1 metric 1 route-map OSPF_TO_RIP

Результатом будет перераспределение маршрутов из OSPF в RIP, но только тех, что вида 192.168.X.X/24. При использовании extended access-list в distribute-list в IGP может возникнуть путаницу из-за того, что синтаксис ACL меняется. В предыдущем примере нормальное поле “source” в ACL представляло network address, а “destination” - subnet mask. В IGP distribute-list “source” поле в ACL совпадает с адресом источника обновления (update source of the route), а “destination” - network address. Такое использование ACL позволяет нам контролировать сети, которые мы получаем, но, что более важно, что мы может контролировать и от кого мы их получаем. Приведу в пример топологию:

R1, R2, and R3 share an Ethernet network 123.0.0.0/8 that is running RIP. Both R1 and R2 are advertising the identical prefixes 10.0.0.0/8 and 20.0.0.0/8 to R3. Their configurations are as follows:

R1#show ip int brief | exclude unassigned

Interface                  IP-Address      OK? Method Status Protocol
FastEthernet0/0            123.0.0.1       YES manual up     up
Loopback0                  10.0.0.1        YES manual up     up
Loopback1                  20.0.0.2        YES manual up     up
R1#show run | begin router rip
router rip
 version 2
 network 10.0.0.0
 network 20.0.0.0
 network 123.0.0.0
R2# show ip int brief | exclude unassigned

Interface                  IP-Address      OK? Method Status Protocol
FastEthernet0/0            123.0.0.2       YES manual up     up
Loopback0                  10.0.0.1        YES manual up     up
Loopback1                  20.0.0.2        YES manual up     up
R2#sh run | begin router rip
router rip
 version 2
  network 10.0.0.0
 network 20.0.0.0
 network 123.0.0.0
R3#show ip route rip
R    20.0.0.0/8 [120/1] via 123.0.0.2, 00:00:00, Ethernet0/0
                [120/1] via 123.0.0.1, 00:00:00, Ethernet0/0
R    10.0.0.0/8 [120/1] via 123.0.0.2, 00:00:00, Ethernet0/0
                [120/1] via 123.0.0.1, 00:00:00, Ethernet0/0 

Из этого вывода видно, что у R3 оба префикса присутствуют дважды, по одной записи для R1 и R2. Теперь представим, что мы хотим получать префикс 10.0.0.0/8 только от R1, а 20.0.0.0/8 от R2. Делаем следующую конфигурацию ACL

R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.

R3(config)#access-list 100 permit ip host 123.0.0.1 host 10.0.0.0
R3(config)#access-list 100 permit ip host 123.0.0.2 host 20.0.0.0
R3(config)#router rip
R3(config-router)#distribute-list 100 in Ethernet0/0
R3(config-router)#end
R3#clear ip route *
R3#show ip route rip
R    20.0.0.0/8 [120/1] via 123.0.0.2, 00:00:00, Ethernet0/0
R    10.0.0.0/8 [120/1] via 123.0.0.1, 00:00:00, Ethernet0/0

Теперь видно, что R3 имеет по одной записи для каждого из префиксов так, как нужно по условию задачи. The disadvantage of this application however is that we cannot distinguish prefixes based on their netmask. For example we could not say that we want to receive prefix 172.16.0.0/16 from only R1 and prefix 172.16.0.0/24 only from R2. For this implementation in IGP we would use a prefix-list that is called from a distribute-list with the “distribute-list prefix” syntax under the routing process.

Итак, подводя итог можно сказать следующее:

  • 1. Нормальная интерпретация ACL:
    • source
    • destination
  • 2. Аналогично префикс листу
    • address
    • mask
  • 3. От кого и что
    • Проверяем, кто анонсировал
    • Что за сеть

Интерпретация №2 используется в route-map:

  • for redistribution betwen 2 IGPs
  • for a “distribute-list ROUTE_MAP in” for BGP

Ссылки

Using Extended Access-Lists In A Distribute-List