The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Как увеличить размер таблицы контроля сессий ip_conntrack в Linux"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Второй уровень иерархии тем в форуме реализован через вкладку "Показ ключевых тем".
. "Как увеличить размер таблицы контроля сессий ip_conntrack в ..." +/
Сообщение от tratatalschik (?), 15-Янв-08, 21:54 
Только ногами не бейте: нужно было быстро, а как паттерн работает я последний раз помнил года 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 " ==============================================="
  }
}
# и досюда

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Раздел полезных советов: Как увеличить размер таблицы контроля сессий ip_conntrack в Linux, auto_tips, 10-Мрт-06, 16:21  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру