В этой короткой статье я хочу описать, как можно гибко фильтровать трафик на коммутаторах Huawei, на примере стека из двух S6730.
Задача из тестовой сети:
10.0.18.0/24
Запретить доступ на сети:
10.177.1.0/24 10.0.177.0/24
Разрешить весь остальной трафик, но при этом временно разрешать трафик на некоторые хосты из сетей 10.177.1.0/24 и 10.0.177.0/24
и плюс к этому, еще одновременно к ним же запрещать и разрешать доступ из некоторых других сетей.
Если бы у нас были Object-Group, но у нас нет Object-Group.
Можно сделать ACL и первыми правилами разрешить доступ на нужные хосты, следующими запретить доступ на эти сети и последним правилом разрешить остальной трафик.
И затем использовать эти ACL для фильтрации, но придется редактировать несколько ACL и добавлять/удалять туда правила с одними и теми же хостами.
Поэтому можно сделать три разных ACL:
TNET_ALLOW в нем указываем к каким хостам разрешить доступ.
TNET_DENY в нем указываем к каким подсетям запретить доступ (обязательно нужно включить подсети, в которые входят адреса разрешенных хостов, указанных в TNET_ALLOW)
TNET_ALLOWALL в нем указываем какой трафик разрешить и он будет проверен последним, в нашем случае это трафик с сети 10.0.0.0/8 на любой адрес назначения, или же можно более гранулировано.
В ACL все правила permit, потому что этот лист не определяет, что делать с трафиком, а определяет условие классификации, то есть если permit, то условие выполнено.
Что делать с трафиком, определяет поведение TNET_ALLOW_BH, TNET_ALLOW_BHEX и TNET_DENY_BH там указано либо permit, либо deny.
Еще нужны сами классификаторы, их три, по одному на каждый ACL:
Классификатор TNET_ALLOW_CL
Классификатор TNET_DENY_CL
Классификатор TNET_ALLOWALL_CL
Далее создаем политику TNET_COMPOSITE_POLICY с указанием, что перебирать правила нужно в том порядке, в котором они указаны в конфигурационном файле (match-order config)
В ней перечисляем классификаторы и поведение:
classifier TNET_ALLOW_CL behavior TNET_ALLOW_BHEX classifier TNET_DENY_CL behavior TNET_DENY_BH classifier TNET_ALLOWALL_CL behavior TNET_ALLOW_BH
Таким образом получается, что классификатор TNET_ALLOW_CL связан с поведением TNET_ALLOW_BHEX, в котором действие указано как permit, и трафик будет разрешен А классификатор TNET_DENY_CL связан с поведением TNET_DENY_BH, в котором действие указано как deny, и трафик будет запрещен. Классификатор TNET_ALLOWALL_CL, определяющий прочий трафик, связан с поведением TNET_ALLOW_BH.
Затем эта политика назначается на Vlan:
vlan 10 traffic-policy TNET_COMPOSITE_POLICY inbound
Для регулирования правил доступа, например, если вам понадобится разрешить какой-то новый хост из запрещенных сетей, указанных в списке доступа TNET_DENY, добавляем его адрес в список доступа TNET_ALLOW.
Для быстрого запрета доступа на все разрешенные в списке TNET_ALLOW хосты и/или сети, можно изменить поведение TNET_ALLOW_BHEX на deny:
system-view traffic behavior TNET_ALLOW_BHEX deny
Для разрешения, соответственно permit
Именно поэтому создано отдельное поведение.
Конфигурация получится примерно такая:
acl name TNET_ALLOW 3998 rule 12 permit ip destination 10.177.1.5 0 rule 13 permit ip destination 10.0.177.5 0 acl name TNET_DENY 3997 rule 210 permit ip source 10.0.18.0 0.0.0.255 destination 10.177.1.0 0.0.0.255 rule 220 permit ip source 10.0.18.0 0.0.0.255 destination 10.0.177.0 0.0.0.255 acl name TNET_ALLOWALL 3996 rule 300 permit ip source 10.0.0.0 0.255.255.255 traffic classifier TNET_ALLOW_CL operator or if-match acl TNET_ALLOW traffic classifier TNET_DENY_CL operator or if-match acl TNET_DENY traffic classifier TNET_ALLOWALL_CL operator or if-match acl TNET_ALLOWALL traffic behavior TNET_ALLOW_BHEX statistic enable permit traffic behavior TNET_ALLOW_BH permit statistic enable traffic behavior TNET_DENY_BH deny statistic enable traffic policy TNET_COMPOSITE_POLICY match-order config classifier TNET_ALLOW_CL behavior TNET_ALLOW_BHEX classifier TNET_DENY_CL behavior TNET_DENY_BH classifier TNET_ALLOWALL_CL behavior TNET_ALLOW_BH vlan 10 description TESTV1 traffic-policy TNET_COMPOSITE_POLICY inbound
Теперь о том, как например сделать так, чтобы одному набору VLAN трафик на некоторые (один и тот же набор) хосты разрешить,
а другому запретить (при условии, что в этих VLAN подсети попадают в суперсеть 10.0.0.0/8)
Нужно сделать еще одну политику и поведение:
traffic behavior TNET_DENY_BHEX statistic enable deny traffic policy TNET_DENYOTHER_POLICY match-order config classifier TNET_ALLOW_CL behavior TNET_DENY_BHEX classifier TNET_ALLOWALL_CL behavior TNET_ALLOW_BH
В ней тот же классификатор TNET_ALLOW_CL будет сопоставлен с поведением deny
А классификатор TNET_ALLOWALL_CL все так же будет разрешать весь остальной трафик, так как сопоставлен с поведением TNET_ALLOW_BH
И эту политику применить к целевому VLAN:
vlan XXXX traffic-policy TNET_DENYOTHER_POLICY inbound
И точно так же, меняя deny на permit в поведении TNET_DENY_BHEX можно запрещать/разрешать трафик на хосты из списка TNET_ALLOW
Как проверить, что получилось:
display traffic policy vlan XXX покажет, какие правила применились
Пример:
display traffic policy vlan 10 Vlan: 10 Direction: Inbound Policy: SRV_PP_COMPOSITE_POLICY Classifier: SRV_PP_ALLOW_CL Operator: OR Rule(s) : if-match acl SRV_PP_ALLOW Behavior: SRV_PP_ALLOW_BHEX Statistic: enable Permit Classifier: SRV_PP_DENY_CL Operator: OR Rule(s) : if-match acl SRV_PP_DENY Behavior: SRV_PP_DENY_BH Deny Statistic: enable Classifier: SRV_PP_ALLOWALL_CL Operator: OR Rule(s) : if-match acl SRV_PP_ALLOWALL Behavior: SRV_PP_ALLOW_BH Permit Statistic: enable
display traffic policy statistics vlan XXX inbound покажет счетчики по правилам. Пример:
display traffic policy statistics vlan 10 inbound Vlan: 10 Traffic policy inbound: TNET_COMPOSITE_POLICY Rule number: 5 Current status: success Statistics interval: 300 --------------------------------------------------------------------- Board : 0 --------------------------------------------------------------------- Matched | Packets: 590 | Bytes: 81,525 | Rate(pps): 0 | Rate(bps): 176 --------------------------------------------------------------------- Passed | Packets: 579 | Bytes: 79,387 | Rate(pps): 0 | Rate(bps): 176 --------------------------------------------------------------------- Dropped | Packets: 22 | Bytes: 2,227 | Rate(pps): 0 | Rate(bps): 0 --------------------------------------------------------------------- Filter | Packets: 22 | Bytes: 2,227 --------------------------------------------------------------------- Car | Packets: 0 | Bytes: 0 --------------------------------------------------------------------- Board : 1 --------------------------------------------------------------------- Matched | Packets: 20 | Bytes: 1,994 | Rate(pps): 0 | Rate(bps): 0 --------------------------------------------------------------------- Passed | Packets: 18 | Bytes: 1,266 | Rate(pps): 0 | Rate(bps): 0 --------------------------------------------------------------------- Dropped | Packets: 7 | Bytes: 747 | Rate(pps): 0 | Rate(bps): 0 --------------------------------------------------------------------- Filter | Packets: 7 | Bytes: 747 --------------------------------------------------------------------- Car | Packets: 0 | Bytes: 0 ---------------------------------------------------------------------
Тут видно, что, во-первых, счётчики считаются по каждому члену стека отдельно, а во-вторых, что туда попал трафик.
Вот и все, всем сетевикам спокойной работы.
nikweter
А как качаете обновы? А то я накупил пачку, а мне доступа не дают. Санкции. Вот тебе и братья китайцы!
OlegPowerC Автор
Побираемся у знакомых кто ими торгует :-) в телеге чатик есть - там тоже есть добрые люди
nikweter
Аналогично. Просто был изумлен, когда Хуавей такие палки в колеса вставлять начал. Официально ушедший длинк вовсю оказывает поддержку. В телеге оф представители даже кастомные прошивки выкладывают людям в разными кейсами. А я с него как раз на Хуавей соскачил. И это не говоря уже что 5735 с пое в 2.5 раза за лето подорожали.