MikroTik Log: dns,error cache full, dropping oldest DNS records — Решение
Переполнение встроенного DNS кэша MikroTik и деградация производительности сетевых запросов:
dns,error cache full, dropping oldest DNS recordsdns,warning maximum cache size reached: <size> KiB- Всплеск задержек при открытии новых доменных имен клиентами.
- Повышенная утилизация оперативной памяти (RAM) процессом DNS.
1. Анализ текущего состояния и размера DNS кэша
Проверьте текущие настройки размера кэша и количество активных записей:
/ip dns print
/ip dns cache print count-only2. Увеличение объема оперативной памяти под DNS кэш
По умолчанию в базовой конфигурации выделяется небольшой размер кэша (2048 KiB). Для сетей с большим количеством пользователей увеличьте размер до 10–50 МБ (в зависимости от свободной RAM устройства):
/ip dns set cache-size=20480KiB cache-max-ttl=1d3. Очистка поврежденного или переполненного кэша
Сбросьте накопленные устаревшие записи:
/ip dns cache flush4. Проверка на аномальное количество уникальных запросов (DNS Flood)
Если кэш переполняется за секунды после очистки, возможно один из хостов в локальной сети заражен ботнетом и генерирует миллионы случайных доменов (Random Subdomain Attack / PRSD):
/ip dns cache print where type ~ "A|AAAA"Ограничьте частоту запросов DNS для клиентов через Firewall Connection Limit / Raw:
/ip firewall raw add chain=prerouting in-interface-list=LAN protocol=udp dst-port=53 connection-limit=50,32 action=drop comment="Rate-limit DNS Flood" Частые вопросы (FAQ)
К чему приводит постоянный сброс записей при cache full?
При переполнении кэша маршрутизатор принудительно удаляет старые записи (LRU алгоритм) до истечения их TTL, из-за чего клиенты вынуждены повторно запрашивать Upstream DNS, увеличивая внешний трафик и задержки.
Сколько памяти безопасно выделять под DNS кэш?
Не выделяйте более 10-15% от общего объема свободной оперативной памяти (/system resource print), чтобы избежать падения сервисов ядра из-за нехватки RAM.
Что такое параметр cache-max-ttl в MikroTik DNS?
Параметр cache-max-ttl ограничивает максимальное время жизни записи в локальном кэше независимо от того, какое значение TTL было передано авторитативным DNS-сервером зоны.
Как посмотреть конкретные домены, находящиеся в кэше?
Выполните команду: /ip dns cache print detail.