Files
DanielLavrushin_tspu-docs/chapters/16.md
T
Daniel Lavrushin 2b5eaee2fb Refactor documentation for clarity and consistency
- Updated section 6.1 to clarify the handling of PPPoE encapsulation and filter settings.
- Revised section 8.1 to specify the use of a separate DPI list for protocol recognition.
- Changed references from PPPoE to IPoE in section 11 for accuracy.
- Corrected parameter names in CLI documentation in section 13 for consistency.
- Standardized naming conventions in section 15 for NAT defaults and VLAN modes.
- Clarified ACL processing order and behavior in section 16.
- Updated DPI module notes in section 17 to reflect changes in the number of DPI lists.
- Enhanced descriptions of DPI list behaviors in section 23 for better understanding.
2026-09-23 20:47:23 +02:00

211 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` — этот пул для пакета больше не рассматривается и проверяются следующие пулы; не попав ни в один пул, пакет прозрачно проходит через фильтр ([раздел 5.1.2](05.md)).
## 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`: пулы проверяются по возрастанию этого значения.
| Параметр | Описание |
| ------------- | ----------------------------------------------------------- |
| **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, в проекте ТСПУ **не используются**;
- **Параметр `hairpin`** — по умолчанию включён, актуален для режима с трансляцией адресов (позволяет абонентам обмениваться трафиком через NAT, не выходя вовне). В проекте ТСПУ менять не требуется.
## 16.6. IPv6 в пуле
Поддержка IPv6 в пуле настраивается аналогично глобальным настройкам IPv6 (подробнее — в [разделе 15.4](15.md)):
| Параметр | Описание |
| --------------------- | ------------------------------------------------------------ |
| **Enable/disable** | Включение или выключение обработки IPv6-трафика в данном пуле |
| **Тайм-ауты** | Отдельные тайм-ауты для IPv6-сессий (можно не менять) |
| **Диапазон адресов** | Список IPv6-адресов и VLAN для обработки |
В проекте ТСПУ IPv6 в пуле должен быть **включён**. По умолчанию в диапазон обработки включены **все IPv6-адреса во всех VLAN** — менять это значение, как правило, не требуется.
При необходимости можно:
- включить в обработку только конкретные диапазоны IPv6-адресов;
- исключить определённые диапазоны из обработки;
- полностью отключить обработку IPv6-трафика в рамках данного пула.
## 16.7. Секция bypass — heartbeat к байпасу GL Sun (только пилотный проект)
В конфигурации фильтра есть секция **bypass**, которая в федеральном проекте **не используется**. Она была нужна на пилотном проекте на Урале для площадок, где балансировщика нет и фильтр подключён к оптическому байпасу GL Sun напрямую: такой байпас сам heartbeat-пакеты не генерирует, и отправлять их на байпас должен фильтр. В секции задаются:
| Параметр | Описание |
| ------------------------- | --------------------------------------------------------------- |
| **IP-адрес байпаса** | Адрес байпаса GL Sun, на который фильтр отправляет heartbeat |
| **Интервал отправки** | Период отправки heartbeat-пакетов |
| **Список каналов** | Каналы (линки) байпаса, по которым выполняется проверка |
На Урале осталось несколько площадок с такой схемой. С байпасами Silicom, которые сами отправляют heartbeat-пакеты и сами проверяют доступность каналов, секция не нужна (подробнее о байпасах — в [разделе 3.3](03.md); аналогичная настройка на балансировщике — в [разделе 21.8](21.md)).
---
### Диагностическая заметка: `show cps` показывает ноль
Если команда `show cps` показывает нулевое количество создаваемых сессий, одна из возможных причин — трафик **не попадает в пул**. Это может означать, что ACL не отбирает трафик: через фильтр могут идти гигабиты и десятки гигабит, но если пакеты не совпадают с правилами ACL привязанного пула, сессии создаваться не будут (подробнее — в [разделе 18.9](18.md)).
---
[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](15.md) · [Раздел 17: Фильтр: настройка DPI →](17.md)