Temat: Ograniczenie ilości połączeń - OpenWrt WR 0.9

Witam,

W ostatnich dniach jeden z użytkowników sieci zaczął ostre zciąganie przy pomocy programu P2P. Efektem jest ciągłe pojawianie się w logach ostrzeżenia:
kern.warn kernel: ip_conntrack: table full, dropping packet.

Czy ograniczenie ilości połączeń za pomocą iptables rozwiąże problem?

Ograniczyłem ilość połączeń dla TCP stosując:

iptables -I FORWARD -s 192.168.2.60/31 -p tcp -m connlimit --connlimit-above 50 -j DROP

Zmniejszyła się radykalnie ilość połączeń TCP. Niestety nadal jest cała masa połączen UDP!!!!

Jak je ograniczyć?
Jakie ilości połączeń TCP i UDP są właściwe dla 1 usera?


pozdrawiam jkdobro

2

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

Generalnie tak, ale jeszcze ustaw dużą liczbe w /proc/sys/net/ipv4/ip_conntrack_max

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

Cezary napisał/a:

jeszcze ustaw dużą liczbe w /proc/sys/net/ipv4/ip_conntrack_max

W jaki sposób to ustawić, na jaką wartość i co to spowoduje?

Myślałem jeszcze o ograniczeniu dla UDP np:

iptables -I FORWARD -s 192.168.2.60/31 -p udp -m limit --limit 30/sec -j DROP

ale nie wiem dlaczego to nie chce pójść. Dostaje:

root@OpenWrt:~$ iptables -I FORWARD -s 192.168.2.60/31 -p udp -m limit --limit 30/sec -j DROP
iptables: No chain/target/match by that name

Co to oznacza?

4

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

ustawić w /proc/sys/net/ipv4/ip_conntrack_max np. za pomocą :

echo 5953 > /proc/sys/net/ipv4/ip_conntrack_max

5953 jest raczej wartością standardową (chyba, że jakiś pakiet przeze mnie instalowany taką ustawił)

może duża to z 10000 ?

5

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

1. A jak sprawdzić ile jest teraz ustawione?
2. Czy ta wartość ustala maksymalną ilość połączeń realizowanych przez router?


i ponawiam pytanie:

Myślałem jeszcze o ograniczeniu dla UDP np:


iptables -I FORWARD -s 192.168.2.60/31 -p udp -m limit --limit 30/sec -j DROP

ale nie wiem dlaczego to nie chce pójść. Dostaje:

root@OpenWrt:~$ iptables -I FORWARD -s 192.168.2.60/31 -p udp -m limit --limit 30/sec -j DROP
iptables: No chain/target/match by that name

Co to oznacza?

6

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

jak sprawdzic wyedytowac plik /proc/sys/net/ipv4/ip_conntrack_max
nano /proc/sys/net/ipv4/ip_conntrack_max lub vi /proc/sys/net/ipv4/ip_conntrack_max

co do iptables i ustawienia dla upd to nie mam pojecia

7

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

Ustawiłem:

echo 5953 > /proc/sys/net/ipv4/ip_conntrack_max

ale po sprawdzeniu przez:

vi /proc/sys/net/ipv4/ip_conntrack_max

dostaje tylko śmieci. Nie ma tam żadnej wartości cyfrowej....

8

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

cat /proc/sys/net/ipv4/ip_conntrack_max

65536 możesz tam ustawić smile

iptables: No chain/target/match by that name: bo nei masz pewnie modułu do obsługi limit. w którymś kmod-ipt-* będzie

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

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

10

Odp: Ograniczenie ilości połączeń - OpenWrt WR 0.9

Czas życia połączenia to czas jaki jest trzymana informacja o połączeniu w stanie established zanim zostanie usunięta z kolejki. Ogólnie mówiąc. Ale do tego musisz poczytać raczej specyfikacja tcp/ip.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.