Инструменты для массовых списков IP

Вставьте ниже список IP-адресов или CIDR-блоков, чтобы удалить дубликаты, отсортировать его по числовому значению, агрегировать в минимальный набор CIDR-блоков, развернуть CIDR-блок в отдельные адреса, сравнить со вторым списком или отфильтровать приватные и богон-адреса — пять из этих шести операций работают полностью в браузере без единого сетевого запроса.

Насколько это приватно?

Дедупликация, числовая сортировка, агрегация в CIDR, разворот CIDR и сравнение двух списков — полностью локальные операции: всё, что вы вставляете сюда для этих пяти операций, обрабатывается только в вашем браузере и никуда не отправляется. Локальная классификация фильтра (приватный / богон / глобально маршрутизируемый) по умолчанию работает так же.

У операции фильтрации есть один необязательный дополнительный шаг: живая проверка по более свежим данным о нераспределённом адресном пространстве. Она запускается только после явного нажатия кнопки подтверждения под результатами фильтра, и даже тогда отправляет только конкретные проверяемые адреса — никогда ничего другого со страницы — и получает в ответ лишь признак богонности/нераспределённости для каждого.

Инструменты для массовых списков IP

Каждая операция на этой странице работает со вставленным списком IP-адресов и CIDR-блоков, а не с одним адресом за раз. Самая частая ошибка похожих инструментов — сортировать такой список как обычный текст: по алфавиту «10.0.0.10» окажется раньше «10.0.0.2», потому что символ «1» меньше символа «2», хотя численно 10.0.0.2 меньше. Операция сортировки на этой странице всегда сравнивает 32-битное (IPv4) или 128-битное (IPv6) числовое значение каждого адреса, поэтому список 10.0.0.2, 10.0.0.10, 10.0.0.100 возвращается в порядке, которого реально ожидает сетевой инженер, а не в лексикографическом порядке наивной строковой сортировки.

Дедупликация убирает точные повторы после нормализации каждой записи: IPv6-адрес, записанный двумя разными способами (2001:db8::1 и его полная развёрнутая форма), распознаётся как один и тот же адрес и остаётся только один раз. Агрегация идёт дальше и схлопывает список CIDR-блоков (или обычных адресов, воспринимаемых как собственные /32 или /128) в минимальный эквивалентный набор, объединяя любую смежную или пересекающуюся пару — так 10.0.0.0/25 и 10.0.0.128/25 становятся 10.0.0.0/24. Это тот же принцип агрегации маршрутов, которым пользуется маршрутизатор или файрвол, чтобы держать ACL или таблицу маршрутов компактной: меньше, но более крупных записей быстрее обрабатывать и проще проверять, чем то же адресное пространство, расписанное множеством мелких блоков.

Разворот CIDR работает в обратную сторону: перечисляет каждый отдельный адрес внутри блока — полезно для инструментов, которые понимают только плоские списки адресов. Поскольку /8 разворачивается более чем в 16 миллионов строк, разворот сначала проверяет итоговое количество и только потом (если оно укладывается в лимит) начинает генерацию, а не зависает на середине пути. Операция сравнения сопоставляет два вставленных списка — частый вопрос «что изменилось между двумя снапшотами» — и возвращает классическое трёхстороннее разбиение: адреса только в первом списке, только во втором и присутствующие в обоих, что обычно полезнее единственного ответа «равны/не равны» при аудите набора правил файрвола или allow-листа со временем.

Операция фильтрации классифицирует каждый адрес как приватный (пространство RFC 1918 вроде 10.0.0.0/8), богон (зарезервированные диапазоны, которые никогда не должны появляться в публичном интернете, например 0.0.0.0/8 или документационный диапазон IPv6 2001:db8::/32) или глобально маршрутизируемый. По умолчанию эта классификация полностью локальна: она работает в браузере по небольшой фиксированной таблице, сгенерированной прямо из кода классификации IP этого же сервиса, поэтому работает мгновенно без единого сетевого запроса, даже офлайн. Есть второй, необязательный уровень — для адресов, которые локально классифицируются как глобально маршрутизируемые, но на деле могут оказаться нераспределённым пространством, которое региональные интернет-регистратуры ещё не выделили; полный набор данных о нераспределённом пространстве весит несколько мегабайт, и эта страница намеренно не отдаёт его в браузер бесплатно. Вместо этого, если вы явно согласитесь, именно проверяемые адреса — никогда не весь список, только ещё не известные — отправляются на наш сервер небольшими пакетами, и в ответ мы возвращаем только признак «богон/нераспределён» по каждому, без геолокации, ASN и данных об угрозах. Такой запрос происходит только после нажатия кнопки подтверждения под результатами фильтра; само переключение на вкладку фильтра или ввод текста в список сервер не затрагивает.

Приватность — причина, по которой эта страница сделана клиентским инструментом, а не формой, отправляющей ваш список на сервер: дедупликация, сортировка, агрегация, разворот и сравнение списка IP-адресов — часто это список клиентов, лог атакующих или карта внутренней сети — никогда не покидают браузер ни для одной из этих пяти операций, и локальная классификация фильтра тоже. Единственное исключение сделано опциональным и узким намеренно, описано выше и повторено простыми словами прямо рядом с кнопкой подтверждения, чтобы вы всегда точно знали, что именно будет отправлено, прежде чем это произойдёт.

Глоссарий

Дедупликация
Удаление повторяющихся записей из списка после нормализации каждой к каноническому текстовому виду, так что два разных текстовых написания одного адреса распознаются как одно.
Числовая сортировка IP
Упорядочивание адресов по их реальному 32-битному (IPv4) или 128-битному (IPv6) числовому значению, а не как обычного текста — единственный порядок, где 10.0.0.2 идёт раньше 10.0.0.10.
Агрегация CIDR
Схлопывание списка CIDR-блоков в минимальный эквивалентный набор путём объединения любой смежной или пересекающейся пары, без изменения того, какие адреса покрыты.
Богон-адрес
Адрес из зарезервированного диапазона, который никогда не должен встречаться как реальный источник или назначение в публичном интернете — loopback, link-local, multicast или документационный диапазон вроде 2001:db8::/32.
Приватный адрес
Адрес из одного из диапазонов, зарезервированных RFC 1918 (и его аналогом для IPv6 — RFC 4193) для внутренних сетей — никогда не маршрутизируется в публичном интернете, но обычен за NAT.
Нераспределённое адресное пространство
Диапазон адресов, внешне выглядящих как обычное глобально маршрутизируемое пространство, который региональные интернет-регистратуры ещё никому не выделили — обнаруживается только по живому, регулярно обновляемому набору данных, а не по статической таблице.

Часто задаваемые вопросы

Почему сортировка числовая, а не по алфавиту?
Потому что сортировка IP-адресов как обычного текста даёт неверный порядок: по алфавиту 10.0.0.10 окажется раньше 10.0.0.2, так как символ «1» идёт раньше символа «2». Этот инструмент всегда сравнивает реальное 32- или 128-битное числовое значение каждого адреса, поэтому 10.0.0.2 корректно идёт раньше 10.0.0.10.
Чем приватный адрес отличается от богон-адреса?
Приватные адреса (RFC 1918: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, и их аналог для IPv6 fc00::/7) зарезервированы для внутренних сетей и ожидаемо встречаются за NAT. Богон-адреса — более широкий зарезервированный набор, который вообще не должен появляться как источник или назначение в публичном интернете — среди них loopback, link-local, multicast и документационные диапазоны вроде 2001:db8::/32. Оба типа помечаются операцией фильтрации с указанием конкретной причины для каждого адреса.
Безопасно ли вставлять сюда внутренний список IP или список клиентов?
Для всех операций, кроме необязательной живой проверки фильтра, — да: дедупликация, числовая сортировка, агрегация, разворот CIDR и сравнение работают полностью в браузере и никогда никуда не отправляют ваш список. Единственное исключение — необязательная живая проверка фильтра, которая запускается только после явного нажатия её кнопки подтверждения и отправляет только конкретно проверяемые адреса, получая в ответ лишь признак богонности/нераспределённости.
Что будет, если вставить очень большой список?
Ввод ограничен фиксированным числом строк; при превышении показывается предупреждение и обрабатываются только первые строки, поэтому вкладка не зависает, пытаясь разобрать неограниченный список. У разворота CIDR свой, более тесный лимит, проверяемый до генерации хоть одного адреса, поскольку один блок /8 разворачивается более чем в 16 миллионов строк.
Обращается ли операция фильтрации к серверу автоматически?
Нет. Переключение на вкладку фильтра или редактирование списка при выбранной вкладке фильтра запускает только локальную офлайн-классификацию. Живая проверка, добавляющая более свежие данные о нераспределённом пространстве, — отдельное явное действие: требует нажатия собственной кнопки подтверждения, прямо сообщающей, что ваши адреса будут отправлены.
Чем эта страница отличается от платного массового API по IP?
Живая проверка на этой странице отвечает на один узкий вопрос — богон, нераспределён или нет — для пакета адресов и не возвращает ничего больше. Наш платный API умеет обогащать список полной геолокацией, ASN и данными об угрозах для каждого адреса под реальный B2B-сценарий массового поиска — см. страницу бизнес-API.

Эквивалент через API

Все операции на этой странице работают полностью в браузере, кроме необязательной живой проверки фильтра. Для получения полных сетевых/регистрационных данных по одному адресу на стороне сервера наш основной API возвращает тот же тип данных, что фильтр этой страницы классифицирует локально:

curl
curl "https://ip.xakki.pro/api/v1/ip?ip=8.8.8.8&include=network"

Пример ответа (сокращённо):

{
  "schemaVersion": 15,
  "status": "ok",
  "ip": "8.8.8.8",
  "version": 4,
  "flags": {
    "isPrivate": false,
    "isBogon": false,
    "isUnassigned": false
  }
}

Что реально отправляет живая проверка фильтра

Единственный запрос, который эта страница может сделать, и только после нажатия кнопки подтверждения, — это прямой вызов того же пакетного эндпоинта, что и выше:

curl
curl -X POST "https://ip.xakki.pro/api/v1/tools/bogon-check" \
  -H "Content-Type: application/json" \
  -d '{"ips":["8.8.8.8","203.0.113.5"]}'
{
  "results": [
    { "ip": "8.8.8.8", "unassigned": false, "class": "global" },
    { "ip": "203.0.113.5", "unassigned": true, "class": "bogon" }
  ]
}

Для реального массового обогащения списка полной геолокацией, ASN и данными об угрозах по каждому адресу — см. страницу бизнес-API; живая проверка этой страницы намеренно возвращает только признак богонности/нераспределённости и ничего больше.

Читать полную документацию по API Бизнес-API для массовых IP

Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →