Сообщения net_ratelimit: X callbacks suppressed

Однажды обнаружил в журнале dmesg следующие сообщения:

nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
net_ratelimit: 10 callbacks suppressed
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
nf_conntrack: nf_conntrack: table full, dropping packet
net_ratelimit: 3 callbacks suppressed

Если записей в dmesg очень много, то можно записать их в файл и потом посмотреть:

dmesg -T
dmesg -T | less
dmesg -T > ixnfo.com.txt

Как видим я показал два сообщения:

net_ratelimit: 10 callbacks suppressed
net_ratelimit: 3 callbacks suppressed

Эти сообщения не являются ошибкой, а означают что несколько сообщений не были записаны, в моем примере 10 сообщений пропущено, а потом еще 3. Это механизм защити от флуда сообщениями, от атак типа «отказ в обслуживании», в моем случае была ddos атака типа NTP Amplification на NAT сервер и указанное ниже сообщение очень часто повторялось:

nf_conntrack: nf_conntrack: table full, dropping packet

Посмотрим параметры системы (на примере значения по умолчанию, которые означают, что за период в 5 секунд нельзя записать более 10 сообщений):

cat /proc/sys/net/core/message_cost
5
cat /proc/sys/net/core/message_burst
10

Пример изменения или отключения защиты, чем больше значение, тем меньше сообщений будет записано (но отключать не нужно, я не рекомендую отключать):

sysctl -w net.core.message_cost=8

echo "net.core.message_cost = 0" >> /etc/sysctl.conf
sysctl -p

Кстати в таблице conntrack было более 4 000 000 соединений, количество которых превысило указанный мной лимит, из-за этого и появились повторяющиеся сообщения.

Смотрите также мою статью:
Тюнинг nf_conntrack

Оставьте комментарий

Добавить комментарий