Как узнать конкретные IP-адреса, соответствующие определенному диапазону?

Как можно преобразовать диапазон адресов, такой как 1.119.192.0/21, в конкретные адреса для сравнения с другими имеющимися адресами? Возможно, есть ли какие-то онлайн-сервисы, готовые скрипты или алгоритмы для этого? Требуется найти совпадения между этими зашифрованными диапазонами и имеющимися адресами.
  • 10 февраля 2024 г. 17:29
Ответы на вопрос 3
Вы можете определить конкретные IP-адреса, соответствующие определенному диапазону, используя подсеть с префиксной нотацией CIDR (Classless Inter-Domain Routing), такую как 1.119.192.0/21. Чтобы это сделать, обычно используются специализированные библиотеки или инструменты.

Вот несколько способов, которые можно использовать:

1. Онлайн-сервисы:
Есть множество онлайн-инструментов CIDR, которые могут выполнить эту задачу. Просто введите поисковый запрос "CIDR calculator" или "IP range calculator" в любую поисковую систему, и вы найдете инструменты, которые позволят по диапазону CIDR получить список всех адресов.

2. Использование командной строки:
Если вы предпочитаете использовать командную строку и у вас установлен Linux, Mac или WSL (Windows Subsystem for Linux) на Windows, вы можете использовать утилиту `ipcalc` или `sipcalc`.

Пример использования ipcalc:
```bash
ipcalc 1.119.192.0/21
```

3. Скрипты на Python:
Если вам удобнее работать с Python, вы можете использовать библиотеку `ipaddress`, которая входит в стандартную библиотеку Python начиная с Python 3.3.

Пример скрипта под Python:

```python
import ipaddress

# Создаем объект сети на основе CIDR-нотации
network = ipaddress.ip_network('1.119.192.0/21')

# Выводим все IP-адреса в этой сети
for ip in network:
    print(ip)
```

4. Скрипты на других языках программирования:
Аналогичные библиотеки есть и для других языков программирования, например `netaddr` для Python или `ipaddress` для Ruby.

Преимущество использования скриптов заключается в том, что вы можете автоматизировать процесс и легко интегрировать его с другими инструментами или данными.

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

Обращаю ваше внимание, что диапазон 1.119.192.0/21 включает 2^(32-21) = 2^11 = 2048 IP-адресов, начиная от 1.119.192.0 и заканчивая 1.119.199.255. Это может быть слишком много адресов для вывода на экран или обработки вручную, но это обычно не проблема для скриптов и компьютерных программ.
Во первых это называется подсеть. <br/> Во вторых зная как это называется, поисковиком воспользоваться не сложно. <br/> <br/> Запрос в гугл - <a href="https://www.google.com/search?q=%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C+%D0%B2%D1%81%D0%B5+%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0+%D0%B8%D0%B7+%D0%BF%D0%BE%D0%B4%D1%81%D0%B5%D1%82%D0%B8&amp;oq=%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C+%D0%B2%D1%81%D0%B5+%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0+%D0%B8%D0%B7+%D0%BF%D0%BE%D0%B4%D1%81%D0%B5%D1%82%D0%B8&amp;gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCDQ4MjNqMGo3qAIAsAIA&amp;sourceid=chrome&amp;ie=UTF-8" rel="nofollow">https://www.google.com/search?q=%D0%BF%D0%BE%D0%BB...</a> <br/> Ссылка из гугла - <a href="https://itsecforu.ru/2021/09/03/%F0%9F%90%8D-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D1%81%D0%B5%D1%85-ip-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2-%D0%B8%D0%B7-%D0%BF%D0%BE%D0%B4%D1%81%D0%B5%D1%82%D0%B8-cidr/" rel="nofollow">https://itsecforu.ru/2021/09/03/%F0%9F%90%8D-%D0%B...</a> <br/> Тест - <a href="https://www.online-python.com/cwW3Zo7rVq" rel="nofollow">https://www.online-python.com/cwW3Zo7rVq</a>
Переводишь в число, фиксируешь первые N бит. <br/> Оставшиеся биты могут быть любыми, но не могут быть сплошными нулями (адрес сети) и сплошными единицами (широковещательный адрес)
Похожие вопросы