Методы isIP и isIPRange

Работа с IP-адресами в JavaScript часто требует строгой проверки входных данных, особенно при обработке пользовательских запросов, сетевых конфигураций или логов. В библиотеке Validator.js для этих целей предусмотрены специализированные методы, позволяющие определить корректность IP-адреса и диапазона сетей.

Основная задача таких методов — исключить некорректные строки и гарантировать соответствие значения стандартам IPv4 и IPv6, а также CIDR-диапазонам.


Проверка IP-адреса с помощью isIP

Метод isIP используется для определения того, является ли переданная строка валидным IP-адресом. Поддерживаются оба распространённых формата: IPv4 и IPv6.

Сигнатура:

isIP(str [, version])

Параметры:

  • str — проверяемая строка

  • version — необязательный параметр, задающий версию IP:

    • 4 — только IPv4
    • 6 — только IPv6
    • не задан — проверка обеих версий

Принцип работы проверки IPv4

IPv4-адрес состоит из четырёх октетов, разделённых точками. Каждый октет представляет число от 0 до 255.

Пример корректных значений:

validator.isIP("192.168.0.1"); // true
validator.isIP("255.255.255.255"); // true

Некорректные варианты:

validator.isIP("256.1.1.1"); // false
validator.isIP("192.168.0"); // false
validator.isIP("192.168.0.1.5"); // false

Проверка IPv6

IPv6 использует шестнадцатеричную систему и состоит из восьми групп, разделённых двоеточиями. Допускаются сокращения, включая удаление ведущих нулей и использование ::.

Примеры валидных IPv6:

validator.isIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334"); // true
validator.isIP("2001:db8::8a2e:370:7334"); // true
validator.isIP("::1"); // true

Некорректные варианты:

validator.isIP("2001:::1"); // false
validator.isIP("12345::abcd"); // false

Фильтрация по версии IP

Использование второго параметра позволяет строго ограничить тип адреса.

validator.isIP("192.168.1.1", 4); // true
validator.isIP("192.168.1.1", 6); // false

validator.isIP("2001:db8::1", 6); // true
validator.isIP("2001:db8::1", 4); // false

Это особенно важно при работе с системами, где требуется чёткое разделение IPv4 и IPv6 трафика.


Проверка диапазонов IP с isIPRange

Метод isIPRange предназначен для проверки CIDR-нотации — формата, описывающего диапазон IP-адресов.

Сигнатура:

isIPRange(str)

CIDR (Classless Inter-Domain Routing) представляет собой IP-адрес с добавленным префиксом, определяющим количество фиксированных бит сети.


Принцип работы CIDR

Формат записи:

IP/маска

Примеры:

  • 192.168.0.0/24
  • 10.0.0.0/8
  • 2001:db8::/32

Метод проверяет:

  • корректность IP-адреса
  • допустимость маски
  • соответствие формату CIDR

Примеры валидных диапазонов

validator.isIPRange("192.168.0.0/24"); // true
validator.isIPRange("10.0.0.0/8"); // true
validator.isIPRange("2001:db8::/32"); // true

Некорректные диапазоны

validator.isIPRange("192.168.0.0/33"); // false (маска вне диапазона IPv4)
validator.isIPRange("256.0.0.0/24"); // false (некорректный IP)
validator.isIPRange("192.168.0.0/-1"); // false
validator.isIPRange("2001:db8::/129"); // false (IPv6 маска превышает допустимую)

Логика проверки маски

Для IPv4 допустимый диапазон маски — от 0 до 32, где:

  • 0 — вся адресная область
  • 32 — один конкретный IP

Для IPv6 диапазон маски — от 0 до 128.

При проверке isIPRange учитываются оба уровня:

  1. Валидация IP-части
  2. Проверка числового значения префикса
  3. Соответствие версии IP и диапазона маски

Сравнение isIP и isIPRange

Методы решают разные задачи, несмотря на общую область применения.

isIP:

  • проверяет одиночный адрес
  • не анализирует сетевую структуру
  • используется для фильтрации входных IP

isIPRange:

  • проверяет сетевые диапазоны
  • работает с CIDR-нотацией
  • применяется в маршрутизации, ACL, firewall-правилах

Типичные сценарии использования

При обработке логов серверов isIP используется для выделения корректных адресов клиентов:

if (validator.isIP(log.ip)) {
  // обработка IP
}

При настройке сетевых правил isIPRange позволяет валидировать разрешённые подсети:

const allowed = validator.isIPRange("192.168.1.0/24");

Особенности обработки IPv6-диапазонов

CIDR для IPv6 часто используется в инфраструктуре глобальных сетей. Из-за большого адресного пространства маски чаще кратны 4 или 16 битам, но технически допускается любое значение от 0 до 128.

Пример:

validator.isIPRange("2001:db8::/48"); // true
validator.isIPRange("2001:db8::/200"); // false

Ограничения и поведение при ошибках

Оба метода не выбрасывают исключений. Вместо этого возвращается строгое логическое значение:

  • true — строка соответствует формату
  • false — строка невалидна

Это упрощает интеграцию в цепочки валидации данных без необходимости обработки ошибок через try/catch.


Практическая роль в системах валидации

В связке с другими методами Validator.js проверка IP и диапазонов часто является частью комплексной фильтрации входных данных:

  • контроль доступа по IP
  • настройка сетевых ACL
  • валидация конфигурационных файлов
  • проверка пользовательских настроек сетевых сервисов

Строгая проверка формата предотвращает ошибки на уровне сетевой логики и снижает риск некорректной интерпретации адресов.