Fast Site Engine
Высокопроизводительный движок для сайтов
Заказать сайт на основе движка
О движкеПроизводительностьБезопасностьТехнические требованияSEO 
Лицензионное соглашение
Демо
Установка
Панель управления
Модули
Документация
Шаблоны
Тесты производительности php
Планы на будущее
Список изменений
Отзывы и пожелания
Переходим на Линукс
Всякое разное
Документация  »  PHP класс для обработки IP адресов  »  Маска IP адреса версии 4 или как банить IPv4 адреса

Маска IP адреса версии 4 или как банить IPv4 адреса

C IP адресами 4 версии протокола всё довольно просто, давайте разберёмся как банить IPv4 адреса, разберём что такое маска IP адреса и как она связана с CIDR. Записываются адреса IPv4 в виде 4 цифр разделенных точкой от 0 до 255, например, 192.0.2.1. Не смотря на прогнозы, начавшиеся где-то с 2000-х годов, о заканчивающимся диапазоне в более чем 4 миллиардов адресов, диапазон IP 4 версии всё ещё не исчерпан! По сей день нет проблем с выделением IPv4 адресов, как у местных провайдеров интернета, так и в серверных разных стран. Переход на IPv6 затянулся на десятилетия, не смотря на то, что инициатива явно хорошая и оборудование уже сменилось по нескольку раз. Количество IPv6 в мире на 2020 год составляет порядка 30%, но я не сталкивался с ним ещё ни разу и судя по дискуссиям в интернете - они в большей степени дублируют адресацию IPv4. Что ещё наталкивает на мысль, что 7 млрд. населения очередная байка из телевизора, нас гораздо меньше. (Конечно, не все пользуются интернетом и существуют технологии типа NAT, когда за одним IP сидит офис итп.)

Если коротко, то маска адреса/сети/подсети или CIDR задают диапазоны IP адресов, каждый разряд ограничен от 0 до 255 адресов умножить на подсети, если они есть. Указав адрес и маску или CIDR (Classless Inter-Domain Routing - бесклассовая междоменная маршрутизация) мы указываем от какого и до какого IP адреса следует банить подсеть нарушителя или разрешать вход только из этой подсети.

Допустим у нас есть вредоносный IP адрес 192.0.2.55, есть вариант воспользоваться одним из сервисов определения IP адреса и узнать диапазоны провайдера и забанить сразу их, но в реальной жизни, в случае динамически выделяемых IP адресов или иных схем получения адреса, злоумышленник скорее всего будет находиться в узком промежутке, для IPv4 достаточно забанить последний разряд IP адреса, который соответствует маске сети 255.255.255.0 или CIDR /24. Т.е. если мы указываем 192.0.2.55/24, то получаем промежуток 192.0.2.0 - 192.0.2.255 в котором 256 адресов, 0 - это адрес подсети, 255 - широковещательный, и они не используются для выделения пользователям, таким образом 254 адреса задействовано.

Как именно задавать диапазоны, смотрите сами, как больше нравится, в данном PHP классе для обработки IP адресов можно задавать в следующих равнозначных формах:
192.0.2.55/24 ; 192.0.2/24 ; 192.0.2./24 ; 192.0.2.0 - 192.0.2.255 ; 192.0.2.* ; 192.0.2. ; 192.0.2 ;
все они заблокируют (или разрешат) диапазон 192.0.2.0 - 192.0.2.255. Можно конечно брать и меньшие диапазоны в случае если идёт атака с адресов выходящих за указанный промежуток, смотрите в таблице ниже. Например, баним подсеть следующего уровня имеющую CIDR /16 и маску сети 255.255.0.0 и в которой уже 65536 адресов:
192.0.2.55/16 ; 192.0.2/16 ; 192.0/16 ; 192.0.0.0 - 192.0.255.255 ; 192.0.* ; 192.0.*.* ; 192.0. ; 192.0.2 ;

Основной интерес предоставляет CIDR: /24 /16 /8;
255.255.255.0/24, 255.255.0.0/16, 255.0.0.0/8.

Таблица сетевых масок IPv4

Таблица подсетей подсвечена зелёным цветом в тех местах, где маска ip адреса и CIDR имеют наибольший смысл, промежуточные значения не так интересны, скорее могут быть использованы в случае белых списков адресов, если пользователь знает диапазон своей подсети.

CIDRМаскаКоличество адресов
/32255.255.255.2551
/31255.255.255.2542
/30255.255.255.2524
/29255.255.255.2488
/28255.255.255.24016
/27255.255.255.22432
/26255.255.255.19264
/25255.255.255.128128
/24255.255.255.0256
/23255.255.254.0512
/22255.255.252.01024
/21255.255.248.02048
/20255.255.240.04096
/19255.255.224.08192
/18255.255.192.016384
/17255.255.128.032768
/16255.255.0.065536
/15255.254.0.0131072
/14255.252.0.0262144
/13255.248.0.0524288
/12255.240.0.01048576
/11255.224.0.02097152
/10255.192.0.04194304
/9255.128.0.08388608
/8255.0.0.016777216
/7254.0.0.033554432
/6252.0.0.067108864
/5248.0.0.0134217728
/4240.0.0.0268435456
/3224.0.0.0536870912
/2192.0.0.01073741824
/1128.0.0.02147483648
/00.0.0.04294967296

Таблица масок подсетей виде числа

CIDRМаскаЗначение
/32255.255.255.2554294967295
/31255.255.255.2544294967294
/30255.255.255.2524294967292
/29255.255.255.2484294967288
/28255.255.255.2404294967280
/27255.255.255.2244294967264
/26255.255.255.1924294967232
/25255.255.255.1284294967168
/24255.255.255.04294967040
/23255.255.254.04294966784
/22255.255.252.04294966272
/21255.255.248.04294965248
/20255.255.240.04294963200
/19255.255.224.04294959104
/18255.255.192.04294950912
/17255.255.128.04294934528
/16255.255.0.04294901760
/15255.254.0.04294836224
/14255.252.0.04294705152
/13255.248.0.04294443008
/12255.240.0.04293918720
/11255.224.0.04292870144
/10255.192.0.04290772992
/9255.128.0.04286578688
/8255.0.0.04278190080
/7254.0.0.04261412864
/6252.0.0.04227858432
/5248.0.0.04160749568
/4240.0.0.04026531840
/3224.0.0.03758096384
/2192.0.0.03221225472
/1128.0.0.02147483648
/00.0.0.00

Таблица масок подсетей в двоичном представлении (в бинарном виде)

CIDRМаскаЗначение
/32255.255.255.25511111111111111111111111111111111
/31255.255.255.25411111111111111111111111111111110
/30255.255.255.25211111111111111111111111111111100
/29255.255.255.24811111111111111111111111111111000
/28255.255.255.24011111111111111111111111111110000
/27255.255.255.22411111111111111111111111111100000
/26255.255.255.19211111111111111111111111111000000
/25255.255.255.12811111111111111111111111110000000
/24255.255.255.011111111111111111111111100000000
/23255.255.254.011111111111111111111111000000000
/22255.255.252.011111111111111111111110000000000
/21255.255.248.011111111111111111111100000000000
/20255.255.240.011111111111111111111000000000000
/19255.255.224.011111111111111111110000000000000
/18255.255.192.011111111111111111100000000000000
/17255.255.128.011111111111111111000000000000000
/16255.255.0.011111111111111110000000000000000
/15255.254.0.011111111111111100000000000000000
/14255.252.0.011111111111111000000000000000000
/13255.248.0.011111111111110000000000000000000
/12255.240.0.011111111111100000000000000000000
/11255.224.0.011111111111000000000000000000000
/10255.192.0.011111111110000000000000000000000
/9255.128.0.011111111100000000000000000000000
/8255.0.0.011111111000000000000000000000000
/7254.0.0.011111110000000000000000000000000
/6252.0.0.011111100000000000000000000000000
/5248.0.0.011111000000000000000000000000000
/4240.0.0.011110000000000000000000000000000
/3224.0.0.011100000000000000000000000000000
/2192.0.0.011000000000000000000000000000000
/1128.0.0.010000000000000000000000000000000
/00.0.0.000000000000000000000000000000000
Страница сгенерирована за 0.003120 секунды
На один процесс веб-сервера: 321 стр./сек.
Всего Apache может отдать: 82 176 стр./сек.
Выделено php памяти: 427.16 KB, real_usage: 2 MB

© Все права защищены 2004 - 2021
Карта сайта
Отслеживать изменения в Твиттере
Политика конфиденциальности

Браузер построил за сек.
Полное время сек.

С момента выгрузки предыдущей страницы из памяти браузера: сек.