Документация: ПО Факел — разрабатываемая версия

Отслеживание соединений

Обзор

Одной из важных функций, построенных на основе фреймворка Netfilter, является отслеживание соединений (conntrack-sync). Отслеживание соединений позволяет ядру отслеживать все логические сетевые соединения или сеансы и, таким образом, соотносить все пакеты, которые могут составлять это соединение. NAT опирается на эту информацию, чтобы переводить все связанные пакеты одинаковым образом, а iptables может использовать эту информацию для работы в качестве межсетевого экрана с контролем состояния.

Примечание

В текущей версии ПО Факел служба service conntrack-sync запускает conntrackd и синхронизирует таблицу соединений ядра Linux; сеансы NAT плоскости передачи данных FVE этой службой не синхронизируются (см. Ограничения).

Однако состояние соединения совершенно не зависит от состояния верхнего уровня, например, от состояния TCP или SCTP. Отчасти это объясняется тем, что при простой пересылке пакетов, т.е. без локальной доставки, механизм TCP может быть вообще не задействован. Эвристика для таких протоколов часто основана на заданном значении тайм-аута бездействия, по истечении которого соединение Netfilter разрывается.

Каждое соединение Netfilter однозначно идентифицируется кортежем (протокол третьего уровня, адрес источника, адрес назначения, протокол четвертого уровня, ключ четвертого уровня). Ключ уровня-4 зависит от транспортного протокола; для TCP/UDP это номера портов, для туннелей это может быть их туннельный идентификатор, но в остальных случаях он равен нулю, как если бы он не был частью кортежа. Для того чтобы во всех случаях можно было проверить TCP-порт, пакеты будут в обязательном порядке подвергаться дефрагментации.

Для синхронизации трафика можно использовать как Многоадресную (Multicast), так и Одноадресную (Unicast) рассылки. В большинстве приведенных ниже примеров используется Multicast, но можно указать и unicast, используя ключ peer после конкретного интерфейса, как в следующем примере:

set service conntrack-sync interface eth0 peer 192.168.0.250

Состояние отслеживания соединений и синхронизации отображают команды режима «Администрирование»:

  • команды show conntrack table ipv4 и show conntrack table ipv6 выводят таблицу соединений ядра Linux для IPv4 и IPv6: идентификатор соединения, адреса и порты исходного и ответного направлений, протокол, состояние, оставшееся время жизни записи, метку и зону;

  • команда show conntrack statistics выводит статистику таблицы соединений по каждому процессору: число найденных, недопустимых, добавленных и отброшенных записей, ошибки добавления и ошибки обработки;

  • команды show conntrack-sync cache internal и show conntrack-sync cache external выводят внутренний кэш (соединения этого маршрутизатора) и внешний кэш (соединения, полученные от других участников синхронизации);

  • команды с ключевым словом main выводят записи основной таблицы соединений, с ключевым словом expect — записи таблицы ожидаемых соединений. Таблица ожидаемых соединений синхронизируется, если задан параметр service conntrack-sync expect-sync;

  • команды show conntrack-sync statistics и show conntrack-sync status выводят статистику синхронизации и текущее состояние службы.

Если служба синхронизации не настроена, команды show conntrack-sync cache … выводят сообщение conntrack-sync is not configured!.

Команды show conntrack … отображают таблицу соединений ядра Linux. Соединения трафика, который пересылает FVE, в нее не попадают (см. Ограничения).

Команда reset conntrack удаляет все отслеживаемые и ожидаемые соединения из таблицы соединений ядра Linux; перед удалением она запрашивает подтверждение. Записи соединений трафика, который пересылает FVE, эта команда не затрагивает (см. Ограничения). Команда доступна только пользователю уровня «Администратор» (см. Уровни пользователей).

Кэши службы синхронизации сбрасывают команды reset conntrack-sync internal-cache и reset conntrack-sync external-cache. Команда reset conntrack-sync internal-cache очищает внутренний кэш, заново заполняет его из таблицы соединений и отправляет его содержимое другим участникам синхронизации. Команда reset conntrack-sync external-cache очищает внешний кэш и запрашивает у других участников повторную синхронизацию. Если служба синхронизации не настроена, команды выводят сообщение conntrack-sync is not configured!. Команды доступны только пользователю уровня «Администратор» (см. Уровни пользователей).

Команда restart conntrack-sync перезапускает службу синхронизации соединений. После перезапуска служба запрашивает у других участников повторную синхронизацию и отправляет им содержимое внутреннего кэша. Во время фиксации конфигурации перезапуск не выполняется. Команда доступна только пользователю уровня «Администратор» (см. Уровни пользователей).

Пример настройки

Следующий пример представляет собой простую настройку службы отслеживания состояния между двумя маршрутизаторами, объединенными в группу VRRP internal и синхронную группу VRRP syncgrp (см. VRRP и Синхронные группы). Приведенные команды выполняются одинаково на 1-ом и 2-ом маршрутизаторах.

Шаг

Команда

Описание

1

set high-availability vrrp group internal address 192.0.2.1/24

Задает виртуальный адрес 192.0.2.1/24 группы VRRP internal

2

set high-availability vrrp sync-group syncgrp member internal

Добавляет группу VRRP internal в синхронную группу syncgrp

3

set service conntrack-sync accept-protocol tcp

Синхронизирует локальные записи протокола tcp

4

set service conntrack-sync accept-protocol udp

Синхронизирует локальные записи протокола udp

5

set service conntrack-sync accept-protocol icmp

Синхронизирует локальные записи протокола icmp

6

set service conntrack-sync failover-mechanism vrrp sync-group syncgrp

Задает синхронную группу VRRP syncgrp в качестве механизма отказоустойчивости

7

set service conntrack-sync interface eth0

Определяет интерфейс eth0, используемый для синхронизации записей

8

set service conntrack-sync mcast-group 225.0.0.50

Задает адрес группы многоадресной рассылки 225.0.0.50

На основном маршрутизаторе информация о состоянии активных соединений представлена во внутреннем кэше таблицы conntrack-sync. Такое же количество активных соединений должно присутствовать во внешнем кэше таблицы conntrack-sync резервного маршрутизатора. Для получения информации о количестве активных соединений используется команда show conntrack-sync statistics.

Проверка состояния активных соединений на основном маршрутизаторе:

$ show conntrack-sync statistics

Main Table Statistics:

cache internal:
current active connections:               10
connections created:                    8517    failed:            0
connections updated:                     127    failed:            0
connections destroyed:                  8507    failed:            0

cache external:
current active connections:                0
connections created:                       0    failed:            0
connections updated:                       0    failed:            0
connections destroyed:                     0    failed:            0

traffic processed:
                   0 Bytes                         0 Pckts

multicast traffic (active device=eth0):
              868780 Bytes sent               224136 Bytes recv
               20595 Pckts sent                14034 Pckts recv
                   0 Error send                    0 Error recv

message tracking:
                   0 Malformed msgs                    0 Lost msgs

Проверка состояния активных соединений на резервном маршрутизаторе:

$ show conntrack-sync statistics

Main Table Statistics:

cache internal:
current active connections:                0
connections created:                       0    failed:            0
connections updated:                       0    failed:            0
connections destroyed:                     0    failed:            0

cache external:
current active connections:               10
connections created:                     888    failed:            0
connections updated:                     134    failed:            0
connections destroyed:                   878    failed:            0

traffic processed:
                   0 Bytes                         0 Pckts

multicast traffic (active device=eth0):
              234184 Bytes sent               907504 Bytes recv
               14663 Pckts sent                21495 Pckts recv
                   0 Error send                    0 Error recv

message tracking:
                   0 Malformed msgs                    0 Lost msgs

Список команд


Режим «Конфигурирование»


service conntrack-sync accept-protocol <accept-protocol>

Описание:
Определяет протокол <accept-protocol>, для которого будут синхронизироваться локальные записи службы отслеживания состояния.

Синтаксис:

  • set service conntrack-sync accept-protocol <accept-protocol>

  • delete service conntrack-sync accept-protocol <accept-protocol>

  • show service conntrack-sync accept-protocol

Аргументы:

  • Возможные значения: tcp, udp, icmp, icmp6, sctp, dccp. Можно задать несколько значений.

Режим: «Конфигурирование».


service conntrack-sync event-listen-queue-size <event-listen-queue-size>

Описание:
Задает максимальный размер очереди для локальных событий службы отслеживания состояния, который может быть достигнут. Значение задается в мегабайтах.

Синтаксис:

  • set service conntrack-sync event-listen-queue-size <event-listen-queue-size>

  • delete service conntrack-sync event-listen-queue-size <event-listen-queue-size>

  • show service conntrack-sync event-listen-queue-size

Аргументы:

  • <event-listen-queue-size> — размер очереди в мегабайтах. Формат: целое число. Значение по умолчанию: 8.

Режим: «Конфигурирование».


service conntrack-sync expect-sync <expect-sync>

Описание:
Определяет протокол <expect-sync>, для которого необходимо синхронизировать записи ожиданий.

Синтаксис:

  • set service conntrack-sync expect-sync <expect-sync>

  • delete service conntrack-sync expect-sync <expect-sync>

  • show service conntrack-sync expect-sync

Аргументы:

  • Возможные значения: all, ftp, h323, nfs, sip, sqlnet. Можно задать несколько значений.

Режим: «Конфигурирование».


service conntrack-sync failover-mechanism vrrp sync-group <sync-group>

Описание:
Активирует механизм отказоустойчивости, используемый для службы отслеживания состояния. Поддерживается только протокол VRRP.

Синтаксис:

  • set service conntrack-sync failover-mechanism vrrp sync-group <sync-group>

  • delete service conntrack-sync failover-mechanism vrrp sync-group <sync-group>

  • show service conntrack-sync failover-mechanism vrrp sync-group

Аргументы:

  • <sync-group> — имя синхронной группы VRRP.

Режим: «Конфигурирование».


service conntrack-sync ignore-address <ignore-address>

Описание:
Задает IP-адрес или подсеть <ignore-address>, для которых локальные записи службы отслеживания состояния не будут синхронизироваться.

Синтаксис:

  • set service conntrack-sync ignore-address <ignore-address>

  • delete service conntrack-sync ignore-address <ignore-address>

  • show service conntrack-sync ignore-address

Аргументы:

  • <ignore-address> — IP-адрес или подсеть. Формат: IPv4-адрес (x.x.x.x), IPv4-префикс (x.x.x.x/x), IPv6-адрес (h:h:h:h:h:h:h:h) или IPv6-префикс (h:h:h:h:h:h:h:h/x). Можно задать несколько значений.

Режим: «Конфигурирование».


service conntrack-sync interface <interface>

Описание:
Определяет интерфейс <interface>, используемый для синхронизации записей службы отслеживания состояния.

Синтаксис:

  • set service conntrack-sync interface <interface>

  • delete service conntrack-sync interface <interface>

  • show service conntrack-sync interface

Аргументы:

  • <interface> — имя интерфейса.

Режим: «Конфигурирование».


service conntrack-sync interface <interface> port <port>

Описание:
Задает номер порта <port> для интерфейса <interface>, используемого для синхронизации записей службы отслеживания состояния.

Синтаксис:

  • set service conntrack-sync interface <interface> port <port>

  • delete service conntrack-sync interface <interface> port <port>

  • show service conntrack-sync interface <interface> port

Аргументы:

  • <interface> — имя интерфейса;

  • <port> — номер порта. Формат: целое число. Диапазон значений: от 1 до 65535.

Режим: «Конфигурирование».


service conntrack-sync listen-address <listen-address>

Описание:
Задает локальный IPv4-адрес <listen-address> прослушивания входящих соединений для службы отслеживания состояния.

Синтаксис:

  • set service conntrack-sync listen-address <listen-address>

  • delete service conntrack-sync listen-address <listen-address>

  • show service conntrack-sync listen-address

Аргументы:

  • <listen-address> — IPv4-адрес. Формат: IPv4-адрес (x.x.x.x). Можно задать несколько значений.

Режим: «Конфигурирование».


service conntrack-sync mcast-group <mcast-group>

Описание:
Задает адрес для группы многоадресной рассылки <mcast-group>, используемой для синхронизации записей службы отслеживания состояния. По умолчанию используется адрес 225.0.0.50.

Синтаксис:

  • set service conntrack-sync mcast-group <mcast-group>

  • delete service conntrack-sync mcast-group <mcast-group>

  • show service conntrack-sync mcast-group

Аргументы:

  • <mcast-group> — адрес группы многоадресной рассылки. Значение по умолчанию: 225.0.0.50.

Режим: «Конфигурирование».


service conntrack-sync interface <interface> peer <peer>

Описание:
Задает адрес узла <peer> отправки одноадресных UDP-сообщений для интерфейса <interface>, используемого для службы отслеживания состояния, если не используется конфигурация многоадресной рассылки, описанная выше.

Синтаксис:

  • set service conntrack-sync interface <interface> peer <peer>

  • delete service conntrack-sync interface <interface> peer <peer>

  • show service conntrack-sync interface <interface> peer

Аргументы:

  • <interface> — имя интерфейса;

  • <peer> — IP-адрес узла для отправки одноадресных сообщений. Формат: IPv4-адрес (x.x.x.x).

Режим: «Конфигурирование».


service conntrack-sync sync-queue-size <sync-queue-size>

Описание:
Задает размер очереди <sync-queue-size> для синхронизации записей системы отслеживания состояния. Значение задается в мегабайтах.

Синтаксис:

  • set service conntrack-sync sync-queue-size <sync-queue-size>

  • delete service conntrack-sync sync-queue-size <sync-queue-size>

  • show service conntrack-sync sync-queue-size

Аргументы:

  • <sync-queue-size> — размер очереди в мегабайтах. Формат: целое число. Значение по умолчанию: 1.

Режим: «Конфигурирование».


service conntrack-sync disable-external-cache

Описание:
Отключает внешний кэш и напрямую передает состояния потока в систему отслеживания соединений в ядро резервного межсетевого экрана.

Синтаксис:

  • set service conntrack-sync disable-external-cache

  • delete service conntrack-sync disable-external-cache

  • show service conntrack-sync disable-external-cache

Режим: «Конфигурирование».


Режим «Администрирование»


conntrack table ipv4

Описание:
Выводит таблицу системы отслеживания состояния для протокола IPv4. Команда отображает состояние ядра Linux, а не FVE (см. Ограничения).

Синтаксис:

  • show conntrack table ipv4

Пример работы команды show conntrack table ipv4:

fakel@fakel:~$ show conntrack table ipv4

TCP state codes: SS - SYN SENT, SR - SYN RECEIVED, ES - ESTABLISHED,
                 FW - FIN WAIT, CW - CLOSE WAIT, LA - LAST ACK,
                 TW - TIME WAIT, CL - CLOSE, LI - LISTEN

CONN ID    Source                 Destination            Protocol         TIMEOUT
1015736576 10.35.100.87:58172     172.31.20.12:22        tcp [6] ES       430279
1006235648 10.35.101.221:57483    172.31.120.21:22       tcp [6] ES       413310
1006237088 10.100.68.100          172.31.120.21          icmp [1]         29
1015734848 10.35.100.87:56282     172.31.20.12:22        tcp [6] ES       300
1015734272 172.31.20.12:60286     239.10.10.14:694       udp [17]         29
1006239392 10.35.101.221          172.31.120.21          icmp [1]         29

Примечание

Если в таблице отсутствуют записи об активных соединениях и выдается предупреждение, значит, система отслеживания состояния не включена. Чтобы включить систему отслеживания состояния, достаточно создать правило трансляции NAT или правило межсетевого экрана.

Режим: «Администрирование».


conntrack table ipv6

Описание:
Выводит таблицу системы отслеживания состояния для протокола IPv6. Команда отображает состояние ядра Linux, а не FVE (см. Ограничения).

Синтаксис:

  • show conntrack table ipv6

Режим: «Администрирование».


conntrack statistics

Описание:
Выводит статистику таблицы соединений системы отслеживания состояния по каждому процессору. Команда отображает состояние ядра Linux, а не FVE (см. Ограничения).

Синтаксис:

  • show conntrack statistics

Режим: «Администрирование».


conntrack-sync cache external

Описание:
Выводит записи внешнего кэша синхронизации соединений системы отслеживания состояния.

Синтаксис:

  • show conntrack-sync cache external

Режим: «Администрирование».


conntrack-sync cache external main

Описание:
Выводит записи основной таблицы соединений внешнего кэша синхронизации.

Синтаксис:

  • show conntrack-sync cache external main

Режим: «Администрирование».


conntrack-sync cache external expect

Описание:
Выводит записи таблицы ожидаемых соединений внешнего кэша синхронизации.

Синтаксис:

  • show conntrack-sync cache external expect

Режим: «Администрирование».


conntrack-sync cache internal

Описание:
Выводит записи внутреннего кэша синхронизации соединений системы отслеживания состояния.

Синтаксис:

  • show conntrack-sync cache internal

Режим: «Администрирование».


conntrack-sync cache internal main

Описание:
Выводит записи основной таблицы соединений внутреннего кэша синхронизации.

Синтаксис:

  • show conntrack-sync cache internal main

Режим: «Администрирование».


conntrack-sync cache internal expect

Описание:
Выводит записи таблицы ожидаемых соединений внутреннего кэша синхронизации.

Синтаксис:

  • show conntrack-sync cache internal expect

Режим: «Администрирование».


conntrack-sync statistics

Описание:
Выводит актуальную статистику системы отслеживания соединений.

Синтаксис:

  • show conntrack-sync statistics

Пример работы команды show conntrack-sync statistics:

fakel@fakel:~$ show conntrack-sync statistics

Main Table Statistics:

cache internal:
current active connections:            19606
connections created:                 6298470    failed:            0
connections updated:                 3786793    failed:            0
connections destroyed:               6278864    failed:            0

cache external:
current active connections:            15771
connections created:                 1660193    failed:            0
connections updated:                   77204    failed:            0
connections destroyed:               1644422    failed:            0

traffic processed:
                   0 Bytes                         0 Pckts

multicast traffic (active device=eth0.5):
           976826240 Bytes sent            212898000 Bytes recv
             8302333 Pckts sent              2009929 Pckts recv
                   0 Error send                    0 Error recv

message tracking:
                   0 Malformed msgs                  263 Lost msgs

Режим: «Администрирование».


conntrack-sync status

Описание:
Выводит информацию об актуальном состоянии системы отслеживания соединений.

Синтаксис:

  • show conntrack-sync status

Пример работы команды show conntrack-sync status:

fakel@fakel:~$ show conntrack-sync status

sync-interface        : eth0.5
failover-mechanism    : vrrp [sync-group GEFOEKOM]
last state transition : no transition yet!
ExpectationSync       : disabled

Режим: «Администрирование».


reset conntrack

Описание:
Удаляет все отслеживаемые и ожидаемые соединения из таблицы соединений. Перед удалением команда выводит предупреждение This will clear all currently tracked and expected connections. Continue? и запрашивает подтверждение. Команда очищает таблицу соединений ядра Linux, а не FVE (см. Ограничения).

Синтаксис:

  • reset conntrack

Режим: «Администрирование».

Уровень привилегий: «Администратор».


reset conntrack-sync internal-cache

Описание:
Очищает внутренний кэш службы синхронизации соединений, заново заполняет его из таблицы соединений и отправляет его содержимое другим участникам синхронизации.

Синтаксис:

  • reset conntrack-sync internal-cache

Режим: «Администрирование».

Уровень привилегий: «Администратор».


reset conntrack-sync external-cache

Описание:
Очищает внешний кэш службы синхронизации соединений и запрашивает у других участников повторную синхронизацию.

Синтаксис:

  • reset conntrack-sync external-cache

Режим: «Администрирование».

Уровень привилегий: «Администратор».


restart conntrack-sync

Описание:
Перезапускает службу синхронизации соединений, запрашивает у других участников повторную синхронизацию и отправляет им содержимое внутреннего кэша. Если служба не настроена, команда выводит сообщение conntrack-sync is not configured!. Во время фиксации конфигурации перезапуск не выполняется.

Синтаксис:

  • restart conntrack-sync

Режим: «Администрирование».

Уровень привилегий: «Администратор».