8.4. Настройка ACL
Назначение
Списки контроля доступа (ACL) предназначены для идентификации трафика по различным признакам. Списки ACL могут идентифицировать трафик по таким полям как IP-адрес, MAC-адрес, и запрещать или разрешать передачу пакетов с определенными признаками.
Важно!
Данная функциональность предназначена только для анализа транзитного трафика. Для анализа трафика, получателем которого будет являться сам коммутатор, необходимо использовать CoPP ACL.
Описание
ACL может содержать несколько записей управления доступом (ACE). Каждая запись ACE представляет собой правило доступа, определяющее, следует ли разрешить или запретить пакеты, удовлетворяющие условиям данного правила. Пакеты проходят проверку на соответствие записям ACL. Процесс продолжается до тех пор, пока не будет найдено совпадение или исчерпаны все записи. Если совпадение не найдено, выполняется действие, предусмотренное неявным правилом. В AqNOS неявное правило разрешает прохождение любых пакетов.
Коммутаторы Aquarius поддерживают несколько видов ACL.
Для идентификации трафика по параметрам заголовка Ethernet поддерживаются:
базовые MAC ACL;
стандартные MAC ACL.
Для идентификации трафика по параметрам заголовков 3-его и 4-ого уровней поддерживаются:
базовые IPv4 и IPv6 ACL;
стандартные IPv4 и IPv6 ACL;
расширенные IPv4 и IPv6 ACL.
Базовый MAC ACL может фильтровать пакеты по MAC-адресу отправителя фрейма Ethernet (MAC-SA) и MAC-адресу получателя фрейма Ethernet (MAC-DA), а MAC-адрес может быть задан с помощью маски, настроен как MAC-адрес узла, или настроен как любой MAC-адрес (чтобы фильтровать все MAC-адреса). MAC ACL также может фильтровать трафик по другим полям фрейма Ethernet, таким как COS, VLAN-ID, тип протокола, инкапсулированный внутри фрейма Ethernet.
Стандартный MAC ACL может фильтровать пакеты по тем же параметрам, что и базовый MAC ACL. Кроме это, стандартный MAC ACL может фильтровать трафик по полям INNER-COS, INNER-VLAN-ID внутреннего фрейма Ethernet в случае туннелирования QinQ.
Базовый IPv4 и IPv6 ACL может фильтровать пакеты по IP-адресу отправителя пакета (IP-SA) и IP-адресу получателя пакета (IP-DA). Эти адреса могут быть заданы как адрес сети с использованием маски, как адрес узла или как любой адрес, которому соответствуют все IP-адреса. Кроме этого, базовый IP ACL позволяет фильтровать трафик, относящийся к протоколам TCP и UDP, или имеющий конкретные порты отправителя и/или получателя этих протоколов.
Стандартный IPv4 и IPv6 ACL может фильтровать пакеты по тем же параметрам, что и базовый IP ACL. Кроме это стандартный IP ACL также может использовать для фильтрации другие параметры, такие как поля IP заголовка DSCP и IP precedence, любые протоколы IP с номерами от 0 до 255, протоколы ICMP, GRE, IGMP, NVGRE, и некоторые другие параметры. В дополнение к возможностям базового IP ACL, при фильтрации по TCP и UDP, стандартный IP ACL позволяют задавать диапазон портов отправителя и/или получателя этих протоколов.
Расширенный IPv4 и IPv6 ACL поддерживает все возможности фильтрации стандартного IP ACL. Кроме этого, он позволяет включать в себя строки MAC ACL, обеспечивая таким образом возможность фильтрации трафика как на уровне L2, так и на уровне L3.
Если не требуется фильтровать трафик по параметрам, поддерживаемым стандартными и расширенными ACL, рекомендуется использовать базовые MAC и IP ACL, так как они используют меньше ресурсов коммутатора.
Созданные ACL могут быть применены для входящего или исходящего трафика на интерфейсе коммутатора с помощью команды access-group, или с помощью применения на интерфейсе политики (service-policy), настроенной с использованием class-map, ссылающегося на созданные ACL и policy-map, ссылающегося на class-map. Преимуществом данного подхода является возможность более гибкой настройки и включения статистки по срабатыванию строк ACL с помощью команды statistic enable для class-map в настройке policy-map.
К интерфейсу можно применить до десяти команд access-group и одну команду service-policy для контроля трафика в каждом направлении.
В случае последовательного применения нескольких ACL для трафика одного направления на интерфейсе они работают как единый ACL, записи ACE которого срабатывают друг за другом. При этом первая запись ACE каждого следующего ACL заменяет неявное правило предыдущего ACL. В конце итогового ACL работает неявное правило, разрешающее прохождение любых пакетов.
Сначала работают записи ACL, примененные с помощью команды access-group в порядке их применения, затем с помощью service-policy вне зависимости от того когда service-policy была применена к интерфейсу.
Настройка
В примере ниже на порте “eth-0-1” использован ACL на основе MAC-адреса, чтобы разрешить пакеты с MAC-адресом источника 0000.0000.1111 и запретить любые другие пакеты. На порте “eth-0-2” использован ACL по IPv4-адресу, чтобы разрешить пакеты с IP-адресом источника 1.1.1.1/24 и запретить любые другие пакеты.
Шаг 1: Вход в режим “Global config”
Switch# configure terminal
Шаг 2: Создание ACL
MAC-ACL:
Switch(config)# mac access-list mac
Switch(config-mac-acl)# permit src-mac host 0000.0000.1111 dest-mac any
Switch(config-mac-acl)# deny src-mac any dest-mac any
Switch(config-mac-acl)# exit
IPv4-ACL:
Switch(config)# ip access-list ipv4
Switch(config-ip-acl)# permit any 1.1.1.1 0.0.0.255 any
Switch(config-ip-acl)# deny any any any
Switch(config-ip-acl)# exit
Применение ACL при помощи команды access-group
Шаг 3: Применение ACL на портах
Switch(config)# interface eth-0-1
Switch(config-if)# access-group input mac
Switch(config-if)# exit
Switch(config-if)# interface eth-0-2
Switch(config-if)# access-group input ipv4
Switch(config-if)# exit
Шаг 4: Выход из режима “Global Config”
Switch(config)# end
Шаг 5: Проверка
Switch(config)# endSwitch# show running-config
mac access-list mac
10 permit src-mac host 0000.0000.1111 dest-mac any
20 deny src-mac any dest-mac any
!
ip access-list ipv4
10 permit any 1.1.1.0 0.0.0.255 any
20 deny any any any
!
interface eth-0-1
access-group input mac
!
interface eth-0-2
access-group input ipv4
!
Применение ACL при помощи class-map и policy-map
Шаг 3: Создание классов и привязка ACL
Switch(config)# class-map cmap1
Switch(config-cmap)# match access-group mac
Switch(config-cmap)# exit
Switch(config)# class-map cmap2
Switch(config-cmap)# match access-group ipv4
Switch(config-cmap)# exit
Шаг 4: Настройка политик и привязка классов
Switch(config)# policy-map pmap1
Switch(config-pmap)# class cmap1
Switch(config-pmap-c)# statistics enable
Switch(config-pmap-c)# exit
Switch(config-pmap)# exit
Switch(config)# policy-map pmap2
Switch(config-pmap)# class cmap2
Switch(config-pmap-c)# statistics enable
Switch(config-pmap-c)# exit
Switch(config-pmap)# exit
Шаг 5: Применение политик на портах
Switch(config)# interface eth-0-1
Switch(config-if)# service-policy input pmap1
Switch(config-if)# exit
Switch(config-if)# interface eth-0-2
Switch(config-if)# service-policy input pmap2
Switch(config-if)# exit
Шаг 6: Выход из режима “Global Config”
Switch(config)# end
Шаг 7: Проверка
Switch# show running-config
mac access-list mac
10 permit src-mac host 0000.0000.1111 dest-mac any
20 deny src-mac any dest-mac any
!
ip access-list ipv4
10 permit any 1.1.1.0 0.0.0.255 any
20 deny any any any
!
class-map match-any cmap1
match access-group mac
!
class-map match-any cmap2
match access-group ipv4
!
policy-map pmap1
class cmap1
statistics enable
!
policy-map pmap2
class cmap2
statistics enable
!
interface eth-0-1
service-policy input pmap1
!
interface eth-0-2
service-policy input pmap2
!