Логика списков ACL IP
Один список ACL — это единая сущность, и в то же время это список из одной или нескольких команд конфигурации. Как единая сущность, весь список ACL применим на интерфейсе в определенном направлении. Поскольку это список команд, у каждой команды собственная логика распознавания, которую маршрутизатор должен применять к каждому пакету при фильтрации с использованием данного списка ACL.
В процессе обработки списка ACL маршрутизатор исследует пакет, сравнивая его со списком ACL, следующим образом.
Списки ACL используют логику первого соответствия. Как только обнаруживается соответствие пакета одной из строк списка ACL, маршрутизатор предпринимает действие, указанное в этой строке списка, и прекращает дальнейшее сравнение.
Рассмотрим логику первого соответствия списка ACL для пакета, посланного хостом А на сервер S 1. 1 Р-адресом отправителя будет 10.1.1.1, и он будет направлен на интерфейс S0/0/1 маршрутизатора R2, а значит, подпадает под действие логики списка ACL 1. Маршрутизатор R2 сравнивает этот пакет со списком ACL и находит первый соответствующий элемент, содержащий действие разрешения.
Теперь рассмотрим пакет, посланный хостом В, с -адресом отправителя 10.1.1.2. Когда пакет поступает на интерфейс S0/0/1 маршрутизатора R2, он сравнивает его с первым оператором списка ACL 1 и не находит соответствия ( 10.1.1.1 не равно 10.1.1.2). Затем маршрутизатор R2 переходит ко второму оператору, который требует некоторого разъяснения. В псевдокоде ACL представлена строка 10.1.1.х, которая является сокращением для любого значения в последнем октете.
Сравнивая только первые три октета, маршрутизатор R2 обнаружит, что IP-адрес отправителя данного пакета действительно начинается с трех октетов 10.1.1. Таким образом, маршрутизатор R2 посчитает его соответствующим второму оператору и предпримет соответствующее действие, отбросив пакет. Маршрутизатор R2 остановит обработку списка ACL для пакета, игнорируя третью строку списка ACL.
И наконец, рассмотрим пакет, посланным хостом С также на сервер Sl. №-адрес отправителя пакета – 10.З.З.З, поэтому, попав на интерфейс S0/0/1 маршрутизатора R2, он проверяется по списку ACL. Маршрутизатор находит в списке ACL 1 первую команду, и оказывается, что она не соответствует пакету (10.1.1.1 в команде, не равно 10.З.З.З у пакета). Затем маршрутизатор R2 исследует вторую команду, сравнивает первые три октета (10.1.1) с -адресом отправителя пакета (10.З.З) и снова не находит соответствия. Затем он просматривает третью команду. В данном случае шаблон предписывает игнорировать последние три октета и сравнивать только первый октет (10), в результате соответствие обнаруживается. Затем маршрутизатор R2 выясняет действие (разрешение) и позволяет пакету следовать далее.
Эта последовательность обработки списка ACL осуществляется для любого типа списков ACL операционной системы IOS: IP, других протоколов, стандартных или расширенных, именованных или нумерованных.
И наконец, если пакет не соответствует ни одной из записей списка ACL, то он отбрасывается. Дело в том, что конец любого списка ACL IP считается оператором deny all (запретить все). Он не указывается в конфигурации, но если маршрутизатор не нашел соответствия до конца списка, то операционная система IOS полагает, что пакет соответствует записи с действием deny.