W mojej konfiguracji Apache chcę ustawić zmienną środowiskową, jeśli widzę, że użytkownik pochodzi z określonego zakresu adresów IP. Obecnie robię to w ten sposób:
SetEnvIfNoCase Remote_Addr "^194\.8\.7[45]\." banned=spammer-ip
SetEnvIfNoCase Remote_Addr "^212\.156\.170\." banned=spammer-ip
Wolałbym coś takiego:
SetEnvIfIpRange 194.8.74.0/23 banned=spammer-ip
SetEnvIfIpRange 212.156.170.0/24 banned=spammer-ip
... ponieważ myślę, że konwersja adresu IP na ciąg znaków, a następnie wykonanie wyrażenia regularnego, jest całkowitą stratą zasobów.
Mógłbym zrobić
Deny From 194.8.74.0/23
... ale potem nie otrzymuję zmiennej, którą mogę sprawdzić na stronie błędu 403 - aby znaleźć przyczynę odmowy dostępu.
Jakieś sugestie, co mogę przegapić? Czy istnieje moduł Apache2 MOD, który może ustawiać zmienne środowiskowe na podstawie „Zakresów adresów IP”?
Możesz używać formatowania CIDR z Apache 2.4, który pozwala
<If>
:źródło
To nie jest tak naprawdę rozwiązanie, aby przejść z RegExp na zakresy adresów IP , ale znalazłem fajny skrypt obsługiwany przez Google do konwersji zakresu adresów IP na pasujące wyrażenie regularne. Może być przydatny także dla niektórych z was ...
Jak wykluczyć ruch z zakresu adresów IP?
[Aktualizacja]
Wygląda na to, że Google usunęło narzędzie adresu IP (lub przynajmniej łącze, które mają na swojej stronie, jest zepsute), ale istnieje podobne narzędzie tutaj: http://www.analyticsmarket.com/freetools/ipregex
źródło