Только ногами не бейте: нужно было быстро, а как паттерн работает я последний раз помнил года 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 " ==============================================="
}
}
# и досюда