## Настройка
Packmate использует настройки из файла `.env` в той же папке, что и `docker-compose.yml`.
Создайте его из полного шаблона и измените значения под сервер:
```bash
cp .env.example .env
${EDITOR:-nano} .env
```
### Основные настройки
```dotenv
# Локальный IP сервера, на который приходит игровой трафик
PACKMATE_LOCAL_IP=10.20.1.1
# Имя пользователя для web-авторизации
PACKMATE_WEB_LOGIN=SomeUser
# Пароль для web-авторизации
PACKMATE_WEB_PASSWORD=SomeSecurePassword
```
### Режим работы
Packmate поддерживает три основных режима работы: `LIVE`, `FILE` и `VIEW`.
1. `LIVE` - это основной режим работы во время CTF. Packmate обрабатывает живой трафик и сразу выводит результаты.
2. `FILE` - обрабатывает трафик из pcap файлов. Полезен для анализа трафика с прошедших CTF, где не был запущен Packmate, или тех, где невозможно запустить его на вулнбоксе.
3. `VIEW` - Packmate не обрабатывает трафик, а только показывает уже обработанные стримы. Полезен для разборов после завершения CTF.
Настройка LIVE
Необходимо указать интерфейс, через который проходит игровой трафик.
На этом же интерфейсе должен располагаться ip, указанный в параметре `PACKMATE_LOCAL_IP`
```dotenv
# Режим работы - перехват
PACKMATE_MODE=LIVE
# Интерфейс, на котором производится перехват трафика
PACKMATE_INTERFACE=game
```
Для интенсивного трафика можно включить параллельную обработку захваченных пакетов. Оба направления
одного TCP/UDP потока всегда обрабатываются одним worker, поэтому порядок пакетов внутри потока
сохраняется. Начните с `1` worker как режима совместимости и увеличивайте значение только после
сетевого stress test на целевом сервере:
```dotenv
PACKMATE_CAPTURE_WORKERS=1
PACKMATE_CAPTURE_QUEUE_CAPACITY=250000
PACKMATE_CAPTURE_BUFFER_SIZE_BYTES=67108864
PACKMATE_CAPTURE_SHUTDOWN_TIMEOUT_SECONDS=30
# Должно быть больше shutdown timeout приложения.
PACKMATE_CONTAINER_STOP_GRACE_PERIOD=45s
```
Очередь ограничена: при её переполнении Packmate продолжает работать и увеличивает счётчик
`applicationDroppedPackets` в `GET /api/pcap/metrics`. Для production этот счётчик, а также
`droppedPackets` и `interfaceDroppedPackets`, должны оставаться равны нулю. `maximumQueuedPackets`
показывает максимальное число packet tasks, ожидавших обработки после запуска capture.
Настройка FILE
Необходимо указать название pcap файла, лежащего в папке pcaps.
После запуска в веб-интерфейсе появится кнопка, активирующая чтение файла.
Важно, чтобы к этому моменту уже были созданы сервисы и паттерны (см. раздел Использование).
```dotenv
# Режим работы - анализ файла
PACKMATE_MODE=FILE
# Название файла в папке pcaps
PACKMATE_PCAP_FILE=dump.pcap
```
Настройка VIEW
В этом режиме Packmate просто показывает уже имеющиеся данные.
```dotenv
# Режим работы - просмотр
PACKMATE_MODE=VIEW
```
### Очистка БД
На крупных CTF через какое-то время накапливается большое количество трафика. Это замедляет работу Packmate и занимает много места на диске.
Для оптимизации работы, рекомендуется включить регулярную очистку БД от старых стримов. Это будет работать только в режиме `LIVE`.
```dotenv
PACKMATE_OLD_STREAMS_CLEANUP_ENABLED=true
# Пауза между запусками cleaner (в секундах).
PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL_SECONDS=10
# Максимальное время активной очистки за один запуск (в секундах).
PACKMATE_OLD_STREAMS_CLEANUP_MAX_RUN_SECONDS=5
# Насколько старым стрим должен быть для удаления (в минутах от текущего времени)
PACKMATE_OLD_STREAMS_CLEANUP_THRESHOLD=15
```
Старую переменную `PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL` замените на
`PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL_SECONDS`; новая настройка задаётся в секундах.
### Дополнительные настройки
```dotenv
# Пароль от БД. Из-за того, что БД принимает подключения только с localhost, менять его необязательно, но можно, для дополнительной безопасности.
PACKMATE_DB_PASSWORD=K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb
# Версия Packmate. Можно изменить, если нужно использовать другой образ из docker registry.
BUILD_TAG=latest
```
Чтобы использовать расшифровку TLS (с RSA), нужно положить соответствующий приватный ключ, который
использовался для генерации сертификата, в папку `rsa_keys`.
Файлы БД сохраняются в ./data, поэтому для обнуления базы нужно удалить эту папку.