# 16. Фильтр: ACL и пулы — запуск трафика на обработку

[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](15.md)

---

Чтобы фильтр начал обрабатывать трафик, необходимо выполнить два действия: **создать пул** и **привязать к нему ACL**. Без этих настроек — какие бы DPI-листы ни были сконфигурированы — весь трафик будет прозрачно пропускаться через устройство без какой-либо обработки.

Это одна из ключевых стадий в пути прохождения пакета через фильтр (подробнее — в [разделе 5.1](05.md)): IP-пакет должен попасть в ACL и в пул, чтобы далее передаваться на обработку движком DPI.

> **Важно:** при заводской (дефолтной) конфигурации фильтра пулы и ACL **отсутствуют**. Их необходимо создать вручную при первоначальной настройке.

## 16.1. Создание ACL: `create acl`, правила (allow/deny), протоколы, source/destination, VLAN

ACL (Access Control List) — это набор правил, определяющих, какой трафик подлежит обработке. Изначально на фильтре нет ни одного ACL — его нужно создать.

### Создание и переход в ACL

| Действие               | Команда                        | Пример                    |
| ---------------------- | ------------------------------ | ------------------------- |
| Создать ACL            | `create acl <имя>`            | `create acl aclfake`      |
| Перейти в ACL          | `go to acl<имя>`              | `go to aclaclfake`        |
| Удалить ACL            | `no acl <имя>`                | `no acl aclfake`          |

> **Обратите внимание:** команда перехода `go to acl<имя>` пишется **слитно** — `aclaclfake`, а не `acl aclfake`. Здесь `acl` — это часть пути, а `aclfake` — название списка.

### Создание правил

Внутри ACL создаются правила, каждое из которых определяет, какой трафик разрешить (`allow`) или запретить (`deny`) для обработки:

```text
    <номер> allow|deny <протокол> <source> <destination> [vlan <N>|<N-M>]
```

Структура правила:

| Элемент          | Описание                                                         | Примеры                        |
| ---------------- | ---------------------------------------------------------------- | ------------------------------ |
| **Номер**        | Порядковый номер правила (рекомендуется с зазором: 10, 20, 30)   | `10`, `20`, `30`               |
| **Действие**     | `allow` (или `permit`) / `deny` — разрешить или запретить        | `allow`, `deny`                |
| **Протокол**     | IP, TCP, UDP, ICMP и др.                                         | `ip`, `tcp`, `udp`             |
| **Source**        | Источник: хост, подсеть или `any` (любой)                       | `any`, `10.0.0.0/8`, `host 1.2.3.4` |
| **Destination**   | Назначение: хост, подсеть или `any`                             | `any`, `192.168.0.0/16`        |
| **VLAN**          | Номер или диапазон VLAN (необязательно)                         | `vlan 100`, `vlan 100-200`     |

Ключевые слова `allow` и `permit` — **синонимы**, можно использовать любое из них.

### Поведение VLAN по умолчанию

Если номер VLAN **не указан**, правило автоматически применяется ко **всем VLAN** (0–4095). Это поведение по умолчанию подходит для большинства сценариев в проекте ТСПУ.

При необходимости можно указать:

- конкретный VLAN: `vlan 100`
- диапазон VLAN: `vlan 100-200`

### Управление правилами

| Действие              | Команда                  |
| --------------------- | ------------------------ |
| Удалить правило       | `no <номер>`            |
| Просмотреть ACL       | `ls` (в контексте ACL)  |

Номера правил рекомендуется задавать **с зазором** (10, 20, 30...) — это позволяет вставлять новые правила между существующими без перенумерации.

### Типовой ACL для проекта ТСПУ

В проекте ТСПУ, как правило, используется простейший ACL, пропускающий весь IP-трафик на обработку:

```text
    create acl aclfake
    go to aclaclfake
    10 allow ip any any
    apply
```

Правила обрабатываются **по порядку номеров** — первое совпавшее правило определяет судьбу пакета. Это аналогично работе ACL на маршрутизаторах: если пакет совпал с правилом `allow`, он направляется в пул; если с правилом `deny` — прозрачно пропускается мимо пула.

## 16.2. Создание пула: `create pool`, тип = fake (без NAT)

Пул — логическая сущность, в которую попадает трафик, отобранный ACL, для дальнейшей обработки. В проекте ТСПУ тип пула **всегда** должен быть **fake**.

### Создание пула

```text
    create pool poolfake
    go to poolpoolfake
```

### Тип пула: fake

| Тип пула   | Описание                                                    | Применение в ТСПУ |
| ---------- | ----------------------------------------------------------- | ------------------ |
| **fake**   | «Фейковый» пул — трансляция адресов не выполняется: что пришло, то и ушло | **Всегда** |
| Другие типы | Реальная трансляция адресов (NAT)                          | Не используется    |

Тип `fake` означает, что фильтр **не изменяет** IP-адреса в проходящих пакетах. Это наследие CGNAT-платформы: механизм пулов изначально создавался для трансляции адресов, но в проекте ТСПУ трансляция не нужна. Тем не менее пул **должен быть создан** — без него трафик не попадёт на обработку DPI.

### Минимальные настройки пула

| Параметр    | Значение      | Описание                                |
| ----------- | ------------- | --------------------------------------- |
| **type**    | `fake`        | Тип пула — без трансляции адресов       |
| **enable**  | Включён       | Пул должен быть активен                 |
| **acl**     | `<имя ACL>`   | Привязка ACL к пулу                     |

Этих трёх настроек **достаточно** для запуска трафика на обработку.

## 16.3. Привязка ACL к пулу

Привязка ACL к пулу выполняется командой `acl` внутри контекста пула:

```text
    go to poolpoolfake
    acl aclfake
    type fake
    enable
    apply
```

Именно привязка ACL к пулу определяет, **какой именно трафик** будет попадать на обработку DPI. Без привязанного ACL пул не будет отбирать трафик, и обработка не начнётся.

Полная последовательность создания минимальной рабочей конфигурации:

```text
    # 1. Создаём ACL
    create acl aclfake
    go to aclaclfake
    10 allow ip any any
    exit

    # 2. Создаём пул и привязываем ACL
    create pool poolfake
    go to poolpoolfake
    type fake
    acl aclfake
    enable
    exit

    # 3. Применяем и сохраняем
    apply
    wr
```

## 16.4. Приоритет пулов

При наличии нескольких пулов на фильтре трафик может совпасть с ACL **разных пулов**. В этом случае пакет попадёт в пул с **наивысшим приоритетом**.

| Параметр      | Описание                                                    |
| ------------- | ----------------------------------------------------------- |
| **priority**  | Числовое значение приоритета пула (чем выше — тем приоритетнее) |

На практике в проекте ТСПУ обычно используется **один пул**, поэтому настройка приоритета, как правило, не требуется. Однако при необходимости разделения трафика на разные пулы (например, для разных DPI-листов или разных политик обработки) приоритеты позволяют контролировать порядок отбора.

## 16.5. Connection logging в пуле

Параметр **connection log** в пуле управляет журналированием соединений (NAT translation log) — записью информации о каждой создаваемой сессии: какой абонент, на какой ресурс, по какому порту обращался.

| Значение | Описание                                                |
| -------- | ------------------------------------------------------- |
| **on**   | Журналирование соединений для данного пула включено     |
| **off**  | Журналирование отключено                                |

По умолчанию connection logging **включён**. В проекте ТСПУ этот параметр может быть как задействован, так и не использоваться — зависит от конкретной площадки и требований DevOps-команды.

Помимо connection log, в пуле присутствуют:

- **Тайм-ауты** — наследуются из секции `nat-defaults` при создании пула (подробнее — в [разделе 15.3](15.md)). При необходимости могут быть переопределены на уровне пула;
- **Ограничения на пользователей (limiter)** — актуальны только для NAT, в проекте ТСПУ **не используются**;
- **Параметр PIN** — по умолчанию включён, актуален для режима с трансляцией адресов. В проекте ТСПУ менять не требуется.

## 16.6. IPv6 в пуле

Поддержка IPv6 в пуле настраивается аналогично глобальным настройкам IPv6 (подробнее — в [разделе 15.4](15.md)):

| Параметр              | Описание                                                     |
| --------------------- | ------------------------------------------------------------ |
| **Enable/disable**    | Включение или выключение обработки IPv6-трафика в данном пуле |
| **Тайм-ауты**        | Отдельные тайм-ауты для IPv6-сессий (можно не менять)        |
| **Диапазон адресов**  | Список IPv6-адресов и VLAN для обработки                     |

В проекте ТСПУ IPv6 в пуле должен быть **включён**. По умолчанию в диапазон обработки включены **все IPv6-адреса во всех VLAN** — менять это значение, как правило, не требуется.

При необходимости можно:

- включить в обработку только конкретные диапазоны IPv6-адресов;
- исключить определённые диапазоны из обработки;
- полностью отключить обработку IPv6-трафика в рамках данного пула.

---

### Диагностическая заметка: `show cps` показывает ноль

Если команда `show cps` показывает нулевое количество создаваемых сессий, одна из возможных причин — трафик **не попадает в пул**. Это может означать, что ACL не отбирает трафик: через фильтр могут идти гигабиты и десятки гигабит, но если пакеты не совпадают с правилами ACL привязанного пула, сессии создаваться не будут (подробнее — в [разделе 18.9](18.md)).

---

[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](15.md) · [Раздел 17: Фильтр: настройка DPI →](17.md)
