ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

12 минут чтени€

ѕредыдуща€ стать€ из цикла про соответствие пакетов в IP ACL.

ќбратные маски, такие как значени€ dotted-decimal number (DDN), фактически представл€ют собой 32-разр€дное двоичное число.  ак 32-разр€дное число, маска WC фактически направл€ет логику маршрутизатора бит за битом.  ороче говор€, бит маски WC (wildcard), равный 0, означает, что сравнение должно выполн€тьс€ как обычно, но двоичный 1 означает, что бит €вл€етс€ подстановочным знаком и может быть проигнорирован при сравнении чисел.

 стати, наш калькул€тор подсетей показывает и сам считает WC (wildcard) маску.

¬ы можете игнорировать двоичную маску WC. ѕочему? „то ж, обычно мы хотим сопоставить диапазон адресов, которые можно легко идентифицировать по номеру подсети и маске, будь то реальна€ подсеть или сводный маршрут, который группирует подсети вместе. ≈сли вы можете указать диапазон адресов с помощью номера подсети и маски, вы можете найти числа дл€ использовани€ в вашем ACL с помощью простой дес€тичной математики, как описано далее.

≈сли вы действительно хотите знать логику двоичной маски, возьмите два номера DDN, которые ACL будет сравнивать (один из команды access-list, а другой из заголовка пакета), и преобразуйте оба в двоичный код. «атем также преобразуйте маску WC в двоичную. —равните первые два двоичных числа бит за битом, но также игнорируйте любые биты, дл€ которых маска WC случайно перечисл€ет двоичный 1, потому что это говорит вам игнорировать бит. ≈сли все биты, которые вы проверили, равны, это совпадение!


Ќахождени€ правильной обратной маски, соответствующей подсети

¬о многих случа€х ACL должен соответствовать всем хостам в определенной подсети. „тобы соответствовать подсети с помощью ACL, вы можете использовать следующие сочетани€:

  • »спользуйте номер подсети в качестве исходного значени€ в команде access-list.
  • »спользуйте обратную маску, полученную путем вычитани€ маски подсети из 255.255.255.255.

Ќапример, дл€ подсети 172.16.8.0 255.255.252.0 используйте номер подсети (172.16.8.0) в качестве параметра адреса, а затем выполните следующие вычислени€, чтобы найти обратную маску:

чтобы найти обратную маску

ѕродолжа€ этот пример, завершенна€ команда дл€ той же подсети будет следующей:

access-list 1 permit 172.16.8.0 0.0.3.255

—оответствие любому/всем адресам

¬ некоторых случа€х вам может понадобитьс€ одна команда ACL дл€ сопоставлени€ всех без исключени€ пакетов, которые достигают этой точки в ACL. ¬о-первых, вы должны знать (простой) способ сопоставить все пакеты с помощью ключевого слова any. „то еще более важно, вам нужно подумать о том, когда сопоставить все без исключени€ пакеты.

¬о-первых, чтобы сопоставить все пакеты с помощью команды ACL, просто используйте ключевое слово any дл€ адреса. Ќапример, чтобы разрешить все пакеты:

access-list 1 permit any

»так, когда и где вы должны использовать такую команду? ѕомните, что все ACL Cisco IP заканчиваютс€ не€вным отрицанием любой концепции в конце каждого ACL. “о есть, если маршрутизатор сравнивает пакет с ACL, и пакет не соответствует ни одному из настроенных операторов, маршрутизатор отбрасывает пакет. ’отите переопределить это поведение по умолчанию? Ќастроить permit any в конце ACL.

¬ы также можете €вно настроить команду дл€ запрета всего трафика (например, access-list 1 deny any) в конце ACL. ѕочему, когда та же сама€ логика уже находитс€ в конце ACL? „то ж, ACL показывает счетчики списка дл€ количества пакетов, соответствующих каждой команде в ACL, но нет счетчика дл€ этого не €вного запрета любой концепции в конце ACL. »так, если вы хотите видеть счетчики количества пакетов, совпадающих с логикой deny any в конце ACL, настройте €вное deny any.


¬недрение стандартных IP ACL

¬ этой лекции уже представлены все этапы настройки по част€м. ƒалее суммируютс€ все эти части в единую конфигурацию. Ёта конфигураци€ основана на команде access-list, общий синтаксис которой повтор€етс€ здесь дл€ справки:

access-list access-list-number {deny | permit} source [source-wildcard]

Ётап 1. —планируйте локацию (маршрутизатор и интерфейс) и направление (внутрь или наружу) на этом интерфейсе:

  1. —тандартные списки ACL должны быть размещены р€дом с местом назначени€ пакетов, чтобы они случайно не отбрасывали пакеты, которые не следует отбрасывать.
  2. ѕоскольку стандартные списки ACL могут соответствовать только исходному IP-адресу пакета, идентифицируйте исходные IP-адреса пакетов по мере их прохождени€ в направлении, которое провер€ет ACL.

Ётап 2. Ќастройте одну или несколько команд глобальной конфигурации списка доступа дл€ создани€ ACL, учитыва€ следующее:

  1. —писок просматриваетс€ последовательно с использованием логики первого совпадени€.
  2. ƒействие по умолчанию, если пакет не соответствует ни одной из команд списка доступа, - отклонить (отбросить) пакет.

Ётап 3. ¬ключите ACL на выбранном интерфейсе маршрутизатора в правильном направлении, использу€ подкоманду  ip access-group number {in | out}.

ƒалее рассмотрим несколько примеров.


—тандартный нумерованный список ACL, пример 1

¬ первом примере показана конфигураци€ дл€ тех же требований, что и на рисунках 4 и 5. »так, требовани€ дл€ этого ACL следующие:

  1. ¬ключите вход€щий ACL на интерфейсе R2 S0/0/1.
  2. –азрешить пакеты, приход€щие от хоста A.
  3. «апретить пакеты, приход€щие от других хостов в подсети хоста A.
  4. –азрешить пакеты, приход€щие с любого другого адреса в сети класса A 10.0.0.0.
  5. ¬ исходном примере ничего не говоритс€ о том, что делать по умолчанию, поэтому просто запретите весь другой трафик.

¬ примере 1 показана завершенна€ правильна€ конфигураци€, начина€ с процесса настройки, за которым следует вывод команды show running-config.

R2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)# access-list 1 permit 10.1.1.1
R2(config)# access-list 1 deny 10.1.1.0 0.0.0.255
R2(config)# access-list 1 permit 10.0.0.0 0.255.255.255
R2(config)# interface S0/0/1
R2(config-if)# ip access-group 1 in
R2(config-if)# ^Z
R2# show running-config
! Lines omitted for brevity
access-list 1 permit 10.1.1.1
access-list 1 deny 10.1.1.0 0.0.0.255
access-list 1 permit 10.0.0.0 0.255.255.255

¬о-первых, обратите внимание на процесс настройки в верхней части примера. ќбратите внимание, что команда access-list не измен€ет командную строку из приглашени€ режима глобальной конфигурации, поскольку команда access-list €вл€етс€ командой глобальной конфигурации. «атем сравните это с выводом команды show running-config: детали идентичны по сравнению с командами, которые были добавлены в режиме конфигурации. Ќаконец, не забудьте указать ip access-group 1 в команде под интерфейсом R2 S0/0/1, который включает логику ACL (как локацию, так и направление).

¬ примере 2 перечислены некоторые выходные данные маршрутизатора R2, которые показывают информацию об этом ACL.  оманда show ip access-lists выводит подробную информацию только о списках ACL IPv4, а команда show access-lists перечисл€ет сведени€ о списках ACL IPv4, а также о любых других типах ACL, настроенных в насто€щее врем€, например, списки ACL IPv6.

show access-lists

¬ывод этих команд показывает два примечани€. ¬ первой строке вывода в этом случае указываетс€ тип (стандарт) и номер. ≈сли существовало более одного ACL, вы бы увидели несколько разделов вывода, по одной на каждый ACL, кажда€ со строкой заголовка, подобной этой. «атем эти команды перечисл€ют счетчики пакетов дл€ количества пакетов, которые маршрутизатор сопоставил с каждой командой. Ќапример, на данный момент 107 пакетов соответствуют первой строке в ACL.

Ќаконец, в конце примера перечислены выходные данные команды show ip interface. Ёта команда перечисл€ет, среди многих других элементов, номер или им€ любого IP ACL, включенного на интерфейсе дл€ подкоманды интерфейса ip access-group.


—тандартный нумерованный список ACL, пример 2

ƒл€ второго примера используйте рисунок 8 и представьте, что ваш начальник в спешке дает вам некоторые требовани€ в холле. —начала он говорит вам, что хочет фильтровать пакеты, идущие от серверов справа к клиентам слева. «атем он говорит, что хочет, чтобы вы разрешили доступ дл€ хостов A, B и других хостов в той же подсети к серверу S1, но запретили доступ к этому серверу хостам в подсети хоста C. «атем он сообщает вам, что, кроме того, хостам в подсети хоста A следует отказать в доступе к серверу S2, но хостам в подсети хоста C должен быть разрешен доступ к серверу S2 - и все это путем фильтрации пакетов, идущих только справа налево. «атем он говорит вам поместить вход€щий ACL на интерфейс F0/0 R2.

—тандартный пронумерованный ACL ѕример 2

≈сли вы просмотрите все запросы начальника, требовани€ могут быть сокращены до следующего:

  1. ¬ключите вход€щий ACL на интерфейсе F0/0 R2.
  2. –азрешить пакеты от сервера S1, идущие к хостам в подсети A.
  3. «апретить пакетам с сервера S1 идти к хостам в подсети C.
  4. –азрешить пакетам с сервера S2 идти к хостам в подсети C.
  5. «апретить пакетам с сервера S2 идти к хостам в подсети A.
  6. Ќе было комментариев о том, что делать по умолчанию; используйте подразумеваемое отклонение всего по умолчанию.

 ак оказалось, вы не можете сделать все, что просил ваш начальник, с помощью стандартного ACL. Ќапример, рассмотрим очевидную команду дл€ требовани€ номер 2: access-list 2 permit 10.2.2.1. Ёто разрешает весь трафик с исходным IP-адресом 10.2.2.1 (сервер S1). —ледующее требование просит вас фильтровать (отклон€ть) пакеты, полученные с того же IP-адреса! ƒаже если вы добавите другую команду, котора€ провер€ет исходный IP-адрес 10.2.2.1, маршрутизатор никогда не доберетс€ до него, потому что маршрутизаторы используют логику первого совпадени€ при поиске в ACL. ¬ы не можете проверить и IP-адрес назначени€, и исходный IP-адрес, потому что стандартные ACL не могут проверить IP-адрес назначени€.

„тобы решить эту проблему, вам следует переосмыслить проблему и изменить правила. ¬ реальной жизни вы, веро€тно, вместо этого использовали бы расширенный ACL, который позвол€ет вам провер€ть как исходный, так и целевой IP-адрес.

ѕредставьте себе, что ваш начальник позвол€ет вам измен€ть требовани€, чтобы попрактиковатьс€ в другом стандартном ACL. ¬о-первых, вы будете использовать два исход€щих ACL, оба на маршрутизаторе R1.  аждый ACL разрешает пересылку трафика с одного сервера в эту подключенную локальную сеть со следующими измененными требовани€ми:

  1. »спользу€ исход€щий ACL на интерфейсе F0 / 0 маршрутизатора R1, разрешите пакеты с сервера S1 и запретите все остальные пакеты.
  2. »спользу€ исход€щий ACL на интерфейсе F0 / 1 маршрутизатора R1, разрешите пакеты с сервера S2 и запретите все остальные пакеты.

ѕример 3 показывает конфигурацию, котора€ удовлетвор€ет этим требовани€м.

access-list 2 remark This ACL permits server S1 traffic to host A's subnet
access-list 2 permit 10.2.2.1
!
access-list 3 remark This ACL permits server S2 traffic to host C's subnet
access-list 3 permit 10.2.2.2
!
interface F0/0
ip access-group 2 out
!
interface F0/1
ip access-group 3 out

 ак показано в примере, решение с номером ACL 2 разрешает весь трафик с сервера S1, при этом эта логика включена дл€ пакетов, выход€щих из интерфейса F0/0 маршрутизатора R1. ¬есь другой трафик будет отброшен из-за подразумеваемого запрета all в конце ACL.  роме того, ACL 3 разрешает трафик от сервера S2, которому затем разрешаетс€ выходить из интерфейса F0/1 маршрутизатора R1. “акже обратите внимание, что решение показывает использование параметра примечани€ списка доступа, который позвол€ет оставить текстовую документацию, котора€ остаетс€ в ACL.

 огда маршрутизаторы примен€ют ACL дл€ фильтрации пакетов в исход€щем направлении, как показано в ѕримере 2, маршрутизатор провер€ет пакеты, которые он направл€ет, по списку ACL. ќднако маршрутизатор не фильтрует пакеты, которые сам маршрутизатор создает с помощью исход€щего ACL. ѕримеры таких пакетов включают сообщени€ протокола маршрутизации и пакеты, отправленные командами ping и traceroute на этом маршрутизаторе.


—оветы по устранению неполадок и проверке

”странение неполадок в списках ACL IPv4 требует внимани€ к детал€м. ¬ частности, вы должны быть готовы посмотреть адрес и обратную маску и с уверенностью предсказать адреса, соответствующие этим двум комбинированным параметрам.

¬о-первых, вы можете определить, соответствует ли маршрутизатор пакетам или нет, с помощью пары инструментов. ѕример 2 уже показал, что IOS хранит статистику о пакетах, соответствующих каждой строке ACL. ¬добавок, если вы добавите ключевое слово log в конец команды access-list, IOS затем выдает сообщени€ журнала со случайной статистикой совпадений с этой конкретной строкой ACL. » статистика, и сообщени€ журнала могут помочь решить, кака€ строка в ACL соответствует пакету.

Ќапример, в примере 4 показана обновленна€ верси€ ACL 2 из примера 3, на этот раз с добавленным ключевым словом log. ¬низу примера затем показано типичное сообщение журнала, в котором показано результирующее совпадение на основе пакета с исходным IP-адресом 10.2.2.1 (в соответствии с ACL) с адресом назначени€ 10.1.1.1.

R1# show running-config
! lines removed for brevity
access-list 2 remark This ACL permits server S1 traffic to host A's subnet
access-list 2 permit 10.2.2.1 log
!
interface F0/0
ip access-group 2 out
R1#
Feb 4 18:30:24.082: %SEC-6-IPACCESSLOGNP: list 2 permitted 0 10.2.2.1 -> 10.1.1.1, 1
Packet

 огда вы впервые устран€ете неисправности на ACL, прежде чем вдаватьс€ в подробности логики сопоставлени€, подумайте, как об интерфейсе, на котором включен ACL, так и о направлении потока пакетов. »ногда логика сопоставлени€ идеальна, но ACL был включен на неправильном интерфейсе или в неправильном направлении, чтобы соответствовать пакетам, настроенным дл€ ACL.

Ќапример, на рисунке 9 повтор€етс€ тот же ACL, показанный ранее на рисунке 7. ѕерва€ строка этого ACL соответствует конкретному адресу хоста 10.1.1.1. ≈сли этот ACL существует на маршрутизаторе R2, размещение этого ACL в качестве вход€щего ACL на интерфейсе S0/0/1 R2 может работать, потому что пакеты, отправленные хостом 10.1.1.1 - в левой части рисунка - могут входить в интерфейс S0/0/1 маршрутизатора R2. ќднако, если R2 включает ACL 1 на своем интерфейсе F0/0 дл€ вход€щих пакетов, ACL никогда не будет соответствовать пакету с исходным IP-адресом 10.1.1.1, потому что пакеты, отправленные хостом 10.1.1.1, никогда не войдут в этот интерфейс. ѕакеты, отправленные 10.1.1.1, будут выходить из интерфейса R2 F0/0, но никогда не попадут в него только из-за топологии сети.

ѕример проверки интерфейса и направлени€ дл€ ACL