Недавно встретил среди своей команды некоторое непонимание принципов работы ремарок в списках доступа. Ремарки расценивались, как еще еще одна строка с правилом. Не было понимания, как работать с блоками правил под одной ремаркой и т.п.

Хотел найти внятное описание по этой теме, но к своему великому удивлению, ничего не нашел. Поэтому решил описать данную тему сам.

Приступим, создадим некий ACL с несколькими правилами:

(config)#ip access-list extended SOME_ACL
(config-ext-nacl)#remark HOST1
(config-ext-nacl)#permit ip host 1.1.1.1 any
(config-ext-nacl)#remark BLOCK OF RULES
(config-ext-nacl)#permit ip 10.0.0.0 0.255.255.255 any
(config-ext-nacl)#permit ip 192.168.0.0 0.0.255.255 any

Вот так он выглядит при просмотре конфигурации и непосредственно списка

# sh run | sec SOME
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 permit ip 192.168.0.0 0.0.255.255 any

#sh ip access-list SOME_ACL
Extended IP access list SOME_ACL
    10 permit ip host 1.1.1.1 any
    20 permit ip 10.0.0.0 0.255.255.255 any
    30 permit ip 192.168.0.0 0.0.255.255 any

Вот эта разница в выводе, всегда доставляла некоторое неудобство, но к этому привыкаешь. Более того, главное непонимание принципов работы ремарок происходит из-за отсутствия номера у ремарки. (Надо сказать, что в NXOS это изменено и там ремарки - это обычная строка с номером, наравне с правилами)

Так вот, главное откровение кроется в том, что, ремарка тут - это просто текстовая строка, "приклеенная" к введенному далее правилу, не важно, куда вставленному внутри списка.

Например, вводим только одну ремарку и смотрим конфиг:

(config-ext-nacl)#remark HOST2
(config-ext-nacl)#do sh run | s SOME              
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 permit ip 192.168.0.0 0.0.255.255 any
 remark HOST2

Ремарка в конце списка. Ок, далее вводим правило, и, для наглядности вставим его внутрь BLOCK OF RULES.

(config-ext-nacl)#25 permit ip host 2.2.2.2 any
(config-ext-nacl)#do sh run | s SOME           
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 remark HOST2
 permit ip host 2.2.2.2 any
 permit ip 192.168.0.0 0.0.255.255 any

Ремарка переместилась над введенным правилом. Тут же развенчиваем второй домысел, нет никаких блоков правил под одной ремаркой. Каждая ремарка приклеивается только к одному правилу. Это знание очень упрощает понимание

Идем далее. Ремарки можно удалять, классически предварив ее командой no. Либо удалив приклеенное к ней правило. Но, вставить ремарку к существующему правилу не получится. В таком случае необходимо удалить правило, написать ремарку и вставить правило на прежнее место.


(config-ext-nacl)#do sh run | s SOME 
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 remark HOST2
 permit ip host 2.2.2.2 any
 permit ip 192.168.0.0 0.0.255.255 any
 
(config-ext-nacl)#no  remark HOST2
(config-ext-nacl)#do sh run | s SOME
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 permit ip host 2.2.2.2 any
 permit ip 192.168.0.0 0.0.255.255 any
 
(config-ext-nacl)#  remark HOST2    
(config-ext-nacl)# permit ip host 2.2.2.2 any
(config-ext-nacl)#do sh run | s SOME         
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 permit ip host 2.2.2.2 any
 permit ip 192.168.0.0 0.0.255.255 any
 remark HOST2
 
(config-ext-nacl)#no  permit ip host 2.2.2.2 any
(config-ext-nacl)#25  permit ip host 2.2.2.2 any
(config-ext-nacl)#do sh run | s SOME            
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 remark HOST2
 permit ip host 2.2.2.2 any
 permit ip 192.168.0.0 0.0.255.255 any

Также можно делать многострочные ремарки

(config-ext-nacl)#remark ----------------------
(config-ext-nacl)#remark -  MULTILINE REMARK   
(config-ext-nacl)#remark ----------------------
Duplicate remark statement
(config-ext-nacl)#remark --------------------- 
(config-ext-nacl)#permit ip host 3.3.3.3 any
(config-ext-nacl)#remark ---------------------
(config-ext-nacl)#do sh run | s SOME           
ip access-list extended SOME_ACL
 remark HOST1
 permit ip host 1.1.1.1 any
 remark BLOCK OF RULES
 permit ip 10.0.0.0 0.255.255.255 any
 remark HOST2
 permit ip host 2.2.2.2 any
 permit ip 192.168.0.0 0.0.255.255 any
 remark ----------------------
 remark -  MULTILINE REMARK
 remark ---------------------
 permit ip host 3.3.3.3 any
 remark ---------------------

Из этого примера, видим, что две одинаковые ремарки друг за другом мы ввести не сможем. Но после того, как ремарка уже приклеена к правилу, можем повторять ее снова. Но необходимо помнить, что если у нас во всем списке есть несколько одинаковых ремарок к разным правилам, то если мы удалим ремарку через конструкцию no remark, то удалится самая первая из всего списка. Т.е. если вы хотели удалить ремарку, которая повторяется в нескольких правилах, то удалять в таком случае лучше вместе с правилом.

Подведем некое резюме.

  1. Ремарка приклеивается к одному правилу, введенному после нее.

  2. Из этого же вытекает, что нет никаких блоков правил под одной ремаркой, это искусственная видимость - первое правило "блока" с ремаркой, остальные без.

  3. Ремарки удаляются через конструкцию no remark или вместе с их правилом.

  4. Приклеить ремарку к уже существующему правилу невозможно без удаления этого правила и последующего восстановления

  5. Возможны многострочные ремарки (но зачем?)

  6. Возможны повторяющиеся в разных правилах ремарки (но смысл?)

Комментарии (5)


  1. DeeZ
    06.04.2022 19:40

    Еще одна полезная вещь - это вставить ремарку не в конец, а в любое место ACL.

    Для этого нужно сначала вставить "временное" правило рядом с нужным номером. потом ремарку, она вставится за последним добавленным правилом (а не в конец списка как казалось бы), потом добавляем нужное настоящее правило, и удаляем "временное".

    Те что бы добавить ремарку между 20 и 30 строками надо сделать

    21  permit ip host 1.1.1.1 any
    remark SECOND BLOCK OF RULES
    22 deny ip 192.168.0.0 0.0.255.255 any
    no 21

    Далее можно перенумеровать ACL, если есть желание.

    PS у вас под ремарком BLOCK правило permit.


    1. Vigogne Автор
      06.04.2022 20:00

      В данной статье вообще не обращается внимание на работу собственно самих списков. Поэтому же BLOCK OF RULES тут указано с точки зрения именно "блока правил". Никаких более смысловых нагрузок оно не несет :)


  1. Vigogne Автор
    06.04.2022 19:56

    .


  1. Alext12
    07.04.2022 07:41

    Да, в IOS ремарки боль... Но зато как сказачно они работают в CISCO ASA, прям душа радуется))) НО только из CLI. при использовании ASDM может получиться лютая дичь.


    1. Vigogne Автор
      07.04.2022 07:43

      Да, с асами боль :) У нас впнщики даже придумали конфигуратор специальный, который делает конфиг синхронно на всех асах )

      И в нексусах с ремарками все прекрасно ))