Conntrack - Отслеживание соединений
Conntrack - Отслеживание соединений
Обзор
Connection Tracking (conntrack) - это подсистема ядра Linux, которая отслеживает состояние сетевых соединений, проходящих через VyOS. Эта функциональность является основой для:
- Stateful-файрволов - фильтрация пакетов на основе состояния соединения
- NAT (Network Address Translation) - трансляция сетевых адресов
- Load balancing - балансировка нагрузки
- QoS - управление качеством обслуживания
Conntrack автоматически активируется при настройке stateful-правил файрвола или NAT и ведет учет всех активных соединений в специальной таблице состояний.
Основные возможности
- Отслеживание TCP, UDP, ICMP и других протоколов
- Поддержка Application Layer Gateways (ALG) для сложных протоколов
- Гибкая настройка таймаутов для различных состояний соединений
- Возможность игнорирования отслеживания для определенного трафика
- Детальное логирование событий соединений
- Тонкая настройка производительности через параметры хеш-таблиц
Когда необходима настройка conntrack
- Высоконагруженные NAT-шлюзы - требуется увеличение размера таблицы соединений
- VoIP-шлюзы - необходима настройка SIP ALG и таймаутов UDP
- FTP-серверы - требуется активация FTP helper module
- Оптимизация памяти - снижение таймаутов для освобождения ресурсов
- Отладка проблем - включение логирования для диагностики
- Bypass conntrack - исключение определенного трафика из отслеживания
Архитектура conntrack
Таблица соединений
Conntrack хранит информацию о каждом отслеживаемом соединении в таблице, включая:
- Source IP/Port - исходящий адрес и порт
- Destination IP/Port - адрес и порт назначения
- Protocol - протокол (TCP, UDP, ICMP и т.д.)
- State - текущее состояние соединения
- Timeout - время до удаления записи
- Mark - метка для маршрутизации и QoS
- Helper - ассоциированный helper module (для FTP, SIP и т.д.)
Состояния TCP-соединений
Conntrack отслеживает следующие состояния TCP:
- SYN_SENT - отправлен SYN, ожидание SYN-ACK
- SYN_RECV - получен SYN, отправлен SYN-ACK
- ESTABLISHED - соединение установлено
- FIN_WAIT - инициирован FIN, ожидание закрытия
- CLOSE_WAIT - получен FIN, ожидание закрытия от приложения
- LAST_ACK - отправлен последний ACK
- TIME_WAIT - соединение закрыто, ожидание возможных повторов
- CLOSE - соединение полностью закрыто
Состояния UDP и других протоколов
Для протоколов без установления соединения:
- NEW - первый пакет соединения
- ESTABLISHED - ответный пакет получен
- UNREPLIED - ответ не получен в течение таймаута
Настройка размера таблицы соединений
Определение необходимого размера
Размер таблицы conntrack должен учитывать максимальное количество одновременных соединений. Формула оценки:
Table Size = (Expected Connections × 1.5) + Safety Margin
Факторы, влияющие на размер:
- Количество пользователей - среднее количество клиентов
- Тип трафика - HTTP/HTTPS (короткие соединения) vs SSH/VPN (долгие)
- NAT - каждое NAT-соединение занимает запись
- Таймауты - длинные таймауты = больше записей
Конфигурация размера таблицы
# Установка размера таблицы соединений (по умолчанию: 262144)
set system conntrack table-size '524288'
# Установка размера таблицы ожиданий (по умолчанию: 2048)
# Используется для helper modules (FTP, SIP и т.д.)
set system conntrack expect-table-size '4096'
# Установка размера хеш-таблицы (по умолчанию: 32768)
# Влияет на скорость поиска в таблице
set system conntrack hash-size '65536'
Рекомендации по размерам
Сценарий | Table Size | Hash Size | Expect Table |
---|---|---|---|
Малый офис (до 50 пользователей) | 65536 | 16384 | 1024 |
Средний офис (50-200 пользователей) | 262144 | 32768 | 2048 |
Крупный офис (200-1000 пользователей) | 524288 | 65536 | 4096 |
Дата-центр / ISP | 2097152+ | 262144+ | 8192+ |
Расчет требуемой памяти
Каждая запись conntrack занимает приблизительно 350 байт памяти:
Memory (MB) = (Table Size × 350) / 1048576
Примеры:
- 262144 записей = ~87 МБ
- 524288 записей = ~175 МБ
- 1048576 записей = ~350 МБ
- 2097152 записи = ~700 МБ
Убедитесь, что у маршрутизатора достаточно RAM для выбранного размера таблицы.
Настройка таймаутов
TCP таймауты
Conntrack поддерживает различные таймауты для каждого состояния TCP-соединения:
# Глобальные TCP настройки
set system conntrack tcp half-open-connections '512' # Макс. half-open соединений
set system conntrack tcp loose 'enable' # Отслеживание mid-stream соединений
set system conntrack tcp max-retrans '3' # Макс. попыток ретрансмиссии
# Таймауты для различных состояний TCP (в секундах)
set system conntrack timeout tcp close '10' # STATE: CLOSE
set system conntrack timeout tcp close-wait '60' # STATE: CLOSE_WAIT
set system conntrack timeout tcp established '432000' # STATE: ESTABLISHED (5 дней)
set system conntrack timeout tcp fin-wait '120' # STATE: FIN_WAIT
set system conntrack timeout tcp last-ack '30' # STATE: LAST_ACK
set system conntrack timeout tcp syn-recv '60' # STATE: SYN_RECV
set system conntrack timeout tcp syn-sent '120' # STATE: SYN_SENT
set system conntrack timeout tcp time-wait '120' # STATE: TIME_WAIT
UDP таймауты
# Таймауты UDP (в секундах)
set system conntrack timeout udp stream '180' # Двунаправленный UDP (ответ получен)
set system conntrack timeout udp other '30' # Однонаправленный UDP (ответа нет)
ICMP таймауты
# Таймаут ICMP (в секундах)
set system conntrack timeout icmp '30'
Generic таймауты
# Таймауты для других протоколов (в секундах)
set system conntrack timeout other '600' # Прочие протоколы
Оптимизация таймаутов для различных сценариев
Сценарий 1: Высоконагруженный HTTP/HTTPS прокси
# Уменьшение таймаутов для быстрого освобождения записей
set system conntrack timeout tcp close '5'
set system conntrack timeout tcp close-wait '30'
set system conntrack timeout tcp established '7200' # 2 часа вместо 5 дней
set system conntrack timeout tcp fin-wait '60'
set system conntrack timeout tcp last-ack '15'
set system conntrack timeout tcp time-wait '60'
Сценарий 2: VPN/SSH сервер с долгими соединениями
# Увеличение таймаутов для стабильных соединений
set system conntrack timeout tcp established '864000' # 10 дней
set system conntrack timeout tcp fin-wait '180'
set system conntrack timeout tcp time-wait '180'
Сценарий 3: VoIP/SIP сервер
# Оптимизация для UDP-трафика
set system conntrack timeout udp stream '300' # 5 минут для активных RTP потоков
set system conntrack timeout udp other '60' # 1 минута для SIP сигнализации
Helper Modules (ALG)
Helper modules (Application Layer Gateways) обеспечивают корректную работу сложных протоколов, которые:
- Открывают динамические порты
- Используют embedded IP-адреса в payload
- Требуют специальной обработки NAT
Доступные Helper Modules
По умолчанию все helper modules включены. Вы можете отключить ненужные для улучшения безопасности и производительности.
FTP Helper
# Отключение FTP helper (по умолчанию: включен)
set system conntrack modules ftp disable
# FTP helper обрабатывает:
# - Команду PORT для активного FTP
# - Команду PASV для пассивного FTP
# - Динамические data-соединения на портах >1024
Когда отключать: Если FTP не используется, отключите для безопасности.
H.323 Helper
# Отключение H.323 helper
set system conntrack modules h323 disable
# H.323 используется для:
# - VoIP (альтернатива SIP)
# - Видеоконференции
# - Динамические RTP/RTCP потоки
Когда отключать: Если не используется H.323 VoIP-оборудование.
NFS Helper
# Отключение NFS helper
set system conntrack modules nfs disable
# NFS helper поддерживает:
# - Network File System v3
# - Динамические RPC-порты
Когда отключать: Если NFS не используется в сети.
PPTP Helper
# Отключение PPTP helper
set system conntrack modules pptp disable
# PPTP helper обрабатывает:
# - GRE туннели для PPTP VPN
# - Control-соединения на порту 1723
Когда отключать: Если PPTP VPN не используется (рекомендуется использовать IPsec/WireGuard).
SIP Helper
# Отключение SIP helper
set system conntrack modules sip disable
# SIP helper обрабатывает:
# - SDP (Session Description Protocol) в SIP-сообщениях
# - Динамические RTP/RTCP порты для аудио/видео
# - NAT traversal для SIP
Когда отключать: Если VoIP не используется. ВАЖНО: Для корректной работы SIP через NAT helper должен быть включен.
SQLNet Helper
# Отключение SQLNet helper
set system conntrack modules sqlnet disable
# SQLNet используется для:
# - Oracle Database соединений
# - Динамические порты Oracle
Когда отключать: Если Oracle Database не используется.
TFTP Helper
# Отключение TFTP helper
set system conntrack modules tftp disable
# TFTP helper обрабатывает:
# - Trivial File Transfer Protocol
# - Динамические UDP-порты для передачи данных
Когда отключать: Если TFTP не используется (например, для загрузки конфигураций IP-телефонов).
Рекомендации по безопасности
Отключайте неиспользуемые helper modules:
# Минимальная конфигурация для типового офиса
set system conntrack modules ftp disable # Если FTP не используется
set system conntrack modules h323 disable # Если используется только SIP
set system conntrack modules nfs disable # Обычно не требуется
set system conntrack modules pptp disable # Используйте современные VPN
set system conntrack modules sqlnet disable # Если нет Oracle DB
set system conntrack modules tftp disable # Если не используется
# Оставить включенным только SIP (если используется VoIP)
# SIP helper включен по умолчанию
Правила игнорирования (Ignore Rules)
Ignore rules позволяют исключить определенный трафик из таблицы conntrack. Это полезно для:
- Высокопроизводительных серверов - исключение внутреннего трафика
- Снижения нагрузки - bypass conntrack для доверенного трафика
- Специфичных протоколов - трафик, не требующий отслеживания состояния
Синтаксис ignore rules
set system conntrack ignore rule <number>
Критерии фильтрации
Фильтрация по адресу назначения
# Игнорировать трафик к определенному IP
set system conntrack ignore rule 10 destination address '192.168.100.10'
# Игнорировать трафик к подсети
set system conntrack ignore rule 20 destination address '10.0.0.0/8'
Фильтрация по порту назначения
# Игнорировать трафик на порт 80
set system conntrack ignore rule 30 destination port '80'
# Игнорировать диапазон портов
set system conntrack ignore rule 40 destination port '8000-8999'
Фильтрация по исходящему адресу
# Игнорировать трафик от определенного IP
set system conntrack ignore rule 50 source address '192.168.1.100'
# Игнорировать трафик от подсети
set system conntrack ignore rule 60 source address '172.16.0.0/12'
Фильтрация по исходящему порту
# Игнорировать трафик с определенного порта
set system conntrack ignore rule 70 source port '53'
Фильтрация по протоколу
# Игнорировать весь ICMP трафик
set system conntrack ignore rule 80 protocol 'icmp'
# Игнорировать весь UDP трафик
set system conntrack ignore rule 90 protocol 'udp'
# Поддерживаемые протоколы: tcp, udp, icmp, all
Фильтрация по входящему интерфейсу
# Игнорировать трафик с интерфейса eth2
set system conntrack ignore rule 100 inbound-interface 'eth2'
Фильтрация по TCP флагам
# Игнорировать TCP-пакеты с установленным флагом SYN
set system conntrack ignore rule 110 protocol 'tcp'
set system conntrack ignore rule 110 tcp flags syn
Практические примеры
Пример 1: Игнорирование внутреннего DNS-трафика
# DNS-запросы между серверами не требуют conntrack
set system conntrack ignore rule 10 description 'Bypass internal DNS'
set system conntrack ignore rule 10 destination address '192.168.1.53'
set system conntrack ignore rule 10 destination port '53'
set system conntrack ignore rule 10 protocol 'udp'
Пример 2: Игнорирование мониторинга health checks
# Исключить health checks от load balancer
set system conntrack ignore rule 20 description 'Bypass load balancer health checks'
set system conntrack ignore rule 20 source address '10.0.1.10'
set system conntrack ignore rule 20 destination port '80,443'
set system conntrack ignore rule 20 protocol 'tcp'
Пример 3: Игнорирование трафика между доверенными серверами
# Bypass conntrack для трафика между backend серверами
set system conntrack ignore rule 30 description 'Bypass trusted backend network'
set system conntrack ignore rule 30 source address '10.10.0.0/24'
set system conntrack ignore rule 30 destination address '10.10.0.0/24'
Пример 4: Игнорирование высокочастотного syslog трафика
# Syslog трафик создает много коротких UDP соединений
set system conntrack ignore rule 40 description 'Bypass syslog traffic'
set system conntrack ignore rule 40 destination port '514'
set system conntrack ignore rule 40 protocol 'udp'
Важные замечания
- Порядок правил - правила применяются в порядке номеров
- Влияние на NAT - игнорируемый трафик не может использовать NAT
- Влияние на Firewall - stateful правила файрвола не работают для игнорируемого трафика
- Производительность - используйте осторожно, bypass conntrack может привести к проблемам безопасности
Логирование conntrack
Conntrack может логировать события соединений для отладки и аудита.
Типы событий
# Логирование новых соединений
set system conntrack log event new
# Логирование обновлений соединений
set system conntrack log event update
# Логирование уничтожения соединений
set system conntrack log event destroy
Фильтрация по протоколу
# Логировать только TCP события
set system conntrack log event new protocol 'tcp'
# Логировать только UDP события
set system conntrack log event update protocol 'udp'
# Логировать только ICMP события
set system conntrack log event destroy protocol 'icmp'
# Логировать прочие протоколы
set system conntrack log event new protocol 'other'
Настройка размера очереди
# Установить размер очереди логов (100-999999, по умолчанию: 0)
# Большая очередь предотвращает потерю логов при высокой нагрузке
set system conntrack log event new queue-size '10000'
Полная конфигурация логирования
# Детальное логирование TCP соединений
set system conntrack log event new
set system conntrack log event new protocol 'tcp'
set system conntrack log event new queue-size '10000'
set system conntrack log event destroy
set system conntrack log event destroy protocol 'tcp'
set system conntrack log event destroy queue-size '10000'
# Сохранение и применение
commit
save
Просмотр логов
# Просмотр логов conntrack в системных логах
show log conntrack
# Использование journalctl для фильтрации
journalctl -xe | grep conntrack
Рекомендации по логированию
- Production - логировать только критичные события (new для отладки)
- Development - можно включить все события для диагностики
- High-load - увеличьте queue-size для предотвращения потери логов
- Disk space - логирование создает большой объем данных, используйте rotation
Настройка кастомных таймаутов (Custom Timeouts)
Custom timeouts позволяют настроить специфичные таймауты для определенных подмножеств трафика на основе правил.
IPv4 Custom Timeouts
# Создание правила с кастомным таймаутом
set system conntrack timeout custom ipv4 rule <number>
Фильтрация по адресу назначения
# Применить таймауты для трафика к определенному адресу
set system conntrack timeout custom ipv4 rule 10 destination address '192.168.1.100'
Фильтрация по порту назначения
# Применить таймауты для трафика на определенный порт
set system conntrack timeout custom ipv4 rule 20 destination port '80'
Фильтрация по протоколу
# Применить таймауты для определенного протокола
set system conntrack timeout custom ipv4 rule 30 protocol 'tcp'
set system conntrack timeout custom ipv4 rule 30 protocol tcp close-wait '30'
set system conntrack timeout custom ipv4 rule 30 protocol tcp established '3600'
Фильтрация по исходящему адресу
# Применить таймауты для трафика от определенного адреса
set system conntrack timeout custom ipv4 rule 40 source address '10.0.0.0/8'
Фильтрация по исходящему порту
# Применить таймауты для трафика с определенного порта
set system conntrack timeout custom ipv4 rule 50 source port '5060'
IPv6 Custom Timeouts
# Создание правила с кастомным таймаутом для IPv6
set system conntrack timeout custom ipv6 rule <number>
# Синтаксис аналогичен IPv4
set system conntrack timeout custom ipv6 rule 10 destination address '2001:db8::1'
set system conntrack timeout custom ipv6 rule 10 protocol 'tcp'
set system conntrack timeout custom ipv6 rule 10 protocol tcp established '7200'
Практические примеры custom timeouts
Пример 1: Короткие таймауты для HTTP/HTTPS
# HTTP трафик обычно состоит из коротких соединений
set system conntrack timeout custom ipv4 rule 10 description 'Short timeouts for HTTP/HTTPS'
set system conntrack timeout custom ipv4 rule 10 destination port '80,443'
set system conntrack timeout custom ipv4 rule 10 protocol 'tcp'
set system conntrack timeout custom ipv4 rule 10 protocol tcp close-wait '15'
set system conntrack timeout custom ipv4 rule 10 protocol tcp established '1800'
set system conntrack timeout custom ipv4 rule 10 protocol tcp time-wait '30'
Пример 2: Длинные таймауты для SSH
# SSH соединения могут быть долгими и неактивными
set system conntrack timeout custom ipv4 rule 20 description 'Long timeouts for SSH'
set system conntrack timeout custom ipv4 rule 20 destination port '22'
set system conntrack timeout custom ipv4 rule 20 protocol 'tcp'
set system conntrack timeout custom ipv4 rule 20 protocol tcp established '86400' # 24 часа
Пример 3: Оптимизация для SIP/RTP
# SIP сигнализация (UDP)
set system conntrack timeout custom ipv4 rule 30 description 'SIP signaling'
set system conntrack timeout custom ipv4 rule 30 destination port '5060'
set system conntrack timeout custom ipv4 rule 30 protocol 'udp'
set system conntrack timeout custom ipv4 rule 30 protocol udp stream '180'
# RTP media (UDP)
set system conntrack timeout custom ipv4 rule 40 description 'RTP media streams'
set system conntrack timeout custom ipv4 rule 40 destination port '10000-20000'
set system conntrack timeout custom ipv4 rule 40 protocol 'udp'
set system conntrack timeout custom ipv4 rule 40 protocol udp stream '300'
Пример 4: Таймауты для конкретного сервера
# Особые таймауты для критичного сервера приложений
set system conntrack timeout custom ipv4 rule 50 description 'Application server timeouts'
set system conntrack timeout custom ipv4 rule 50 destination address '192.168.100.10'
set system conntrack timeout custom ipv4 rule 50 protocol 'tcp'
set system conntrack timeout custom ipv4 rule 50 protocol tcp established '14400' # 4 часа
set system conntrack timeout custom ipv4 rule 50 protocol tcp close-wait '60'
Yandex Cloud: Высокопроизводительный NAT Gateway
Сценарий
Развертывание NAT-шлюза в Yandex Cloud для обеспечения доступа в интернет для приватной подсети с множеством микросервисов. Требования:
- Поддержка до 100,000 одновременных соединений
- Оптимизация для короткоживущих HTTP/HTTPS соединений
- Минимальное потребление памяти
- Высокая производительность обработки пакетов
Топология
Internet (eth0: 192.0.2.10/24)
|
[VyOS NAT Gateway - Yandex Cloud Compute Instance]
|
Private Network (eth1: 10.128.0.1/24)
|
[Микросервисы: 10.128.0.10-254]
Полная конфигурация
# Базовая настройка интерфейсов
set interfaces ethernet eth0 address '192.0.2.10/24'
set interfaces ethernet eth0 description 'WAN - Yandex Cloud External Network'
set interfaces ethernet eth1 address '10.128.0.1/24'
set interfaces ethernet eth1 description 'LAN - Private Subnet'
# Настройка NAT
set nat source rule 100 description 'NAT for private network'
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '10.128.0.0/24'
set nat source rule 100 translation address 'masquerade'
# Оптимизация conntrack для высокой нагрузки
set system conntrack table-size '262144' # 256K соединений
set system conntrack hash-size '65536' # Ускорение поиска
set system conntrack expect-table-size '2048' # Стандартный размер
# Агрессивные таймауты для освобождения записей
set system conntrack timeout tcp close '5'
set system conntrack timeout tcp close-wait '30'
set system conntrack timeout tcp established '3600' # 1 час для HTTP
set system conntrack timeout tcp fin-wait '60'
set system conntrack timeout tcp last-ack '15'
set system conntrack timeout tcp syn-recv '30'
set system conntrack timeout tcp syn-sent '60'
set system conntrack timeout tcp time-wait '30'
# Короткие UDP таймауты
set system conntrack timeout udp stream '60'
set system conntrack timeout udp other '30'
# Отключение неиспользуемых helper modules
set system conntrack modules ftp disable
set system conntrack modules h323 disable
set system conntrack modules nfs disable
set system conntrack modules pptp disable
set system conntrack modules sip disable
set system conntrack modules sqlnet disable
set system conntrack modules tftp disable
# TCP параметры для высокой нагрузки
set system conntrack tcp half-open-connections '1024'
set system conntrack tcp loose 'enable'
set system conntrack tcp max-retrans '3'
# Игнорирование health checks от Yandex Cloud Load Balancer
set system conntrack ignore rule 10 description 'Bypass Yandex CLB health checks'
set system conntrack ignore rule 10 source address '198.18.235.0/24'
set system conntrack ignore rule 10 destination port '80,443'
set system conntrack ignore rule 10 protocol 'tcp'
# Firewall для WAN интерфейса
set firewall ipv4 name WAN_LOCAL default-action 'drop'
set firewall ipv4 name WAN_LOCAL rule 10 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 10 state established
set firewall ipv4 name WAN_LOCAL rule 10 state related
set firewall ipv4 name WAN_LOCAL rule 20 action 'drop'
set firewall ipv4 name WAN_LOCAL rule 20 state invalid
set firewall ipv4 name WAN_LOCAL rule 30 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 30 protocol 'icmp'
set firewall ipv4 input filter name 'WAN_LOCAL'
# Сохранение конфигурации
commit
save
Мониторинг и проверка
# Просмотр статистики conntrack
show conntrack statistics
# Текущее количество соединений
show conntrack table ipv4 | count
# Топ хостов по количеству соединений
conntrack -L -o extended | awk '{print $5}' | sort | uniq -c | sort -rn | head -20
# Проверка использования таблицы (процент заполнения)
echo "scale=2; $(cat /proc/sys/net/netfilter/nf_conntrack_count) * 100 / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc
# Мониторинг производительности NAT
show nat source statistics
# Проверка игнорируемых правил
show system conntrack ignore
Рекомендации для Yandex Cloud
- Instance Type - используйте инстансы с достаточным количеством RAM (минимум 4GB для 256K соединений)
- Network Performance - выбирайте инстансы с высокой пропускной способностью сети
- Placement Groups - для HA разместите несколько NAT-шлюзов в разных зонах доступности
- Cloud Monitoring - интегрируйте с Yandex Monitoring для отслеживания метрик conntrack
- Backup - регулярно сохраняйте конфигурацию в Yandex Object Storage
Troubleshooting в Yandex Cloud
# Проверка conntrack table full ошибок
dmesg | grep "nf_conntrack: table full"
# Проверка dropped packets
show interfaces ethernet eth0 statistics
# Проверка NAT translations
show nat source translations
# Проверка системных ресурсов
show system resources
VK Cloud: SIP ALG для VoIP-шлюза
Сценарий
Настройка VyOS в VK Cloud (Mail.ru Cloud Solutions) в качестве пограничного маршрутизатора для офиса с IP-телефонией. Требования:
- Поддержка SIP-регистраций от 50 IP-телефонов
- Корректная работа SIP ALG для NAT traversal
- Оптимизированные таймауты для RTP/RTCP потоков
- QoS для голосового трафика
- Отказоустойчивость при регистрации на внешнем SIP-провайдере
Топология
Internet (eth0: 95.163.248.10/24) - VK Cloud External Network
|
[VyOS SIP Gateway - VK Cloud Instance]
|
Office LAN (eth1: 192.168.1.1/24)
|
[IP-телефоны: 192.168.1.100-150]
|
SIP Provider: sip.provider.ru (UDP/5060, RTP/10000-20000)
Полная конфигурация
# Базовая настройка интерфейсов
set interfaces ethernet eth0 address '95.163.248.10/24'
set interfaces ethernet eth0 description 'WAN - VK Cloud External'
set interfaces ethernet eth1 address '192.168.1.1/24'
set interfaces ethernet eth1 description 'LAN - Office Network'
# Настройка DNS для резолвинга SIP-провайдера
set system name-server '8.8.8.8'
set system name-server '8.8.4.4'
# NAT для офисной сети
set nat source rule 100 description 'Office NAT'
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '192.168.1.0/24'
set nat source rule 100 translation address 'masquerade'
# Conntrack: увеличение таблицы для поддержки множественных RTP-потоков
# Каждый активный звонок = минимум 2 соединения (SIP + RTP)
# 50 телефонов × 4 соединения на звонок × 2 (запас) = ~400 соединений
set system conntrack table-size '65536'
set system conntrack hash-size '16384'
set system conntrack expect-table-size '4096' # Важно для SIP ALG!
# КРИТИЧНО: Включение SIP helper module для NAT traversal
# По умолчанию включен, явная проверка:
delete system conntrack modules sip disable # Убедиться, что НЕ отключен
# Включение других необходимых modules
delete system conntrack modules tftp disable # Для provisioning IP-телефонов
# Отключение неиспользуемых modules
set system conntrack modules ftp disable
set system conntrack modules h323 disable
set system conntrack modules nfs disable
set system conntrack modules pptp disable
set system conntrack modules sqlnet disable
# Оптимизация UDP таймаутов для VoIP
set system conntrack timeout udp stream '180' # 3 минуты для активных RTP
set system conntrack timeout udp other '60' # 1 минута для SIP
# TCP таймауты (для SIP over TCP, если используется)
set system conntrack timeout tcp established '7200' # 2 часа
# Кастомные таймауты для SIP сигнализации
set system conntrack timeout custom ipv4 rule 10 description 'SIP Signaling'
set system conntrack timeout custom ipv4 rule 10 destination port '5060'
set system conntrack timeout custom ipv4 rule 10 protocol 'udp'
set system conntrack timeout custom ipv4 rule 10 protocol udp stream '300' # 5 минут
set system conntrack timeout custom ipv4 rule 10 protocol udp other '120' # 2 минуты
# Кастомные таймауты для RTP media
set system conntrack timeout custom ipv4 rule 20 description 'RTP Media Streams'
set system conntrack timeout custom ipv4 rule 20 destination port '10000-20000'
set system conntrack timeout custom ipv4 rule 20 protocol 'udp'
set system conntrack timeout custom ipv4 rule 20 protocol udp stream '180' # 3 минуты
# Кастомные таймауты для исходящих RTP (от телефонов)
set system conntrack timeout custom ipv4 rule 30 description 'RTP from phones'
set system conntrack timeout custom ipv4 rule 30 source address '192.168.1.100-192.168.1.150'
set system conntrack timeout custom ipv4 rule 30 source port '10000-20000'
set system conntrack timeout custom ipv4 rule 30 protocol 'udp'
set system conntrack timeout custom ipv4 rule 30 protocol udp stream '180'
# Firewall: разрешить входящие SIP и RTP
set firewall ipv4 name WAN_LOCAL default-action 'drop'
set firewall ipv4 name WAN_LOCAL rule 10 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 10 state established
set firewall ipv4 name WAN_LOCAL rule 10 state related
set firewall ipv4 name WAN_LOCAL rule 20 action 'drop'
set firewall ipv4 name WAN_LOCAL rule 20 state invalid
# SIP входящие звонки (если используется)
set firewall ipv4 name WAN_LOCAL rule 100 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 100 description 'Allow SIP from provider'
set firewall ipv4 name WAN_LOCAL rule 100 destination port '5060'
set firewall ipv4 name WAN_LOCAL rule 100 protocol 'udp'
set firewall ipv4 name WAN_LOCAL rule 100 source address 'sip.provider.ru'
# RTP входящие медиа
set firewall ipv4 name WAN_LOCAL rule 110 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 110 description 'Allow RTP from provider'
set firewall ipv4 name WAN_LOCAL rule 110 destination port '10000-20000'
set firewall ipv4 name WAN_LOCAL rule 110 protocol 'udp'
set firewall ipv4 name WAN_LOCAL rule 110 source address 'sip.provider.ru'
# ICMP для диагностики
set firewall ipv4 name WAN_LOCAL rule 200 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 200 protocol 'icmp'
set firewall ipv4 input filter name 'WAN_LOCAL'
# QoS: приоритизация VoIP трафика (опционально)
set traffic-policy shaper OFFICE_SHAPER bandwidth '100mbit'
set traffic-policy shaper OFFICE_SHAPER default bandwidth '80%'
set traffic-policy shaper OFFICE_SHAPER default queue-type 'fair-queue'
# Высокий приоритет для VoIP
set traffic-policy shaper OFFICE_SHAPER class 10 description 'VoIP Traffic'
set traffic-policy shaper OFFICE_SHAPER class 10 bandwidth '20%'
set traffic-policy shaper OFFICE_SHAPER class 10 priority '1'
set traffic-policy shaper OFFICE_SHAPER class 10 match SIP ip dscp 'ef'
set traffic-policy shaper OFFICE_SHAPER class 10 match SIP ip protocol 'udp'
set traffic-policy shaper OFFICE_SHAPER class 10 match SIP ip destination port '5060'
set traffic-policy shaper OFFICE_SHAPER class 20 description 'RTP Media'
set traffic-policy shaper OFFICE_SHAPER class 20 bandwidth '20%'
set traffic-policy shaper OFFICE_SHAPER class 20 priority '2'
set traffic-policy shaper OFFICE_SHAPER class 20 match RTP ip protocol 'udp'
set traffic-policy shaper OFFICE_SHAPER class 20 match RTP ip destination port '10000-20000'
# Применение QoS на WAN интерфейс
set interfaces ethernet eth0 traffic-policy out 'OFFICE_SHAPER'
# Логирование для отладки SIP (временно)
set system conntrack log event new
set system conntrack log event new protocol 'udp'
set system conntrack log event new queue-size '5000'
# Сохранение
commit
save
Проверка работоспособности SIP
# Проверка, что SIP helper загружен
lsmod | grep nf_conntrack_sip
lsmod | grep nf_nat_sip
# Просмотр SIP-соединений в conntrack
conntrack -L -p udp --dport 5060
conntrack -L -p udp --dport 5061 # Если используется SIP TLS
# Просмотр RTP-соединений (expected connections от SIP helper)
conntrack -L -p udp | grep -E "10[0-9]{3}|1[1-9][0-9]{3}|20000"
# Проверка expect table (динамические RTP порты)
cat /proc/net/nf_conntrack_expect
# Статистика conntrack
show conntrack statistics
# Мониторинг в реальном времени
sudo conntrack -E -p udp
# Тест регистрации SIP (с IP-телефона)
# Проверить логи:
show log conntrack | match udp | match 5060
Диагностика проблем VoIP
Проблема: Звонок устанавливается, но нет аудио (one-way или no-way audio)
Причина: SIP ALG не обрабатывает SDP-сообщения, RTP-пакеты блокируются.
Решение:
# Проверить, что SIP helper включен
show system conntrack modules
# Если отключен, включить:
delete system conntrack modules sip disable
commit
save
# Перезагрузить conntrack modules
sudo rmmod nf_nat_sip
sudo rmmod nf_conntrack_sip
sudo modprobe nf_conntrack_sip
sudo modprobe nf_nat_sip
# Проверить expect table
cat /proc/net/nf_conntrack_expect
# Должны появляться записи при звонках
Проблема: Регистрация пропадает через 30-60 секунд
Причина: Слишком короткий UDP таймаут, SIP keep-alive не успевает обновить соединение.
Решение:
# Увеличить UDP таймауты
set system conntrack timeout udp stream '300'
set system conntrack timeout udp other '180'
# Или кастомный таймаут для SIP
set system conntrack timeout custom ipv4 rule 5 destination port '5060'
set system conntrack timeout custom ipv4 rule 5 protocol 'udp'
set system conntrack timeout custom ipv4 rule 5 protocol udp stream '600' # 10 минут
commit
save
# Настроить keep-alive на SIP-клиентах (обычно 60-90 секунд)
Проблема: RTP пакеты приходят с задержкой или пропадают
Причина: Conntrack table full или QoS проблемы.
Решение:
# Проверить заполненность таблицы
echo "scale=2; $(cat /proc/sys/net/netfilter/nf_conntrack_count) * 100 / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc
# Если >80%, увеличить размер
set system conntrack table-size '131072'
commit
# Проверить QoS статистику
show traffic-policy
show interfaces ethernet eth0 statistics
# Временно отключить QoS для теста
delete interfaces ethernet eth0 traffic-policy
commit
Рекомендации для VK Cloud
- Floating IP - используйте статический внешний IP для стабильной SIP-регистрации
- Security Groups - настройте правила для UDP 5060 и 10000-20000
- Bandwidth - выбирайте тарифы с гарантированной полосой для VoIP
- Monitoring - используйте VK Cloud мониторинг для отслеживания packet loss
- Backup Gateway - настройте второй VyOS инстанс для failover
Конфигурация IP-телефонов
Для корректной работы через NAT настройте на IP-телефонах:
SIP Server: sip.provider.ru
SIP Port: 5060
RTP Port Range: 10000-20000
NAT Traversal: STUN или Keep-Alive
Keep-Alive Interval: 60 seconds
DTMF Method: RFC2833
Codec: G.711 (a-law/u-law) или G.729
Команды верификации
Просмотр таблицы соединений
# Показать все соединения
show conntrack table ipv4
# Показать IPv6 соединения
show conntrack table ipv6
# Фильтрация по протоколу
conntrack -L -p tcp
conntrack -L -p udp
conntrack -L -p icmp
# Фильтрация по адресу источника
conntrack -L -s 192.168.1.100
# Фильтрация по адресу назначения
conntrack -L -d 8.8.8.8
# Фильтрация по порту
conntrack -L -p tcp --dport 443
conntrack -L -p tcp --sport 80
# Подсчет количества соединений
show conntrack table ipv4 | count
conntrack -L | wc -l
# Сортировка по IP-адресам
conntrack -L -o extended | awk '{print $5}' | sort | uniq -c | sort -rn
# Топ 20 хостов по количеству соединений
conntrack -L -o extended | awk '{print $5}' | sort | uniq -c | sort -rn | head -20
Статистика conntrack
# Общая статистика
show conntrack statistics
# Детальная статистика из /proc
cat /proc/net/stat/nf_conntrack
# Текущее использование таблицы
cat /proc/sys/net/netfilter/nf_conntrack_count
# Максимальный размер таблицы
cat /proc/sys/net/netfilter/nf_conntrack_max
# Процент заполнения таблицы
echo "scale=2; $(cat /proc/sys/net/netfilter/nf_conntrack_count) * 100 / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc
# Статистика по протоколам
conntrack -S
Мониторинг в реальном времени
# Отслеживание новых соединений
sudo conntrack -E
# Фильтр по типу события
sudo conntrack -E -e NEW # Только новые
sudo conntrack -E -e DESTROY # Только уничтожаемые
sudo conntrack -E -e UPDATE # Только обновления
# Фильтр по протоколу
sudo conntrack -E -p tcp
sudo conntrack -E -p udp
# Комбинированные фильтры
sudo conntrack -E -e NEW -p tcp --dport 80
Управление соединениями
# Удалить конкретное соединение
sudo conntrack -D -s 192.168.1.100 -p tcp --dport 80
# Удалить все соединения от IP
sudo conntrack -D -s 192.168.1.100
# Удалить все соединения (осторожно!)
sudo conntrack -F
# Обновить таймаут соединения
sudo conntrack -U -s 192.168.1.100 -p tcp --dport 22
Проверка helper modules
# Просмотр загруженных модулей conntrack
lsmod | grep nf_conntrack
# Проверка конкретных helper modules
lsmod | grep nf_conntrack_ftp
lsmod | grep nf_conntrack_sip
lsmod | grep nf_conntrack_tftp
lsmod | grep nf_conntrack_pptp
# Параметры модулей
cat /sys/module/nf_conntrack_*/parameters/*
Проверка expect table
# Показать expect table (используется helper modules)
cat /proc/net/nf_conntrack_expect
# Для SIP ALG здесь будут динамические RTP порты
# Для FTP здесь будут динамические data-соединения
Проверка ignore rules
# Показать настроенные ignore правила
show system conntrack ignore
# Проверить, игнорируется ли трафик (через iptables raw table)
sudo iptables -t raw -L -n -v
# Статистика по raw таблице
sudo iptables -t raw -L -n -v --line-numbers
Troubleshooting
Проблема: “nf_conntrack: table full, dropping packet”
Симптомы:
- В логах (
dmesg
) появляются сообщения “nf_conntrack: table full, dropping packet” - Пакеты дропаются
- Новые соединения не устанавливаются
Диагностика:
# Проверить текущее использование
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max
# Процент заполнения
echo "scale=2; $(cat /proc/sys/net/netfilter/nf_conntrack_count) * 100 / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc
# Проверить логи
dmesg | grep "nf_conntrack: table full"
show log | match "nf_conntrack"
Решение 1: Увеличение размера таблицы
# Увеличить table-size
set system conntrack table-size '524288' # Или больше, в зависимости от нагрузки
set system conntrack hash-size '131072' # hash-size = table-size / 4
commit
save
# Применится после перезагрузки или немедленно:
sudo sysctl -w net.netfilter.nf_conntrack_max=524288
Решение 2: Оптимизация таймаутов
# Уменьшить таймауты для более быстрого освобождения записей
set system conntrack timeout tcp established '3600' # Вместо 432000 (5 дней)
set system conntrack timeout tcp time-wait '30' # Вместо 120
set system conntrack timeout udp stream '60' # Вместо 180
commit
save
Решение 3: Использование ignore rules
# Исключить внутренний трафик, не требующий отслеживания
set system conntrack ignore rule 10 source address '10.0.0.0/8'
set system conntrack ignore rule 10 destination address '10.0.0.0/8'
commit
save
Проблема: Высокая нагрузка на CPU из-за conntrack
Симптомы:
- Высокий CPU usage в softirq
top
показывает высокий %si (software interrupts)- Производительность сети снижена
Диагностика:
# Проверить CPU usage
top
# Обратить внимание на %si
# Статистика conntrack
show conntrack statistics
# Количество соединений
cat /proc/sys/net/netfilter/nf_conntrack_count
Решение 1: Оптимизация hash-size
# Увеличить hash-size для ускорения поиска
# Рекомендация: hash-size = table-size / 4
set system conntrack hash-size '131072' # Для table-size 524288
commit
save
Решение 2: Использование ignore rules для доверенного трафика
# Bypass conntrack для внутреннего трафика
set system conntrack ignore rule 10 source address '192.168.0.0/16'
set system conntrack ignore rule 10 destination address '192.168.0.0/16'
commit
save
Решение 3: Отключение неиспользуемых helper modules
# Helper modules добавляют overhead
set system conntrack modules ftp disable
set system conntrack modules h323 disable
set system conntrack modules nfs disable
set system conntrack modules pptp disable
set system conntrack modules sqlnet disable
set system conntrack modules tftp disable
# Оставить только необходимые (например, SIP для VoIP)
commit
save
Проблема: SIP/VoIP не работает через NAT
Симптомы:
- SIP регистрация успешна, но нет аудио (one-way или no-way audio)
- RTP пакеты не проходят
- Звонки обрываются
Диагностика:
# Проверить, включен ли SIP helper
show system conntrack modules | match sip
# Проверить expect table (должны быть динамические RTP порты)
cat /proc/net/nf_conntrack_expect
# Мониторинг SIP соединений
conntrack -L -p udp --dport 5060
# Логирование для отладки
set system conntrack log event new
set system conntrack log event new protocol 'udp'
commit
show log conntrack | match 5060
Решение 1: Включение SIP helper
# Убедиться, что SIP helper НЕ отключен
delete system conntrack modules sip disable
commit
save
# Перезагрузить модули (если не помогло)
sudo rmmod nf_nat_sip
sudo rmmod nf_conntrack_sip
sudo modprobe nf_conntrack_sip
sudo modprobe nf_nat_sip
Решение 2: Увеличение expect-table-size
# SIP ALG использует expect table для динамических RTP портов
set system conntrack expect-table-size '4096'
commit
save
Решение 3: Настройка таймаутов UDP
# Увеличить UDP таймауты для стабильной регистрации
set system conntrack timeout udp stream '300'
set system conntrack timeout udp other '180'
# Кастомные таймауты для SIP/RTP
set system conntrack timeout custom ipv4 rule 10 destination port '5060'
set system conntrack timeout custom ipv4 rule 10 protocol 'udp'
set system conntrack timeout custom ipv4 rule 10 protocol udp stream '300'
set system conntrack timeout custom ipv4 rule 20 destination port '10000-20000'
set system conntrack timeout custom ipv4 rule 20 protocol 'udp'
set system conntrack timeout custom ipv4 rule 20 protocol udp stream '180'
commit
save
Решение 4: Firewall правила для RTP
# Разрешить RTP порты (обычно 10000-20000)
set firewall ipv4 name WAN_LOCAL rule 100 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 100 destination port '10000-20000'
set firewall ipv4 name WAN_LOCAL rule 100 protocol 'udp'
commit
save
Проблема: FTP не работает через NAT
Симптомы:
- FTP LIST команда висит
- Passive mode не работает
- Active mode не работает
Диагностика:
# Проверить FTP helper
show system conntrack modules | match ftp
lsmod | grep nf_conntrack_ftp
# Мониторинг FTP соединений
conntrack -L -p tcp --dport 21
# Expect table для FTP data-соединений
cat /proc/net/nf_conntrack_expect | grep ftp
Решение:
# Включить FTP helper
delete system conntrack modules ftp disable
commit
save
# Увеличить expect-table-size
set system conntrack expect-table-size '2048'
commit
save
# Firewall: разрешить FTP data connections (passive)
set firewall ipv4 name WAN_LOCAL rule 110 action 'accept'
set firewall ipv4 name WAN_LOCAL rule 110 destination port '1024-65535'
set firewall ipv4 name WAN_LOCAL rule 110 protocol 'tcp'
set firewall ipv4 name WAN_LOCAL rule 110 state related
commit
save
Проблема: Медленный поиск в conntrack table
Симптомы:
- Высокая latency
- Медленная обработка пакетов
- Статистика показывает много search restarts
Диагностика:
# Проверить статистику поиска
cat /proc/net/stat/nf_conntrack
# Колонка "search_restart" - количество перезапусков поиска
# Соотношение hash-size к table-size
echo "Current hash-size: $(cat /proc/sys/net/netfilter/nf_conntrack_buckets)"
echo "Current table-size: $(cat /proc/sys/net/netfilter/nf_conntrack_max)"
Решение:
# Увеличить hash-size (рекомендация: table-size / 4)
set system conntrack hash-size '131072' # Для table-size 524288
commit
save
# Применить немедленно (до перезагрузки)
sudo sysctl -w net.netfilter.nf_conntrack_buckets=131072
Best Practices
1. Sizing таблицы соединений
Оценка требований:
# Формула для расчета table-size:
# Table Size = (Peak Concurrent Connections × 1.5) + 10% safety margin
# Пример для 1000 пользователей:
# Среднее 20 соединений на пользователя = 20000
# Peak usage (×1.5) = 30000
# Safety margin (10%) = 33000
# Округление до степени 2: 65536
Соотношение параметров:
# Правило thumb:
# hash-size = table-size / 4
# expect-table-size = table-size / 128 (минимум 2048)
# Пример для table-size 524288:
set system conntrack table-size '524288'
set system conntrack hash-size '131072' # 524288 / 4
set system conntrack expect-table-size '4096' # 524288 / 128
2. Оптимизация таймаутов
HTTP/HTTPS сервисы (короткие соединения):
set system conntrack timeout tcp established '1800' # 30 минут
set system conntrack timeout tcp time-wait '30'
set system conntrack timeout tcp close-wait '30'
SSH/VPN сервисы (долгие соединения):
set system conntrack timeout tcp established '86400' # 24 часа
VoIP/Streaming (UDP):
set system conntrack timeout udp stream '300' # 5 минут
set system conntrack timeout udp other '60' # 1 минута
3. Helper Modules Management
Принцип минимальных привилегий:
# Отключить ВСЕ неиспользуемые helper modules
# Включать только то, что действительно необходимо
# Пример: Только SIP для VoIP офиса
set system conntrack modules ftp disable
set system conntrack modules h323 disable
set system conntrack modules nfs disable
set system conntrack modules pptp disable
set system conntrack modules sqlnet disable
set system conntrack modules tftp disable
# SIP остается включенным (по умолчанию)
Проверка после изменений:
# Проверить загруженные модули
lsmod | grep nf_conntrack
4. Использование Ignore Rules
Когда использовать:
- Внутренний трафик между доверенными серверами
- Health checks от load balancers
- Высокочастотный мониторинг (SNMP, syslog)
- Трафик, не требующий NAT или stateful filtering
Когда НЕ использовать:
- Трафик, проходящий через NAT
- Трафик, защищаемый stateful firewall
- Непредсказуемый или недоверенный трафик
Пример корректного использования:
# Backend серверы, общающиеся напрямую (без NAT)
set system conntrack ignore rule 10 source address '10.10.0.0/24'
set system conntrack ignore rule 10 destination address '10.10.0.0/24'
# Health checks от известного load balancer
set system conntrack ignore rule 20 source address '10.0.1.10'
set system conntrack ignore rule 20 destination port '80,443'
set system conntrack ignore rule 20 protocol 'tcp'
5. Мониторинг и Alerting
Критичные метрики:
# 1. Процент заполнения таблицы (alert если >80%)
echo "scale=2; $(cat /proc/sys/net/netfilter/nf_conntrack_count) * 100 / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc
# 2. Количество table full ошибок
dmesg | grep -c "nf_conntrack: table full"
# 3. Количество соединений по состояниям
conntrack -S
Автоматизация мониторинга:
# Скрипт для проверки (добавить в cron)
#!/bin/bash
CURRENT=$(cat /proc/sys/net/netfilter/nf_conntrack_count)
MAX=$(cat /proc/sys/net/netfilter/nf_conntrack_max)
PERCENT=$(echo "scale=2; $CURRENT * 100 / $MAX" | bc)
if (( $(echo "$PERCENT > 80" | bc -l) )); then
echo "WARNING: Conntrack table at ${PERCENT}% capacity"
# Отправить alert (email, telegram, etc.)
fi
6. Логирование
Production окружение:
# НЕ включать постоянное логирование на production
# Используйте только для временной отладки
# Для отладки конкретной проблемы:
set system conntrack log event new
set system conntrack log event new protocol 'tcp'
set system conntrack log event new queue-size '10000'
commit
# После отладки ОБЯЗАТЕЛЬНО отключить:
delete system conntrack log
commit
save
Development окружение:
# Можно включить более детальное логирование
set system conntrack log event new
set system conntrack log event update
set system conntrack log event destroy
commit
7. Performance Tuning
Для высоконагруженных систем:
# 1. Увеличить table и hash размеры
set system conntrack table-size '2097152'
set system conntrack hash-size '524288'
# 2. Агрессивные таймауты
set system conntrack timeout tcp established '3600'
set system conntrack timeout tcp time-wait '30'
set system conntrack timeout udp stream '60'
# 3. Отключить все неиспользуемые helpers
set system conntrack modules ftp disable
set system conntrack modules h323 disable
set system conntrack modules nfs disable
set system conntrack modules pptp disable
set system conntrack modules sip disable
set system conntrack modules sqlnet disable
set system conntrack modules tftp disable
# 4. Использовать ignore rules для внутреннего трафика
set system conntrack ignore rule 10 source address '10.0.0.0/8'
set system conntrack ignore rule 10 destination address '10.0.0.0/8'
# 5. TCP параметры
set system conntrack tcp half-open-connections '2048'
set system conntrack tcp loose 'enable'
set system conntrack tcp max-retrans '3'
commit
save
8. Безопасность
Защита от SYN flood:
# Ограничение half-open соединений
set system conntrack tcp half-open-connections '512'
set system conntrack tcp max-retrans '3'
Отключение loose tracking (если возможно):
# Loose tracking позволяет mid-stream соединения
# Отключите для большей безопасности (может сломать некоторые сценарии)
set system conntrack tcp loose 'disable'
Защита от conntrack table exhaustion:
# Firewall rate limiting для новых соединений
set firewall ipv4 name WAN_LOCAL rule 5 action 'drop'
set firewall ipv4 name WAN_LOCAL rule 5 recent count '100'
set firewall ipv4 name WAN_LOCAL rule 5 recent time '60'
set firewall ipv4 name WAN_LOCAL rule 5 state new
9. Документация конфигурации
Используйте description:
# Всегда документируйте настройки
set system conntrack timeout custom ipv4 rule 10 description 'Short timeout for HTTP/HTTPS'
set system conntrack ignore rule 10 description 'Bypass internal DNS traffic'
# Документируйте причины изменения значений по умолчанию
# (можно в комментариях к конфигурации или в отдельном файле)
10. Тестирование изменений
Процедура внесения изменений:
# 1. Сделать backup конфигурации
save /config/backup-$(date +%Y%m%d-%H%M%S).config
# 2. Применить изменения в configure mode
configure
set system conntrack table-size '524288'
commit
# 3. Проверить работоспособность
exit
show conntrack statistics
show conntrack table ipv4 | count
# 4. Мониторинг в течение 30-60 минут
# Проверить метрики, логи, производительность
# 5. Если все OK - сохранить
save
# 6. Если проблемы - откатить
load /config/backup-YYYYMMDD-HHMMSS.config
commit
save
Заключение
Connection Tracking (conntrack) является критически важным компонентом VyOS, обеспечивающим работу stateful firewall и NAT. Правильная настройка conntrack:
- Повышает производительность - оптимизация размера таблицы и таймаутов
- Экономит ресурсы - использование ignore rules для исключения ненужного трафика
- Обеспечивает стабильность - корректная работа сложных протоколов через helper modules
- Улучшает безопасность - отключение неиспользуемых modules и настройка параметров TCP
Ключевые рекомендации
- Sizing - рассчитывайте размер таблицы на основе реальной нагрузки с запасом
- Timeouts - настраивайте таймауты в соответствии с типом трафика
- Helpers - отключайте неиспользуемые helper modules
- Monitoring - регулярно проверяйте метрики и логи
- Testing - тестируйте изменения перед применением на production
Дополнительные ресурсы
- Официальная документация VyOS: https://docs.vyos.io/en/latest/configuration/system/conntrack.html
- Linux conntrack-tools: http://conntrack-tools.netfilter.org/
- Netfilter documentation: https://www.netfilter.org/documentation/
- VyOS Forum: https://forum.vyos.io/
Поддержка
Для получения профессиональной поддержки и консультаций по VyOS:
- Email: support@opennix.ru
- Telegram: @opennix_support
- Website: https://opennix.ru