CIDR (Classless Inter-Domain Routing) — это метод распределения IP-адресов и маршрутизации, который позволяет более эффективно использовать адресное пространство IPv4 и уменьшать размер таблиц маршрутизации за счёт использования префиксов переменной длины вместо фиксированных классов.
Что такое CIDR?
До появления CIDR в 1993 году, интернет использовал классовую адресацию (Classful Addressing), которая делила IP-адреса на классы A, B и C с фиксированными размерами сетей. Классовая система быстро приводила к неэффективному использованию IP-адресов и значительному росту таблиц маршрутизации. Например, организация, которой требовалось 300 хостов, должна была получить целую сеть класса B (65534 хоста), что приводило к потере тысяч IP-адресов. CIDR был разработан для решения этих проблем, обеспечивая гибкость в распределении IP-адресов и агрегации маршрутов.
CIDR устраняет концепцию классов IP-адресов, вводя маску подсети переменной длины, которая указывается как /префикс-длина после IP-адреса. Эта префикс-длина обозначает количество бит в IP-адресе, которые относятся к сетевой части (Network ID), а остальные биты относятся к хостовой части (Host ID).
Как работает CIDR
IP-адрес в IPv4 состоит из 32 бит и обычно представляется в десятично-точечной нотации (например, 192.168.1.0). CIDR-нотация добавляет к этому адресу /префикс-длину, например, 192.168.1.0/24.
Префикс-длина и маска подсети
Префикс-длина указывает, сколько старших битов IP-адреса используются для идентификации сети. Остальные биты используются для идентификации хостов внутри этой сети.
Например, в 192.168.1.0/24:
* 24 означает, что первые 24 бита IP-адреса представляют сетевую часть.
* Остальные 32 - 24 = 8 бит представляют хостовую часть.
Маска подсети — это 32-битное число, которое в двоичном виде имеет единицы в тех позициях, где биты относятся к сетевой части, и нули в позициях, где биты относятся к хостовой части.
| Префикс-длина | Маска подсети (двоичная) | Маска подсети (десятичная) | Количество IP-адресов |
|---|---|---|---|
/8 |
11111111.00000000.00000000.00000000 |
255.0.0.0 |
16,777,216 |
/16 |
11111111.11111111.00000000.00000000 |
255.255.0.0 |
65,536 |
/24 |
11111111.11111111.11111111.00000000 |
255.255.255.0 |
256 |
/27 |
11111111.11111111.11111111.11100000 |
255.255.255.224 |
32 |
/30 |
11111111.11111111.11111111.11111100 |
255.255.255.252 |
4 |
/32 |
11111111.11111111.11111111.11111111 |
255.255.255.255 |
1 |
Расчёт параметров сети CIDR
Для заданного CIDR-блока можно вычислить следующие параметры:
* Адрес сети (Network ID): Первый адрес в блоке, все биты хостовой части равны нулю.
* Широковещательный адрес (Broadcast ID): Последний адрес в блоке, все биты хостовой части равны единице.
* Диапазон доступных IP-адресов для хостов: Адреса между Network ID и Broadcast ID (исключая их).
* Количество IP-адресов в блоке: 2^(32 - префикс-длина).
* Количество доступных IP-адресов для хостов: 2^(32 - префикс-длина) - 2 (если блок содержит более двух адресов).
Пример: 192.168.10.32/27
- Префикс-длина:
/27. - Маска подсети:
255.255.255.224. - Количество IP-адресов:
2^(32-27) = 2^5 = 32. - IP-адрес в двоичном виде:
11000000.10101000.00001010.00100000(192.168.10.32) - Маска подсети в двоичном виде:
11111111.11111111.11111111.11100000(255.255.255.224) - Адрес сети (Network ID): Выполняем побитовую операцию И (AND) между IP-адресом и маской подсети.
11000000.10101000.00001010.00100000(IP)
AND
11111111.11111111.11111111.11100000(Маска)
------------------------------------
11000000.10101000.00001010.00100000(Network ID)
Десятичное представление:192.168.10.32. - Широковещательный адрес (Broadcast ID): Устанавливаем все биты хостовой части в 1. Для
/27последние 5 бит являются хостовой частью.
IP-адрес:192.168.10.32->...00100000(последний октет)
Хостовая часть:00000.
Устанавливаем их в11111:...00111111.
Десятичное представление:192.168.10.63. - Диапазон доступных IP-адресов для хостов: от
192.168.10.33до192.168.10.62. - Количество доступных IP-адресов:
32 - 2 = 30.
CIDR-блоки и подсети
CIDR позволяет гибко делить крупные сети на более мелкие подсети (subnetting) и объединять мелкие сети в более крупные маршрутизируемые блоки (supernetting или route aggregation).
Подсети (Subnetting)
Подсети создаются путём "заимствования" битов из хостовой части IP-адреса и добавления их к сетевой части, тем самым увеличивая префикс-длину. Это позволяет эффективно использовать адресное пространство внутри организации, выделяя меньшие блоки IP-адресов для различных отделов или сегментов сети.
Пример: Разделение 192.168.1.0/24 на подсети /27.
Исходная сеть: 192.168.1.0/24 (256 адресов)
Необходимо создать подсети по 32 адреса (/27).
Количество подсетей: 256 / 32 = 8.
| Подсеть CIDR | Адрес сети | Диапазон хостов | Широковещательный адрес |
|---|---|---|---|
192.168.1.0/27 |
192.168.1.0 |
192.168.1.1 - 192.168.1.30 |
192.168.1.31 |
192.168.1.32/27 |
192.168.1.32 |
192.168.1.33 - 192.168.1.62 |
192.168.1.63 |
192.168.1.64/27 |
192.168.1.64 |
192.168.1.65 - 192.168.1.94 |
192.168.1.95 |
| ... | ... | ... | ... |
192.168.1.224/27 |
192.168.1.224 |
192.168.1.225 - 192.168.1.254 |
192.168.1.255 |
Агрегация маршрутов (Supernetting)
Агрегация маршрутов (или supernetting) — это процесс объединения нескольких смежных CIDR-блоков в один более крупный блок с меньшей префикс-длиной. Это позволяет маршрутизаторам хранить меньше записей в своих таблицах маршрутизации, что улучшает производительность маршрутизации.
Пример: Агрегация четырех сетей /24 в одну сеть /22.
Допустим, у провайдера есть четыре сети:
* 203.0.113.0/24
* 203.0.114.0/24
* 203.0.115.0/24
* 203.0.116.0/24
Эти сети могут быть агрегированы в один маршрут 203.0.112.0/22.
Процесс агрегации:
1. Запишем адреса в двоичном виде:
203.0.113.0: 11001011.00000000.01110001.00000000
203.0.114.0: 11001011.00000000.01110010.00000000
203.0.115.0: 11001011.00000000.01110011.00000000
203.0.116.0: 11001011.00000000.01110100.00000000
2. Найдем самый длинный общий префикс.
11001011.00000000.011100 (первые 22 бита общие)
3. Остальные биты (32-22=10) в агрегированном маршруте становятся нулями.
11001011.00000000.01110000.00000000 -> 203.0.112.0
4. Агрегированный маршрут: 203.0.112.0/22.
Этот маршрут охватывает диапазон от 203.0.112.0 до 203.0.115.255 (2^10 = 1024 IP-адреса). Если бы в примере была сеть 203.0.112.0/24, она также была бы включена в этот агрегированный маршрут.
VLSM (Variable Length Subnet Masking)
VLSM — это применение CIDR для создания подсетей разных размеров из одной крупной сети. Это ключевой аспект CIDR, позволяющий максимально эффективно использовать IP-адреса, выделяя только необходимое количество адресов для каждой подсети. Например, для соединения "точка-точка" требуется всего два IP-адреса (по одному на каждый конец), для чего идеально подходит подсеть /30 (4 адреса, 2 из которых доступны для хостов). Без VLSM пришлось бы использовать минимум /24, что приводило бы к потере 252 адресов.
CIDR в прокси-сервисах
Прокси-сервисы активно используют CIDR для различных целей.
Управление IP-пулами
Операторы прокси-сервисов управляют большими пулами IP-адресов. Эти пулы часто состоят из множества CIDR-блоков, полученных от различных провайдеров или дата-центров. CIDR позволяет эффективно:
* Организовывать и каталогизировать доступные IP-адреса.
* Отслеживать использование адресов в каждом блоке.
* Распределять адреса клиентам или внутренним сервисам.
Контроль доступа (ACL)
CIDR используется для создания правил контроля доступа (Access Control Lists, ACLs) на прокси-серверах. Это позволяет:
* Разрешать или запрещать доступ к прокси с определённых IP-адресов или диапазонов IP-адресов.
* Ограничивать доступ к определённым целевым ресурсам только для определённых клиентов или IP-адресов.
Пример правила ACL для Nginx-прокси:
# Разрешить доступ только из сетей 192.168.1.0/24 и 10.0.0.0/8
allow 192.168.1.0/24;
allow 10.0.0.0/8;
deny all;
Геолокация и маршрутизация
Хотя геолокация IP-адресов сама по себе не является функцией CIDR, базы данных геолокации хранят информацию о географическом положении IP-адресов, часто в виде CIDR-блоков. Прокси-сервисы могут использовать эти данные для:
* Маршрутизации трафика через прокси, расположенные в определённых географических регионах.
* Фильтрации запросов на основе страны происхождения IP-адреса клиента.
Автономные системы (AS)
CIDR-блоки назначаются автономным системам (AS), которые являются крупными сетями под единым административным контролем. Прокси-сервисы, особенно те, что предлагают резидентные или мобильные прокси, часто работают с IP-адресами, принадлежащими различным AS, и используют CIDR для идентификации и управления этими диапазонами.
Общие CIDR-блоки
Существуют зарезервированные CIDR-блоки для частных сетей, которые не маршрутизируются в интернете. Это позволяет организациям использовать эти адреса внутри своих сетей без конфликтов с публичными IP-адресами.
Частные IP-адреса (RFC 1918)
10.0.0.0/8(от10.0.0.0до10.255.255.255)172.16.0.0/12(от172.16.0.0до172.31.255.255)192.168.0.0/16(от192.168.0.0до192.168.255.255)
Другие специальные блоки
127.0.0.0/8: Loopback-адреса (например,127.0.0.1).0.0.0.0/8: Адреса, используемые для обозначения текущей сети или источника по умолчанию.169.254.0.0/16: Link-local адреса (APIPA), используемые для автоматической конфигурации IP-адресов, когда DHCP-сервер недоступен.
CIDR является фундаментальным элементом современного интернета, обеспечивающим его масштабируемость и эффективность. Понимание CIDR критически важно для любого, кто работает с сетевыми технологиями, включая операторов и пользователей прокси-сервисов.