CIDR (Classless Inter-Domain Routing – бескласова міждоменна маршрутизація) – це метод розподілу IP-адрес та маршрутизації пакетів Інтернет-протоколу, який є ефективнішим за оригінальну класову систему адресації, використовуючи маску підмережі змінної довжини, представлену довжиною префікса. Він був запроваджений у 1993 році Інженерною робочою групою Інтернету (IETF) для вирішення проблеми швидкого вичерпання адрес IPv4 та зростання таблиць маршрутизації.
Еволюція до CIDR
До появи CIDR адреси IPv4 були поділені на фіксовані "класи" (A, B, C, D, E). Кожен клас мав заздалегідь визначену мережеву та хостову частини, що призводило до неефективного використання адрес. Наприклад, мережа Класу B пропонувала 65 534 хостові адреси, що часто було набагато більше, ніж потрібно одній організації, що призводило до марнування IP-простору. І навпаки, мережа Класу C, маючи лише 254 хостові адреси, часто була занадто малою.
Класова маршрутизація також означала, що таблиці маршрутизації в основній мережі Інтернету швидко зростали, оскільки кожна мережа Класу A, B або C вимагала окремого запису, незалежно від її ієрархічного зв'язку з іншими мережами.
Розуміння нотації CIDR
CIDR відмовляється від концепції фіксованих класів, дозволяючи мережевій частині IP-адреси мати довільну довжину. Ця довжина позначається суфіксом до IP-адреси, /prefix_length.
IP-адреса IPv4 – це 32-бітне число. prefix_length вказує, скільки крайніх лівих бітів складають мережеву частину адреси. Решта бітів представляють хостову частину.
Приклад: 192.168.1.0/24
* 192.168.1.0 – це IP-адреса.
* /24 вказує, що перші 24 біти є мережевою частиною.
Еквівалентність маски підмережі
prefix_length безпосередньо відповідає традиційній масці підмережі у десятковій нотації з крапками. Маска підмережі формується шляхом встановлення перших prefix_length бітів на 1, а решти бітів на 0.
| CIDR Префікс | Маска підмережі | Двійкова маска підмережі (перші 16 біт) |
|---|---|---|
| /8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
| /16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
| /24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
| /27 | 255.255.255.224 | 11111111.11111111.11111111.11100000 |
| /30 | 255.255.255.252 | 11111111.11111111.11111111.11111100 |
Як працює CIDR: Обчислення адрес
Для визначення мережевої адреси, широкомовної адреси та діапазону придатних хост-адрес для заданого CIDR-блоку виконуються спеціальні обчислення.
Мережева адреса
Мережева адреса (або мережевий ідентифікатор) – це перша адреса в CIDR-блоці. Вона отримується шляхом виконання побітової операції AND між будь-якою IP-адресою в блоці та маскою підмережі. Усі хостові біти в мережевій адресі дорівнюють 0.
Широкомовна адреса
Широкомовна адреса – це остання адреса в CIDR-блоці. Вона отримується шляхом встановлення всіх хостових бітів мережевої адреси на 1. Пакети, надіслані на цю адресу, доставляються всім хостам у цьому конкретному сегменті мережі.
Діапазон придатних хост-адрес
Діапазон придатних хост-адрес включає всі IP-адреси між мережевою адресою та широкомовною адресою, виключаючи обидві. Це адреси, які можуть бути призначені пристроям у мережі.
Кількість хостів
Кількість доступних IP-адрес у CIDR-блоці обчислюється як 2^(32 - prefix_length). Кількість придатних хост-адрес становить 2^(32 - prefix_length) - 2 (віднімаючи мережеву та широкомовну адреси).
Приклад: 192.168.10.64/27
Давайте розберемо CIDR-блок 192.168.10.64/27.
- Довжина префікса:
/27 - Маска підмережі: Перші 27 бітів –
1, останні 5 бітів –0.
11111111.11111111.11111111.11100000(двійкова)
255.255.255.224(десяткова з крапками) - IP-адреса у двійковому вигляді:
192.168.10.64=11000000.10101000.00001010.01000000 - Мережева адреса: Виконайте побітову операцію AND з маскою підмережі.
11000000.10101000.00001010.01000000(IP)
11111111.11111111.11111111.11100000(Маска)
-----------------------------------
11000000.10101000.00001010.01000000(Мережевий ID)
192.168.10.64
(Примітка: Задана IP-адреса 192.168.10.64 вже є мережевою адресою для цього блоку /27) - Широкомовна адреса: Встановіть хостові біти (останні 5 бітів) мережевої адреси на
1.
Мережевий ID:11000000.10101000.00001010.01000000
Широкомовна:11000000.10101000.00001010.01011111
192.168.10.95 - Діапазон придатних хост-адрес:
- Перша придатна IP:
192.168.10.65 - Остання придатна IP:
192.168.10.94
- Перша придатна IP:
- Кількість хостів:
32 - 27 = 5хостових бітів.
2^5 = 32загальних адрес.
32 - 2 = 30придатних хост-адрес.
Переваги CIDR
Ефективний розподіл IP-адрес
CIDR дозволяє гнучке підмережування, дозволяючи адміністраторам вибирати довжину префікса, яка точно відповідає кількості хостів, необхідних для певного сегмента мережі. Це мінімізує марнування IP-адрес порівняно з класовою адресацією.
Агрегація маршрутів (Супернеттінг)
CIDR дозволяє об'єднувати кілька менших мереж в один більший мережевий блок для цілей маршрутизації. Наприклад, інтернет-провайдеру може бути виділено 203.0.113.0/20. Потім він може розділити його на менші блоки /24 або /27 для своїх клієнтів. З точки зору ширшого Інтернету, потрібно рекламувати лише один маршрут /20, що значно зменшує розмір глобальних таблиць маршрутизації. Цей процес називається агрегацією маршрутів або супернеттінгом.
Зменшення розміру таблиць маршрутизації
Завдяки агрегації маршрутів CIDR зменшує кількість записів у таблицях маршрутизації на магістральних маршрутизаторах. Це підвищує ефективність маршрутизації та зменшує вимоги до пам'яті та обробки для маршрутизаторів.
Ієрархічна маршрутизація
CIDR сприяє ієрархічній структурі маршрутизації, де більші CIDR-блоки виділяються основним інтернет-провайдерам або регіональним інтернет-реєстраторам, які потім поділяють ці блоки на менші для своїх клієнтів. Це створює більш організовану та масштабовану архітектуру маршрутизації Інтернету.
CIDR у проксі-сервісах
Проксі-сервіси активно використовують CIDR для різних функцій:
Списки контролю доступу (ACL)
Проксі використовують CIDR-блоки в ACL для визначення того, яким IP-адресам клієнтів або діапазонам дозволено або заборонено доступ до проксі або до певних ресурсів через проксі.
# Приклад Nginx проксі для дозволу певних CIDR-діапазонів
http {
server {
listen 80;
server_name example.com;
location / {
# Заборонити за замовчуванням
deny all;
# Дозволити конкретні IP-адреси
allow 192.168.1.10;
allow 10.0.0.0/8; # Дозволити весь приватний діапазон Класу A
allow 172.16.0.0/12; # Дозволити весь приватний діапазон Класу B
allow 192.168.0.0/16; # Дозволити весь приватний діапазон Класу C
# Дозволити конкретні публічні IP-блоки
allow 203.0.113.0/24;
proxy_pass http://backend_server;
}
}
}
Геолокація та регіональна маршрутизація
Проксі-сервіси часто використовують CIDR-блоки для ідентифікації географічного походження IP-адрес клієнтів. Ця інформація може бути використана для:
* Локалізації контенту: Доставка контенту, специфічного для регіону.
* Гео-блокування: Обмеження доступу до контенту на основі країни або регіону клієнта.
* Оптимізована маршрутизація: Направлення трафіку до проксі-серверів, ближчих до клієнта, для зменшення затримки.
Балансування навантаження
У налаштуваннях балансування навантаження CIDR може використовуватися для направлення клієнтського трафіку з певних IP-діапазонів до конкретних пулів бекенд-серверів або екземплярів проксі, забезпечуючи оптимальне використання ресурсів або відповідність регіональним вимогам щодо зберігання даних.
Внесення IP до білого/чорного списку
Проксі-брандмауери та функції безпеки використовують CIDR для внесення до білого списку довірених мереж або до чорного списку відомих шкідливих IP-діапазонів, підвищуючи безпеку шляхом фільтрації трафіку на рівні проксі.
Доступ до приватних мереж
Для проксі, що працюють у корпоративних мережах, CIDR є важливим для визначення внутрішніх мережевих діапазонів, до яких можна отримати доступ через проксі, або для розрізнення внутрішніх клієнтів від зовнішніх.
CIDR та IPv6
Принципи CIDR є фундаментальними також для адресації IPv6, хоча довжина адреси становить 128 бітів. Адреси IPv6 завжди виражаються в нотації CIDR, наприклад, 2001:0db8::/32. Довжина префікса в IPv6 функціонує ідентично IPv4, визначаючи мережеву та хостову частини адреси та забезпечуючи ефективний розподіл і маршрутизацію.
Висновок
CIDR є незамінним компонентом сучасної інтернет-інфраструктури, що має вирішальне значення для ефективного управління IP-адресами та масштабованої маршрутизації. Для проксі-сервісів глибоке розуміння CIDR є життєво важливим для налаштування надійних засобів контролю доступу, оптимізації потоку трафіку та впровадження політик безпеки.