У меня есть ip, и я хочу преобразовать его в блок CIDR с заданной маской c (например, / 28). Использование PHP.
, чтобы входные данные "1.1.1.100" и "28" и выходные данные были "1.1.1.96/28"
ip_to_cidr('1.1.1.100', '28') // '1.1.1.96/28'
. Я обнаружил, что многие функции соответствуют и диапазоны, но ничего о фактическом преобразовании из ip в CIDR. Похоже, что это самая базовая c операция, может быть, я что-то упускаю, использую неправильные условия поиска или неверное понимание масок.
Для контекста: мне нужно заблокировать ботов, у меня есть их IP и я хочу заблокировать диапазон в ipset. / 24 немного-много (но это легко сделать, просто замените последний бит на «.0 / 24»), поэтому я хочу использовать / 27/28 /29.