Стандартный ACL позволяют фильтровать трафик по одному признаку – адресу отправителя (в CCNA конкретно рассматривается только ip адрес отправителя). В этой статье поговорим о настройке стандартного ACL. Рекомендую сначала почитать общую статью об ACL, если вы этого ещё не сделали.
Итак, стандартный ACL может быть именованный и нумерованный.
Нумерованный стандартный ACL
Нумерованный стандартный ACL должен иметь номер с 1-го по 99 или с 1300 по 1999. Причём номер относится ко всему ACL (ко всем его строчкам).
Например, чтобы запретить трафик с адреса 192.168.0.1 надо написать следующий стандартный ACL:
R1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#access-list 10 deny host 192.168.0.1
R1(config)#access-list 10 permit any
Первая строчка запрещает трафик с указанного адреса, вторая – разрешает остальной трафик. access-list 10 – обозначает принадлежность строчки к ACL с номером 10, далее идёт действие (permit – разрешить, deny – запретить, либо remark – строчка ничего не разрешает и не запрещает, а содержит текст комментария, чтобы мы не забыли, зачем мы делали то или иное действие). Потом идёт адрес, с которым будет сверяться адрес отправителя пакета. Если адреса совпадают – выполняется действие. Адрес можно задать несколькими способами:
- 192.168.0.5 – будет подразумеваться, что это один хост, то есть wildcard маска 0.0.0.0
- 192.168.0.0 0.0.255.255 – сеть с wildcard маской, эта конкретно маска соответствует префиксу /16
- any – любая сеть
- host 192.168.0.1 – один конкретный хост (а не вся сеть).
Применяется такой ACL на интерфейс следующим образом:
R1(config)#interface fa0/0
R1(config-if)#ip access-group 10 in
В этом примере мы применили ACL 10 на интерфейс Fa0/0 для фильтрации входящего трафика.
Нумерованный ACL нельзя отредактировать можно только добавить строчку в конец. В нашем примере добавлять строчку в конец не имеет смысла, так как permit any разрешает весь трафик и дальше проверка не производится. Единственный способ отредактировать нумерованный ACL – вывести кусок конфига с ним, скопировать в блокнот существующий ACL, отредактировать его, удалить старый, вставить новый. Допустим, нам надо добавить в ALC 10 запрет трафика ещё и из второй половины сети 192.168.0.0. Эта строчка должна встать по логике вещй между первой и второй. Выводим конфиг (весь, или только часть, с acl):
R1#show running-config
…
!
access-list 10 deny host 192.168.0.1
access-list 10 permit any
!
…
Копируем то что касается ACL 10 блокнот, добавляем туда нужную строчку, затем удаляем старый ACL:
R1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#no access-list 10
И вставляем новый:
R1(config)#access-list 10 deny host 192.168.0.1
R1(config)#access-list 10 deny 192.168.0.128 0.0.0.127
R1(config)#access-list 10 permit any
На всякий случай, повторно применяем на интерфейсе новый ACL
R1(config)#interface fa0/0
R1(config-if)#ip access-group 10 in
Именованный стандартный ACL
Именованные ACL создаются иначе.
R1(config)#
R1(config)#ip access-list standard MY_ACL
R1(config-std-nacl)#deny host 192.168.0.1
R1(config-std-nacl)#permit any
R1(config-std-nacl)#end
%SYS-5-CONFIG_I: Configured from console by console
R1#show access-lists
Standard IP access list MY_ACL
deny host 192.168.0.1
permit any
Мы создали ACL с именем MY_ACL, который делает то же самое, что и ACL 10 из предыдущего примера. В качестве аргумента команды ip access-list необходимо указать не только имя, но и тип ACL (standard – стандартный и extended – расширенный), так как маршрутизатор не может сам определить тип. В случае использования нумерованного, тип определялся по номеру (с 1-го по 99 или с 1300 по 1999 – значит стандартный). Внутри именованного ACL уже не надо упоминать имени или номера, так как мы попадаем в режим редактирования конкретного ACL (config-std-nacl) и все строчки ACL вводим сразу начиная со слова deny, permit или remark.
Применяется именованный ACL так же как и нумерованный:
R1(config)#interface fa0/0
R1(config-if)#ip access-group MY_ACL in