В моей конфигурации Apache я хочу установить переменную окружения, если я вижу, что посетитель приходит с определенного диапазона IP. В настоящее время я делаю это так:
SetEnvIfNoCase Remote_Addr "^194\.8\.7[45]\." banned=spammer-ip
SetEnvIfNoCase Remote_Addr "^212\.156\.170\." banned=spammer-ip
Я бы предпочел что-то вроде этого:
SetEnvIfIpRange 194.8.74.0/23 banned=spammer-ip
SetEnvIfIpRange 212.156.170.0/24 banned=spammer-ip
... потому что я думаю, что преобразование IP-адреса в строку, а затем регулярное выражение - это пустая трата ресурсов.
Я мог бы сделать
Deny From 194.8.74.0/23
... но тогда я не получаю переменную, которую я могу проверить на своей странице ошибки 403 - чтобы найти причину, по которой в доступе было отказано.
Любые предложения, что я мог бы пропустить? Существует ли мод Apache2, который может устанавливать переменные среды на основе «диапазонов IP-адресов»?
Вы можете использовать форматирование CIDR с Apache 2.4, который позволяет
<If>
:источник
Это не совсем решение для перехода от RegExp к диапазонам IP , но я нашел хороший скрипт, размещенный в Google для преобразования диапазона IP в соответствующее регулярное выражение. Может быть полезно и для некоторых из вас ...
Как исключить трафик из диапазона IP-адресов?
[Обновить]
Похоже, что Google удалил IP Address Tool (или, по крайней мере, ссылка на их сайт не работает), но здесь есть похожий инструмент: http://www.analyticsmarket.com/freetools/ipregex
источник