Документация: ПО Факел — разрабатываемая версия
Отслеживание соединений¶
Обзор¶
Одной из важных функций, построенных на основе фреймворка 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 |
Задает виртуальный адрес |
2 |
set high-availability vrrp sync-group syncgrp member |
Добавляет группу VRRP |
3 |
set service conntrack-sync accept-protocol |
Синхронизирует локальные записи протокола |
4 |
set service conntrack-sync accept-protocol |
Синхронизирует локальные записи протокола |
5 |
set service conntrack-sync accept-protocol |
Синхронизирует локальные записи протокола |
6 |
set service conntrack-sync failover-mechanism vrrp sync-group |
Задает синхронную группу VRRP |
7 |
set service conntrack-sync interface |
Определяет интерфейс |
8 |
set service conntrack-sync mcast-group |
Задает адрес группы многоадресной рассылки |
На основном маршрутизаторе информация о состоянии активных соединений представлена во внутреннем кэше таблицы 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>¶
Синтаксис:
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>¶
<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>¶
<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¶
Синтаксис:
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¶
Синтаксис:
show conntrack table ipv6
Режим: «Администрирование».
conntrack statistics¶
Синтаксис:
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
Режим: «Администрирование».
Уровень привилегий: «Администратор».