Zrobiłem następujące ustawienia:
insmod ipt_limit
echo 10000 > /proc/sys/net/ipv4/ip_conntrack_max
iptables -A net_connlimit -s 192.168.2.60/31 -p tcp -m connlimit --connlimit-above 50 -j DROP
iptables -A net_connlimit -s 192.168.2.60/31 -p udp -m limit --limit 5/sec --limit-burst 10 -j ACCEPT
iptables -A net_connlimit -s 192.168.2.60/31 -p udp -j DROP
iptables -I FORWARD 1 -j net_connlimit
Zastanawiają mnie jednak 2 sprawy:
1. Fragmentacja pakietów UDP. Czy przypadkiem nie powinno być tak?
iptables -A net_connlimit -s 192.168.2.60/31 -p udp -m state --state NEW -m limit --limit 5/sec --limit-burst 10 -j ACCEPT
Bo przecież iptables filtruje pakiety, a nie połączenia. Więc jeśli jest przesyłanych dużo danych, to dzielone są one na kilka pakietów. Jeśli będzie to ponad 10 pakietów w czasie poniżej 5 sekund, to pakiety 11 i pozostałe zostaną odrzucone, mimo że jest to nadal 1 połączenie.
Mam rację czy czegoś nie rozumiem?
2. Czas życia połączenia TCP. Od czego on zależy? Co kończy dane połączenie TCP? Regóła ustawia limit połączeń na 50. Więc jeśli połączenie będzie trwało bardzo długo i będzie ich 50, to żadne nowe połączenie TCP nie zostanie nawiązane.
Znalazłem w ustawieniach coś takiego:
TCP Established Timeout: 86400
jeśli ta wartość jest w sekundach i dotyczy to właśnie czasu życia połączenia, to 51 połączenie będzie możliwe dopero po 24 godzinach. Czyli w tym czasie czały ruch będzie zblokowany.
Bardzo proszę o komentaż.
pozdrawiam jkdobro