Списки управления доступом (ACL) — это механизм фильтрации сетевого трафика, который обеспечивает высокую производительность благодаря обработке пакетов на аппаратном уровне.
Они позволяют администраторам:
- Ограничивать типы приложений, разрешённых в сети.
- Контролировать доступ пользователей и устройств, к которым они могут подключаться.
- Определять политики QoS путём классификации трафика и изменения его приоритета.
Принцип работы ACL:
ACL представляет собой упорядоченный набор правил. Каждое правило
сравнивает параметры пакета с заданными критериями и выполняет одно из
действий: Permit (Разрешить) или Deny (Запретить).
Классификация ACL в коммутаторах D-Link (со стандартным CLI)
ACL в D-Link делятся на три основные группы, которые, в свою очередь, имеют подтипы:
- Стандартные ACL (Standard ACL)
Standard IP ACL
Standard IPv6 ACL - Расширенные ACL (Extended ACL)
Extended MAC ACL
Extended IP ACL
Extended IPv6 ACL - Экспертные ACL (Expert ACL)
Идентификаторы ACL
Каждому ACL назначается уникальное имя и номер.
Для каждого типа списка зарезервирован свой диапазон номеров:
- стандартные списки доступа IP: 1—1999
- расширенные списки доступа IP: 2000—3999
- расширенные списки доступа MAC: 6000—7999
- экспертные списки доступа: 8000—9999
- стандартные списки доступа IPv6: 11000—12999
Если указать только имя, системе автоматически назначит наибольший свободный номер из соответствующего диапазона.
Правила внутри ACL
Каждый ACL состоит из пронумерованных правил.
- Автоматическая нумерация: Если номер не указан, первому правилу присваивается номер 10, а каждому следующему — номер, увеличенный на 10 (20, 30 и т.д.). Это позволяет вставлять новые правила между существующими.
- Ручная нумерация:
Рекомендуется задавать номера вручную с интервалом (например, 10, 20,
30), чтобы оставить запас для будущих правил. Номер правила должен быть
уникальным в пределах своего ACL. - Изменение нумерации: Команда access-list resequence позволяет изменить начальный номер и шаг для правил в существующем ACL.
Критерии фильтрации
- Standard IP ACL: Фильтрация только по IP-адресу источника и назначения.
- Extended IP ACL: Фильтрация по IP-адресам, портам, протоколам, полям ToS/DSCP и другим параметрам.
- Extended MAC ACL: Фильтрация по MAC-адресам, VLAN, Ethertype и приоритету CoS.
Для указания диапазона адресов используется инверсная маска (wildcard mask). Биты адреса, соответствующие единицам в маске, игнорируются, а соответствующие нулям — проверяются.
Применение ACL
После создания ACL необходимо применить к интерфейсу (порту) коммутатора, указав направление трафика:
- in — для входящего трафика.
- out — для исходящего трафика.
Важные ограничения:
- На один интерфейс можно применить только один ACL каждого типа (например, один IP ACL и один MAC ACL одновременно).
- Новое применение ACL к интерфейсу перезаписывает предыдущие настройки.
- Применение ACL расходовать ресурсы коммутатора. Если ресурсов или свободных портов недостаточно, операция завершится ошибкой.
Пример настройки
В этом примере показано создание четырёх записей для расширенного IP ACL с именем Strict-Control, которые:
- разрешают TCP-пакеты в сеть 10.20.0.0;
- разрешают TCP-пакеты на хост 10.100.1.2;
- разрешают все TCP-пакеты на 80-й порт назначения;
- разрешают все ICMP-пакеты.
Switch# configure terminal
Switch(config)# ip access-list extended Strict-Control
Switch(config-ip-ext-acl)# permit tcp any 10.20.0.0 0.0.255.255
Switch(config-ip-ext-acl)# permit tcp any host 10.100.1.2
Switch(config-ip-ext-acl)# permit tcp any any eq 80
Switch(config-ip-ext-acl)# permit icmp any any
Switch(config-ip-ext-acl)#
А в этом примере показано создание двух записей для стандартного IP ACL с именем "std-acl", которые:
- разрешают IP-пакеты в сеть 10.20.0.0;
- разрешают IP-пакеты на хост 10.100.1.2
Switch# configure terminal
Switch(config)# ip access-list std-acl
Switch(config-ip-acl)# permit any 10.20.0.0 0.0.255.255
Switch(config-ip- acl)# permit any host 10.100.1.2
Switch(config-ip- acl)#
В этом примере показано, как применить IP ACL "Strict-Control" на
интерфейсе Ethernet 1/0/2. Отдельно можно указать направление: в качестве входящего или исходящего фильтра (in или out). Если направление не указано, используется in (входящий трафик).
Switch# configure terminal
Switch(config)# interface ethernet 1/0/2
Switch(config-if)# ip access-group Strict-Control
И еще пример.
Задача: Разрешить ping до шлюза по умолчанию (192.168.1.1) только с рабочей станции администратора (192.168.1.3). Весь остальной трафик на шлюз разрешён, кроме ICMP-запросов с других узлов.
Решение: Настраивается расширенный ACL со следующими правилами:
- Permit: Разрешить ICMP с host 192.168.1.3 на host 192.168.1.1
- Deny: Запретить ICMP с любого адреса (any) на host 192.168.1.1
Switch# configure terminal
Switch(config)# ip access-list extended ext_ping 2010
Switch(config-ip-ext-acl)# permit icmp host 192.168.1.3 host 192.168.1.1
Switch(config-ip-ext-acl)# deny icmp any host 192.168.1.1
Switch(config-ip-ext-acl)# exit
Switch(config)# interface range ethernet 1/0/1-24
Switch(config-if-range)# ip access-group ext_ping in
Switch(config-if-range)# end
Проверить выполненные настройки можно при помощи команд:
Switch# show access-list
Switch# show access-list ip ext_ping
Switch# show access-group