Strona 1 z 1
Iptables - nie rozumiem tej regułki
: 21 maja 2012, 13:18
autor: papajas
Znajomy kiedyś podał mi taką regułę:
Kod: Zaznacz cały
-A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 8 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
Technicy jednego z operatorów twierdzą że to ta regułka jest przyczyną że jeden z ich klientów nie może połączyć się z serwerem. Dziwna sprawa bo cały świat się łączy, a jeden adres IP nie może.
Czy ktoś może podać mi wskazówkę
odnośnie tej reguły lub jakiś kierunek poszukiwań.
Z góry serdecznie dziękuję i pozdrawiam
.
: 21 maja 2012, 18:13
autor: snejk
Ustawia limit równoczesnych połączeń przychodzących na port 80 z ustawioną flagą SYN (czyli połączenia nowe) dla całej podsieci klasy C.
Czyli możesz mieć 8 połączeń z żądanej klasy. Reszta jest odrzucana do czasu zamknięcia się któregoś z pozostałych.
: 21 maja 2012, 18:36
autor: papajas
Czyli jakbym pozbył si
ę:
to rozumiem, że to 8 obowiązywałoby jeden host/i
p? To jakoś mi nie pasuje, bo mam jeszcze tam tak
ą regułkę:
Kod: Zaznacz cały
-I INPUT -p tcp --dport 80 --syn -m connlimit --connlimit-above 20 -j REJECT
Czy one się jakoś nie wykluczają, albo sobie nie przeszkadzają?
Mnie wystarczy reguła prosta, która ewentualnie ograniczy ruch z jednego numeru IP do jakiejś wartości (takie zabezpieczenie przed domorosłymi znawcami sztuki obciążania serwerów
).
Snejk - serdecznie dziękuję za poświęcony czas i wyjaśnienie mi temat
u!
Używaj znaczników code.
fnmirk
: 21 maja 2012, 18:46
autor: snejk
Jak usuniesz:
to już nie musisz dopisywać 32 bo taka wartość jest domyślna (wtedy dopasowywany jest jeden host).
" pisze:To jakoś mi nie pasuje, bo mam jeszcze tam tak
ą regułkę:
Kod: Zaznacz cały
-I INPUT -p tcp --dport 80 --syn -m connlimit --connlimit-above 20 -j REJECT
Czy one się jakoś nie wykluczają, albo sobie nie przeszkadzają?
Sprawdź, która z nich występuje jako pierwsza, i do której z nich faktycznie wpadają jakieś pakiety.
: 21 maja 2012, 19:05
autor: papajas
Kod: Zaznacz cały
www://# iptables -L -vn
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 #conn/32 > 20 tcp dpt:80 flags:0x17/0x02 reject-with icmp-port-unreachable
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 #conn/32 > 8 reject-with icmp-port-unreachable
0 0 ACCEPT icmp -- * * 0.0.0.0/0 172.16.0.0/16
0 0 ACCEPT tcp -- * * 172.16.0.2 172.16.0.1 tcp spt:3306 dpts:1024:65535 state ESTABLISHED
0 0 ACCEPT all -- lo * 127.0.0.1 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
91 8115 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:222
0 0 ACCEPT tcp -- eth0 * xx.xx.xx.xx 0.0.0.0/0 tcp dpt:10000
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 6 level 4 prefix `ATAK: '
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 172.16.0.0/16 0.0.0.0/0
0 0 ACCEPT tcp -- * * 172.16.0.1 172.16.0.2 tcp spts:1024:65535 dpt:3306 state NEW,ESTABLISHED
0 0 ACCEPT all -- * * 127.0.0.1 0.0.0.0/0
86 169K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
: 22 maja 2012, 14:10
autor: Bastian
papajas, przeczytaj artykuł o iptables dostępny na tym portalu, wszystkie Twoje wątpliwości same się rozwiążą.
http://debian.linux.pl/threads/5676-Prz ... -napiszesz
: 23 maja 2012, 12:04
autor: papajas
Dziękuję za podpowiedź. Poczytałem trochę o iptables i napisałem taką regułkę, zamiast tamtych dwóch:
Kod: Zaznacz cały
-A INPUT -p tcp -m tcp -m state -m connlimit --dport 80 --state NEW -j REJECT --reject-with tcp-reset --syn --connlimit-above 500