Если ядро ругается "kernel: ip_conntrack: table full, dropping packet.", причину флуда
(скорее всего вирус или сканирование портов) можно найти по списку /proc/net/ip_conntrack
Если просто общая загрузка большая, увеличить размер таблицы можно через /proc/sys/net/ipv4/ip_conntrack_maxТакже можно увеличить размерность хэша через параметр hashsize модуля ip_conntrack:
/etc/modules.conf:
options ip_conntrack hashsize=NБолее тонкий тюнинг можно произвести через переменные определенные в /proc/sys/net/ipv4/netfilter
URL:
Обсуждается: http://www.opennet.me/tips/info/985.shtml
On 128 MB of RAM you will get 8192 possible entries, and at 256 MB of RAM, you will get 16376 entries...
------------------
http://www.faqs.org/docs/iptables/theconntrackentries.html
-------------------
тоесть, если у меня 128мб (больше не предвидится)
и значение стоит 8184, но выскакивает
"kernel: ip_conntrack: table full, dropping packet."
то выхода нет ?
>тоесть, если у меня 128мб (больше не предвидится)
>и значение стоит 8184, но выскакивает
>"kernel: ip_conntrack: table full, dropping packet."
>то выхода нет ?Это значение выставляетмое по умолчанию, никто не мешает поставить через /proc/sys/net/ipv4/ip_conntrack_max больше, из расчета 360 байт на запись. У нас был сервер c 128Мб ОЗУ и ip_conntrack_max=40000.
Можно, пожалуйста, подробне про "причину флуда
(скорее всего вирус или сканирование портов) можно найти по списку /proc/net/ip_conntrack"?.
Какой алгоритм поиска засранца?
Только ногами не бейте: нужно было быстро, а как паттерн работает я последний раз помнил года 4 назад. ;) Вот, накалякал для общего удобства:cat /proc/net/ip_conntrack | awk -f /usr/sbin/conn_analiz | more
cat /proc/net/ip_conntrack | awk -f /usr/sbin/conn_analiz | grep "всего соединений"|moreа увидев кто нагреб больше всех (например 192.168.3.50), сделать вот так:
cat /proc/net/ip_conntrack | grep 192.168.3.50 | awk -f /usr/sbin/conn_analiz | more
нижеследующее загоняешь в какой-нить файл, например: /usr/sbin/conn_analiz и лепишь команду, что я нарисовал выше (можно в маски дорисовать клиентские подсети и свои адреса - может это тебя ддосом лупят).
# начинать катить отсюда
{
if ($4 ~ /^ESTABLISHED/) {
estableshed++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
est[ip]++
} else if ($4 ~ /^TIME_WAIT/) {
time_wait++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
t_wait[ip]++
} else if ($4 ~ /^SYN_SENT/) {
syn_sent++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
syn_s[ip]++
} else if ($4 ~ /^CLOSE_WAIT/) {
cl_w++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
} else {
iplist[ip]++
cl_wt[ip]++
} else if ($4 ~ /^CLOSE/) {
clouse++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
cls[ip]++
} else if ($4 ~ /^SYN_RECV/) {
syn_recv++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
syn_r[ip]++
} else if ($4 ~ /^LAST_ACK/) {
last_ack++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
lastask[ip]++
} else if ($4 ~ /^FIN_WAIT/) {
fin_wait++
src = substr($5,5)
dst = substr($6,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
fin_w[ip]++
} else if ($1 ~ /^udp/) {
udp++
src = substr($4,5)
dst = substr($5,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
udp_p[ip]++
} else if ($1 ~ /^icmp/) {
icmp++
src = substr($4,5)
dst = substr($5,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
icmp_p[ip]++
} else if ($1 ~ /^unknown/) {
unknown++
src = substr($4,5)
dst = substr($5,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
unkn[ip]++
} else if ($10 ~ /UNREPLIED/) {
unreplied++
src = substr($4,5)
dst = substr($5,5)
if (src ~ /^192.168|^10.10|^127.0/) {
ip=src
} else if (dst ~ /^192.168|^10.10|^127.0/) {
ip=dst
}
iplist[ip]++
unrep[ip]++
} else print "UNKNOWN!!!! ", $0
} END {
print "established=" estableshed
print "time_wait=" time_wait
print "syn_sent=" syn_sent
print "close_wait=" cl_w
print "close=" clouse
print "syn_recv=" syn_recv
print "last_ack=" last_ack
print "fin_wait=" fin_wait
print "udp=" udp
print "icmp=" icmp
print "unknown=" unknown
print "unreplied=" unreplied
print "assured=" assured
print "всего в таблице соединений = " NR
print " ==============================================="
print " ==============================================="
for (ip in iplist) {
print ip " всего соединений:" iplist[ip]
print "++++++++++++++++++++++++++++++++++++++++++++"
print "established=" est[ip] " time_wait=" t_wait[ip] " syn_sent=" syn_s[ip]
print "close_wait=" cl_wt[ip] " close=" cls[ip] " syn_recv=" syn_r[ip]
print "last_ack=" lastask[ip] " fin_wait=" fin_w[ip] " udp=" udp_p[ip]
print "icmp=" icmp_p[ip] " unknown=" unkn[ip] " unreplied=" unrep[ip]
print " ==============================================="
}
}
# и досюда
Помогите, не знаю где-куда и как подключить модуль
ядра на CentOserror: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent" is an unknown key