MikroTik Log: failed to create NAT translation: memory exhausted — Решение
В системном журнале фиксируется критическая ошибка firewall,error: failed to create NAT translation: memory exhausted или nat table full.
- Полная или частичная недоступность интернета для всех локальных пользователей.
- Новые исходящие соединения (TCP SYN / UDP) отбрасываются маршрутизатором.
- Текущие установленные сессии (например, работающие звонки или терминалы) могут продолжать функционировать.
- В меню
/ip firewall connection trackingзначениеtotal-entriesдостигает предельного значенияmax-entries.
1. Причины исчерпания памяти NAT
Сбой происходит в двух ситуациях:
- Аппаратное исчерпание RAM: в устройстве физически закончилась оперативная память для создания новых структур
ip_conntrack. - Исчерпание пула портов SNAT: все 64512 динамических исходящих портов (src-port) на одном внешнем IP-адресе заняты активными сессиями.
2. Диагностика таблицы отслеживания соединений
Проверьте текущую заполненность таблицы:
/ip firewall connection tracking printПроверьте баланс свободной оперативной памяти устройства:
/system resource print3. Очистка неактивных соединений и снижение таймаутов
Сократите время жизни TCP и UDP сессий по умолчанию, чтобы освободить место в RAM:
/ip firewall connection tracking set enabled=yes \
tcp-established-timeout=1h \
tcp-close-timeout=5s \
tcp-close-wait-timeout=5s \
tcp-time-wait-timeout=10s \
udp-timeout=10s \
udp-stream-timeout=1m \
generic-timeout=1m4. Включение механизма FastTrack (Разгрузка Conntrack)
FastTrack обходит глубокую обработку пакетов файрволом для установленных соединений, экономя до 80% ресурсов CPU и памяти:
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related comment="FastTrack" place-before=1
/ip firewall filter add chain=forward action=accept connection-state=established,related comment="Accept Established" place-before=25. Расширение пула внешних IP-адресов для NAT (CGNAT / Multi-IP)
Если у вас тысячи пользователей выходят через один IP, замените masquerade на пул src-nat с несколькими белыми адресами:
/ip firewall nat add chain=srcnat out-interface-list=WAN action=src-nat to-addresses=198.51.100.10-198.51.100.15 Частые вопросы (FAQ)
Сколько памяти занимает одно соединение в Conntrack RouterOS?
В зависимости от архитектуры CPU (MIPS, ARM, ARM64, TILE, x86) и версии ядра Linux, одна запись таблицы отслеживания соединений занимает от 256 до 512 байт оперативной памяти.
Почему masquerade опаснее, чем src-nat при высокой нагрузке?
Действие masquerade при каждом разрыве линка интерфейса полностью очищает всю таблицу соединений для данного интерфейса, вызывая пиковую нагрузку на CPU. src-nat работает стабильнее и поддерживает пулы из нескольких IP-адресов.
Как принудительно сбросить все текущие соединения?
Выполните команду в терминале: /ip firewall connection remove [find]. Будьте осторожны: это разорвет все активные сессии пользователей.
Можно ли отключить Connection Tracking на MikroTik?
Да, через /ip firewall connection tracking set enabled=no. Но это полностью отключит работу NAT, FastTrack и правил файрвола с connection-state (маршрутизатор превратится в чистый L3/L4 роутер без трансляции адресов).