.. _conntrackgl: Служба conntrack ================ Служба conntrack предназначена для отслеживания и передачи информации о сетевых соединениях между узлами. Настройка службы conntrack осуществляется на следующем уровне конфигурации: :: [edit service conntrack] Общие настройки --------------- Для определения размера хэш-таблицы, используемой для хранения информации о соединениях, применяется команда: :: # set hash-size |noindent| где ```` – число от 1 до 4294967295. .. note:: Увеличение размера хэш-таблицы позволяет улучшить производительность при значительном количестве соединений и увеличивает объём используемой памяти. Для ограничения количества записей в хэш-таблице применяется команда: :: # set hash-limit |noindent| где ```` – число от 1 до 4294967295. Если количество записей превышает параметр-значение настройки ``hash-limit``, новые соединения отбрасываются, что позволяет предотвратить переполнение памяти в системах со значительным количеством соединений. Для определения размера буфера, используемого при отправке сообщений через Netlink, применяется команда: :: # set netlink-buff-size |noindent| где ```` – число байт от 1 до 4294967295. .. note:: Увеличение размера буфера позволяет улучшить производительность и увеличивает объём используемой памяти. При обнаружении службой потери netlink-сообщений размер буфера удваивается автоматически. Для определения максимального размера буфера, до которого он может быть увеличен, применяется команда: :: # set netlink-buff-size-max-growth |noindent| где ```` – число байт от 1 до 4294967295. Для настройки перезапуска процесса синхронизации при переполнении буфера применяется команда: :: # set netlink-overrun-resync |off|on |noindent| где - ``on`` – процесс синхронизации перезапустится автоматически при переполнении буфера; - ``off`` – процесс синхронизации продолжит работу, что может привести к снижению производительности из-за невозможности обработки некоторых сообщений; - ```` – процесс синхронизации перезапускается с указанным интервалом (число секунд от 1 до 4294967295). Для использования надёжной доставки событий Netlink применяется команда: :: # set netlink-events-reliable Если настройка задана, события отправляются надёжно, что может увеличить задержку, но уменьшит вероятность потери событий. Если команда не задана, события отправляются без гарантий доставки, что может уменьшить задержку, но увеличит вероятность потери событий. Для определения частоты опрашивания соединения на предмет изменений применяется команда: :: # set poll-secs |noindent| где ```` – число секунд от 1 до 4294967295. Данная настройка применима для оптимизации производительности при уменьшении количества опрашиваемых соединений. Для ограничения количества итераций при обработке событий применяется команда: :: # set event-iteration-limit |noindent| где ```` – число от 1 до 4294967295. Если количество итераций превышает заданное ограничение, обработка событий прекращается. Данная настройка применима для предотвращения зацикливания при обработке определённых типов событий. Протоколы синхронизации ----------------------- Служба conntrack поддерживает 3 протокола (режима) синхронизации: - FTFW (Fast Track Forward) – режим, основанный на надёжном протоколе, отслеживающем сообщения, данный протокол может восстанавливать состояние таблицы отслеживания соединений после потери, изменения порядка и повреждения сообщений; - ALARM – режим, использующийся для оповещения о новых соединениях или изменениях в существующих соединениях (применим для мониторинга сетевой активности или обнаружения подозрительной деятельности), данный протокол потребляет много трафика, при этом быстро решает проблемы синхронизации; - NOTRACK – режим, при котором новые соединения не отслеживаются (применим при необходимости снизить нагрузку на систему или при отсутствии необходимости в отслеживании всех соединений), данный протокол основан на постоянной репликации сообщений (отправляет и получает информацию о состоянии таблицы соединений без выполнения какой-либо специальной проверки). Для работы службы необходимо выбрать и, при необходимости, настроить один из них. Для активации режима синхронизации применяется команда: :: # set mode ftfw|alarm|notrack |noindent| где ``ftfw|alarm|notrack`` – режим работы (см. выше). Настройки режима FTFW ~~~~~~~~~~~~~~~~~~~~~ Настройка протокола FTFW осуществляется на следующем уровне конфигурации: :: [edit service conntrack ftfw-setting] Для определения количества подтверждений, которое может быть потеряно до того, как служба начнёт отправлять повторные подтверждения, применяется команда: :: # set ack-window-size |noindent| где ```` – число от 1 до 4294967295. Для определения промежутка времени, в течение которого служба ожидает подтверждения успешного восстановления сессий, применяется команда: :: # set commit-timeout |noindent| где ```` – число секунд от 1 до 4294967295. Если подтверждение не получено в течение заданного времени, сессии удаляются. Для отключения использования внешнего кэш применяется команда: :: # set disable-external-cache Для настройки времени очистки кэш таблицы соединений при переходе узла из основного состояния в резервное применяется команда: :: # set purge-timeout |noindent| где ```` – число секунд от 1 до 4294967295. Данная настройка применима для очистки таблицы отслеживания соединений от неактивных записей и предотвращения конфликтов со старыми записями. При полном заполнении очереди отправки новые события ставятся в очередь повторной отправки до тех пор, пока для их отправки не появится достаточно места. Такой механизм предотвращает потерю событий в случае проблем с сетью или других сбоев. Для определения максимальной длины очереди повторной отправки применяется команда: :: # set resend-queue-size |noindent| где ```` – число от 1 до 4294967295. Для включения синхронизации данных при запуске службы применяется команда: :: # set startup-resync Настройки режима ALARM ~~~~~~~~~~~~~~~~~~~~~~ Настройка протокола ALARM осуществляется на следующем уровне конфигурации: :: [edit service conntrack alarm-setting] Для настройки периода времени, в течение которого служба сохраняет информацию о сетевом подключении в своем кэш, применяется команда: :: # set cache-timeout |noindent| где ```` – число секунд от 1 до 4294967295. По истечении указанного в настройке периода времени информация удаляется из кэша для освобождения места для новых подключений. Данный механизм позволяет поддерживать управляемый размер кэша и повышать эффективность процесса отслеживания соединений. Для настройки временного интервала, через который служба проверяет и обновляет информацию о соединениях, применяется команда: :: # set refresh-time |noindent| где ```` – число секунд от 1 до 4294967295. Настройки ``commit-timeout`` и ``purge-timeout`` аналогичны настройкам режима FTFW. Настройки режима NOTRACK ~~~~~~~~~~~~~~~~~~~~~~~~ Настройка протокола NOTRACK осуществляется на следующем уровне конфигурации: :: [edit service conntrack notrack-setting] Для отключения использования внутреннего кэш применяется команда: :: # set disable-internal-cache Настройки ``commit-timeout``, ``disable-external-cache``, ``purge-timeout`` и ``startup-resync`` аналогичны настройкам режима FTFW. Транспортные протоколы ---------------------- Служба conntrack поддерживает 3 транспортных протокола: - Multicast – передача информации о сетевых сессиях с помощью multicast-пакетов; - TCP – передача информации о сетевых сессиях с помощью tcp-пакетов; - UDP – передача информации о сетевых сессиях с помощью udp-пакетов. Для работы службы необходимо выбрать и настроить один из них. Для выбора протокола применяется команда: :: # set proto multicast|tcp|udp Настройка протокола осуществляется на следующем уровне конфигурации: :: [edit service conntrack -settings] |noindent| где ```` – один из транспортных протоколов: ``multicast``, ``tcp``, ``udp``. На уровне конфигурации протокола указываются параметры соединения для передачи информации на удалённый узел. Кроме настройки основного соединения возможно указание до трёх резервных каналов связи. Если пересылка по основному каналу невозможна, служба поочерёдно переключается на резервные каналы. Настройка резервных каналов осуществляется на следующем уровне конфигурации: :: [edit service conntrack -settings backup-link ] |noindent| где - ```` – один из транспортных протоколов: ``multicast``, ``tcp``, ``udp``; - ```` – строка. Настройки протокола Multicast ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Настройка протокола Multicast осуществляется на следующем уровне конфигурации: :: [edit service conntrack multicast-setting] Для включения проверки контрольных сумм сообщений применяется команда: :: # set checksum Для настройки размера буфера входящих пакетов с информацией о состояниях сессий применяется команда: :: # set rcv-socket-buffer |noindent| где ```` – число байт от 1 до 4294967295. .. note:: При малом размере буфера существует вероятность потери пакетов. Для настройки размера буфера исходящих пакетов с информацией о состояниях сессий применяется команда: :: # set snd-socket-buffer |noindent| где ```` – число байт от 1 до 4294967295. .. note:: При малом размере буфера существует вероятность потери пакетов. Для настройки номера мультикаст-группы применяется команда: :: # set group |noindent| где ```` – число от 1 до 4294967295. Для настройки мультикаст-адреса группы получателей применяется команда: :: # set destination address ipv4
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Для настройки имени локального интерфейса системы для отправки мультикаст-сообщений применяется команда: :: # set source interface |noindent| где ```` – имя существующего интерфейса. Для указания локального IP-адреса системы, с которого осуществляется отправка мультикаст-сообщений, применяется команда: :: # set source address
|noindent| где ``
`` – IPv4-адрес в формате ``A.B.C.D``. Настройки протоколов TCP и UDP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Настройка протокола TCP осуществляется на следующем уровне конфигурации: :: [edit service conntrack tcp-setting] Настройка протокола UDP осуществляется на следующем уровне конфигурации: :: [edit service conntrack udp-setting] На данных уровнях конфигурации настройки, описанные ниже, идентичны. Для использования проверки контрольных сумм сообщений применяется команда: :: # set checksum Для настройки размера буфера входящих пакетов с информацией о состояниях сессий применяется команда: :: # set rcv-socket-buffer |noindent| где ```` – число байт от 1 до 4294967295. .. note:: При малом размере буфера существует вероятность потери пакетов. Для настройки размера буфера исходящих пакетов с информацией о состояниях сессий применяется команда: :: # set snd-socket-buffer |noindent| где ```` – число байт от 1 до 4294967295. .. note:: При малом размере буфера существует вероятность потери пакетов. Для настройки IP-адреса получателя пакетов с информацией о состояниях сессий применяется команда: :: # set destination address ipv4|ipv6
|noindent| где - ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6; - ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H`` в зависимости от уровня конфигурации. Для настройки IP-адреса приёма пакетов с информацией о состояниях сессий применяется команда: :: # set listen address ipv4|ipv6
|noindent| где - ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6; - ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H`` в зависимости от уровня конфигурации. Для настройки номера порта протокола применяется команда: :: # set port |noindent| где ```` – число от 1 до 65535. Для определения локального интерфейса системы для отправки сообщений применяется команда: :: # set source interface |noindent| где ```` – имя существующего интерфейса. Фильтрация ---------- Служба conntrack поддерживает фильтрацию пакетов с информацией о состояниях сессий. Фильтры доступны как для административного пространства (user-space), так и для пространства ядра (kernel-space). Настройка фильтров осуществляется на следующем уровне конфигурации: :: [edit service conntrack filter kernel|user] |noindent| где - ``kernel`` – пространство ядра; - ``user`` – административное пространство. Предусмотрены следующие виды правил фильтрации: - ``accept`` – принять информацию о сессии; - ``ignore`` – игнорировать информацию о сессии. Для фильтрации трафика для набора IP-адресов применяется команда: :: # set accept|ignore address ipv4|ipv6
|noindent| где - ``accept|ignore`` – вид правила фильтрации; - ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6; - ``
`` – IPv4-адрес в формате ``A.B.C.D[/mask]`` или IPv6-адрес в формате ``A:B:..:H[/mask]`` в зависимости от уровня конфигурации. Для фильтрации трафика по протоколу применяется команда: :: # set accept|ignore proto dccp|icmp|ipv6-icmp|sctp|tcp|udp |noindent| где - ``accept|ignore`` – вид правила фильтрации; - ``dccp|icmp|ipv6-icmp|sctp|tcp|udp`` – протокол. Для фильтрации по состоянию сессии применяется команда: :: # set accept|ignore state close-wait|closed|established|fin-wait|last-ack|listen|syn-recv|syn-sent|time-wait |noindent| где - ``accept|ignore`` – вид правила фильтрации; - ``close-wait|closed|established|fin-wait|last-ack|listen|syn-recv|syn-sent|time-wait`` – состояние трафика. Команды для просмотра информации -------------------------------- Для просмотра информации о состоянии внешнего кэш применяется команда: :: > show service conntrack cache external Для просмотра информации о состоянии внутреннего кэш применяется команда: :: > show service conntrack cache internal Для просмотра общей статистики применяется команда: :: > show service conntrack statistics Для просмотра сетевой статистики применяется команда: :: > show service conntrack statistics network Для просмотра расширенной статистики о состоянии внешнего и внутреннего кэш применяется команда: :: > show service conntrack statistics cache Для просмотра статистики о состоянии очереди применяется команда: :: > show service conntrack statistics queue Для просмотра статистики ожидания применяется команда: :: > show service conntrack statistics expect Для просмотра статистики времени выполнения применяется команда: :: > show service conntrack statistics runtime