Jak obejść limit połączeń z jednego adresu IP ?
Bywa tak, że usługodawca limituje dostęp do jakiejś usługi per adres IP. Czyli
np. można w ciągu minuty odpytać jakiś serwer o coś określoną liczbę razy
z danego adresu IP. Przykładem jest tu dostęp do serwera WHOIS.
Mając więcej niż jeden adres IP można zrobić aby każde kolejne połączenie
do serwera usługodawcy wychodziło z innym źródłowym adresem IP pakietu.
Można tak zrobić od razu w aplikacji na serwerze lub NATując na routerze pakiety
wychodzące z serwera do serwera docelowego.
Poniższe polecenie powoduje, że tylko jedno połączenie po kolei zostanie
zaNATowane danym IP i maksymalnie 7 połączeń na minutę.
iptables -t nat -A POSTROUTING -p tcp --dport 43 -s 195.64.174.7/32
-m limit -j SNAT --limit 7/minute --limit-burst 1 --to-source 195.64.175.20
Aby każde połączenie było NATowane innym IP tworzymy dla każdego IP kolejną
regułkę. Dla ułatwienia poniższa pętla utworzy reguły dla 256 adresów - czyli klasy C.
#!/bin/bash
a=1
echo "">/etc/rc.d/rc.whois
for((a=0;a<=255;a++)) do
echo "iptables -t nat -A POSTROUTING -p tcp --dport 43 -s 195.64.174.233/32
-m limit -j SNAT --limit 7/minute --limit-burst 1 --to-source 195.64.175.$a">>/etc/rc.d/rc.whois
To nam utworzy plik rc.whois z następującą zawartością:
iptables -t nat -A POSTROUTING -p tcp --dport 43 -s 195.64.174.233/32
-m limit -j SNAT --limit 7/minute --limit-burst 1 --to-source 195.64.175.0
iptables -t nat -A POSTROUTING -p tcp --dport 43 -s 195.64.174.233/32
-m limit -j SNAT --limit 7/minute --limit-burst 1 --to-source 195.64.175.1
iptables -t nat -A POSTROUTING -p tcp --dport 43 -s 195.64.174.233/32
-m limit -j SNAT --limit 7/minute --limit-burst 1 --to-source 195.64.175.2
[...]
iptables -t nat -A POSTROUTING -p tcp --dport 43 -s 195.64.174.233/32
-m limit -j SNAT --limit 7/minute --limit-burst 1 --to-source 195.64.175.255
Powyższą metodą możemy ułatwić sobie sprawdzanie domen poprzez WHOIS,
obchodząc istniejący limit zapytań (1 co 8 sekund).
pozdrawiam Andrzej Szreter