Cisco IOS реализует внутреннюю логику применительно к стандартным ACL-спискам. Как уже говорилось, частью этой логики является предотвращение операторов узла от конфигурации после операторов диапазона, если узел является участником этого диапазона, как показано на рис. 1.
Другой частью внутренней логики IOS является внутреннее упорядочение стандартных ACE. На рис. 2 показана конфигурация стандартных списков доступа. Операторы диапазона, блокирующие три сети, конфигурируются в первую очередь, далее конфигурируются операторы остальных пяти узлов. Все операторы узлов являются значимыми, поскольку IP-адреса их узлов не являются частью ранее введённых операторов.
Команда show running-config применяется для проверки конфигурации ACL-списка. Обратите внимание, что операторы перечислены в ином порядке, чем они были введены. Мы будем использовать команду show access-lists, чтобы понять эту логику.
Как показано на рис. 3, команда show access-lists отображает записи ACE в соответствии с их порядковыми номерами. Можно ожидать, что в выходных данных записи будут отображены в том же порядке, в котором они были введены. Однако выходные данные команды show access-lists показывают, что это не так.
Порядок, в котором перечислены стандартные ACE-записи — это последовательность, используемая IOS при обработке списка. Обратите внимание, что записи сгруппированы в два раздела — операторы узла следуют после операторов диапазона. Порядковый номер указывает порядок, в котором записи были введены, а не порядок, в котором они будут обрабатываться.
Операторы узла перечислены первыми, однако это не означает, что они были добавлены в этом порядке. IOS располагает операторы узлов с помощью специальной функции расстановки (hash function). Полученный порядок позволяет оптимизировать поиск оператора узла в ACL-списке.
Операторы диапазона отображаются после операторов узла. Эти операторы располагаются в том порядке, в котором они были введены.
Помните, все стандартные и нумерованные списки контроля доступа можно редактировать с помощью порядковых номеров. Порядковый номер, указанный в выходных данных команды show access-lists, является номером, используемым при удалении отдельной записи из списка. При добавлении новой записи в ACL-список порядковый номер будет влиять только на местоположение в списке оператора диапазона. Операторы узла всегда будут располагаться в определённом порядке благодаря функции расстановки.
Продолжая предыдущий пример, необходимо указать, что после сохранения текущей конфигурации маршрутизатор перезагружается (перезапускается). Как показано на рисунке 3, команда show access-lists отображает ACL-список в том же порядке, однако операторы перенумерованы. Порядковые номера теперь расположены в цифровой последовательности.
Примечание. Функция расстановки применяется только к операторам узла в стандартном списке контроля доступа IPv4. Алгоритм не применяется для расширенных ACL-списков IPv4 или IPv6. Это связано с тем, что фильтр расширенных и IPv6 ACL-списков больше, чем просто один адрес источника. Подробные сведения о функции расстановки не рассматривается в этой учебной программе.