Il 22.10.2013 10:17 Jaromil ha scritto:
[cut]
>
> qui parsiamo netstat ogni $sleep contando le connessioni aperte, se
> sono
> piu' di $connlimit le mettiamo in "blackhole" (che e' una roba
> built-in)
>
> while `sleep $sleep`; do
> conns=`netstat -ntau | tail -n+3 | awk '{print $5}' | cut -d: -f1 |
> sort | uniq -c`
> for c in ${(f)conns}; do
> ip=`print $c | awk '{print $2}'`
> nc=`print $c | awk '{print $1}'`
> { test "$ip" = "127.0.0.1" } && { continue }
> # altri ip in whitelist qui
>
> { test $nc -gt $connlimit } && {
> echo "$ip -> blackhole"
> echo "ip route add blackhole $ip"
> echo "$ip" >> blacklist-live.list
> ip route add blackhole $ip }
> done
> done
>
> questa roba non ha memoria
>
in questo caso hai comunque il kernel che deve capire se deve rispondere
o meno a un determinato IP, ma la richiesta t'e' arrivata e ti
continuera' ad arrivare. quello che fai e' non mandargli alcuna
risposta.
e' corretto o mi son perso un pezzo?
> ora a me piacerebbe fare la stessa cosa ma in C e con un sqlite che fa
> dei controlli sulle connessioni piu' raffinati e soprattutto tiene
> memoria tra un'avvio ed un altro.
>
sicuramente sarebbe un miglioramento nelle prestazioni e sulla
flessibilita'.
PS: chiaramente quando ho scritto il PS nella mail che ho mandato poco
fa non ha tenuto conto di questa :)
ciao
--
bisco