ACL (Access Control List) — это механизм, используемый в сетевых технологиях для управления доступом к сетевым ресурсам.
Создать ACL можно командой: ipv4 access-list [Name]. В качестве названия ACL можно использовать до 63 символов.
ipv4 access-list example <-----Название ACL
seq-num 1
action deny
source 192.168.0.0/16
exit
exit |
По умолчанию ACL пропускает весь трафик.
На маршрутизаторах ME отсутствует возможность сконфигурировать description для всего ACL, но вы можете задать описание для каждого правила, используя remark.
ipv4 access-list example_2
seq-num 10
remark Allow_10.10.10.1 <-----Описание
source 10.10.10.1
exit
seq-num 100
action deny
remark Drop_All <-----Описание
exit
exit |
Посмотреть детальную информацию по ACL можно с помощью команды show ipv4 access-lists detailed:
0/ME5200#show ipv4 access-lists detailed
Tue Jan 17 05:06:00 2023
HW resources: 0/0 ipv4 acl entries <-----Указывает на количество активных правил ACL и распределённых аппаратных ресурсов. По умолчанию аппаратные ресурсы на ACL не выделены.
IPv4 access-list: example <-----Название ACL
Not configured on any interfaces <-----Отображает привязку ACL к конкретному интерфейсу
seq-num 1
action: deny
match: proto any, source 192.168.0.0/16, destination any
IPv4 access-list: example_2 <-----Название ACL
Not configured on any interfaces
seq-num 10, Allow_10.10.10.1 <-----Описание правила
action: permit
match: proto any, source 10.10.10.1, destination any
seq-num 100, Drop_All <-----Описание правила
action: deny
match: proto any, source any, destination any |
Access-list можно назначить на интерфейсы устройства только в направлении ingress, пример:
interface tengigabitethernet 0/0/1 ipv4 access-group ingress example_2 ipv4 address 10.10.10.2/30 exit |
Если назначить ACL на интерфейс, но не распределить аппаратные ресурсы, то правила также не будут работать, а маршрутизатор выдаст сообщение Exceed maximum hw resources.
Для работы ACL необходимо распределить аппаратные ресурсы маршрутизатора с помощью команды hw-module maximum ipv4 acl-entries [number]. Эта команда указывает на то, сколько правил ACL может быть активно на устройстве одновременно.
Приблизительно рассчитать необходимые ресурсы можно по формуле: «Количество правил в ACL * Количество интерфейсов, на которые этот ACL назначен».
Для примера: hw-module maximum ipv4 acl-entries 100
Все изменения в hw-module применяются после перезагрузки устройства. В нашей базе знаний можно посмотреть информацию в статье про распределение аппаратных ресурсов Распределение аппаратных ресурсов маршрутизаторов ME.
После распределения аппаратных ресурсов и перезагрузки устройства в выводе show ipv4 access-lists detailed отобразятся назначенные интерфейсы и занятые ресурсы:
ME5200:R5_10.0.0.1# show ipv4 access-lists detailed
Tue Jan 17 07:09:32 2023
HW resources: 5/100 ipv4 acl entries <----- Активно 5 правил из 100 распределённых
IPv4 access-list: example
Configured on interfaces:
te0/0/4 <----- ACL example назначен на интерфейс te0/0/4 и считается за одно активное правило.
seq-num 1
action: deny
match: proto any, source 192.168.0.0/16, destination any
IPv4 access-list: example_2
Configured on interfaces:
te0/0/1 <----- ACL example_2 назначен на интерфейсы te0/0/1 и te0/0/20.77 и считается за четыре активных правила.
te0/0/20.77
seq-num 10, Allow_10.10.10.1
action: permit
match: proto any, source 10.10.10.1, destination any
seq-num 100, Drop_All
action: deny
match: proto any, source any, destination any |
В версии 3.5.0 функционал ACL был значительно расширен. |
В качестве source и destination можно указывать:
access-list example_ipv6
seq-num 1
destination
ipv6 2001:db8::/32 <----- IPv6 Prefix
exit
protocol tcp
exit
seq-num 2
destination
ipv6 2001:db8::/32 <----- IPv6 Prefix
exit
protocol udp
exit
seq-num 3
destination
ipv6 2001::1:10:0:1:41/::ff:0:0 <----- IPv6 WildCard
exit
exit
seq-num 4
source
ipv6 fe80::1ff:fe23:4567:890a <----- IPv6 Address
exit
exit
seq-num 10
action deny
exit
exit |
Для того что включить поддержку QoS в Access-List, необходимо добавить команду hw-module enable acl-qos в конфигурацию маршрутизатора.
access-list Qos
seq-num 10
destination
ipv4 172.20.20.254
exit
set dscp 48
exit
seq-num 20
destination
ipv4 10.0.9.100
exit
set dscp 56
exit
seq-num 30
action deny
dscp 64
exit
exit
|
Для L2 ACL в качестве source и destination можно указать MAC-адрес — XX:XX:XX:XX:XX:XX
В том числе, можно указать VLAN ID.
access-list example_mac
seq-num 1
action deny
destination
mac e0:d9:e3:ff:48:01 <----- MAC Address
exit
outer-vid 200 <----- Vlan ID
exit
exit |
На маршрутизаторах ME5100 IPv6 и L2 ACL не реализован из за аппаратных особенностей маршрутизатора. |
Создание группы возможно с помощью команды object-group network ipv4 [name]
В качестве объектов в группе могут быть использованы IPv4-префиксы (A.B.C.D/N) и хосты (A.B.C.D).
Для примера создадим следующие группы:
object-group network ipv4 group1 address 192.168.0.0/24 address 192.168.1.0/24 exit object-group network ipv4 group2 host 192.168.0.254 host 192.168.1.254 exit |
access-list example
seq-num 10
destination
ipv4 group1
exit
protocol icmp <----- Правило будет срабатывать только на ICMP-протокол
remark [Allow_ICMP]
exit
seq-num 20
destination
ipv4 group2
exit
source
ipv4 192.168.3.0/24
exit
exit
seq-num 100
action deny
exit
exit |
Каждый элемент объектных групп занимает аппаратный ресурс маршрутизатора.
0/ME5200:R5# show access-lists
Fri May 5 04:34:59 2023
access-list example
10, permit, icmp, src[any], dst[group1] L2: 0, IPv4: 0, IPv6: 0 hits
20, permit, any, src[192.168.3.0/24], dst[group2] L2: 0, IPv4: 0, IPv6: 0 hits
100, deny, any, src[any], dst[any] L2: 0, IPv4: 0, IPv6: 0 hits
access-list example_ipv6
1, permit, tcp, src[any], dst[2001:db8::/32] L2: 0, IPv4: 0, IPv6: 0 hits
2, permit, udp, src[any], dst[2001:db8::/32] L2: 0, IPv4: 0, IPv6: 0 hits
3, permit, any, src[any], dst[2001::1:10:0:1:41/::ff:0:0] L2: 0, IPv4: 0, IPv6: 0 hits
4, permit, any, src[fe80::1ff:fe23:4567:890a], dst[any] L2: 0, IPv4: 0, IPv6: 0 hits
10, deny, any, src[any], dst[any] L2: 0, IPv4: 0, IPv6: 0 hits
access-list example_mac
1, deny, any, src[any], dst[mac e0:d9:e3:ff:48:01, mask ff:ff:ff:ff:ff:ff], vid 200 L2: 0, IPv4: 0, IPv6: 0 hits
0/ME5200:R5# show access-lists detailed
Fri May 5 04:35:04 2023
HW resources: 22/1000 acl entries
Access-list: example
Configured on interfaces:
te0/0/20.100, L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 10, [Allow_ICMP]
action: permit
match: proto icmp, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 192.168.0.0/24, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 10, [Allow_ICMP]
action: permit
match: proto icmp, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 192.168.1.0/24, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 20
action: permit
match: proto any, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 192.168.3.0/24, ipv6 any, port any, mac any
destination: ipv4 192.168.0.254, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 20
action: permit
match: proto any, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 192.168.3.0/24, ipv6 any, port any, mac any
destination: ipv4 192.168.1.254, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 100
action: deny
match: proto any, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 any, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
Access-list: example_ipv6
Configured on interfaces:
te0/0/20.200, L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 1
action: permit
match: proto tcp, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 any, ipv6 2001:db8::/32, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 2
action: permit
match: proto udp, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 any, ipv6 2001:db8::/32, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 3
action: permit
match: proto any, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 any, ipv6 2001::1:10:0:1:41/::ff:0:0, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 4
action: permit
match: proto any, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 fe80::1ff:fe23:4567:890a, port any, mac any
destination: ipv4 any, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 10
action: deny
match: proto any, tos any, no fragments, flow-label any, vid any, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 any, ipv6 any, port any, mac any
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
Access-list: example_mac
Configured on interfaces:
te0/0/20, L2: 0, IPv4: 0, IPv6: 0 hits
seq-num 1
action: deny
match: proto any, tos any, no fragments, flow-label any, vid 200, pcp any, dei any, ethertype any
source: ipv4 any, ipv6 any, port any, mac any
destination: ipv4 any, ipv6 any, port any, mac e0:d9:e3:ff:48:01, mask ff:ff:ff:ff:ff:ff
set: none
total: L2: 0, IPv4: 0, IPv6: 0 hits
|