В этой короткой статье я хочу описать, как можно гибко фильтровать трафик на коммутаторах 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
---------------------------------------------------------------------

Тут видно, что, во-первых, счётчики считаются по каждому члену стека отдельно, а во-вторых, что туда попал трафик.
Вот и все, всем сетевикам спокойной работы.

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


  1. nikweter
    24.09.2026 17:04

    А как качаете обновы? А то я накупил пачку, а мне доступа не дают. Санкции. Вот тебе и братья китайцы!


    1. OlegPowerC Автор
      24.09.2026 17:04

      Побираемся у знакомых кто ими торгует :-) в телеге чатик есть - там тоже есть добрые люди


      1. nikweter
        24.09.2026 17:04

        Аналогично. Просто был изумлен, когда Хуавей такие палки в колеса вставлять начал. Официально ушедший длинк вовсю оказывает поддержку. В телеге оф представители даже кастомные прошивки выкладывают людям в разными кейсами. А я с него как раз на Хуавей соскачил. И это не говоря уже что 5735 с пое в 2.5 раза за лето подорожали.