# IP-адрес и подсети (CIDR)

> IP-адрес — числовой идентификатор узла в сети IP; CIDR — способ записи и распределения диапазонов адресов в виде «адрес/длина префикса».

Источник: https://llmdocs.ru/wiki/ip-cidr/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Длина адреса IPv4**: 32 бита (4 октета)
- **Длина адреса IPv6**: 128 бит
- **Запись IPv4**: 192.0.2.10
- **CIDR**: RFC 1518/1519 (1993), RFC 4632 (2006)
- **Частные диапазоны IPv4**: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 (RFC 1918)
- **Распределение**: IANA → региональные регистраторы (RIPE NCC, ARIN, APNIC…)
- **Исчерпание IPv4 у IANA**: февраль 2011
**IP-адрес** — числовой идентификатор сетевого интерфейса в сети, работающей по протоколу IP (см. [TCP/IP](https://llmdocs.ru/wiki/tcp-ip.md)). По нему маршрутизаторы доставляют пакеты получателю. **CIDR** (англ. *Classless Inter-Domain Routing* — «бесклассовая междоменная маршрутизация») — способ описывать и распределять **подсети**, то есть непрерывные диапазоны адресов, в форме `адрес/длина префикса`, например `192.168.1.0/24`.

Подсети в нотации CIDR встречаются повсюду: в настройках файрволов и облачных сетей, в правилах доступа к базам данных, в конфигурации [Docker](https://llmdocs.ru/wiki/docker.md) и [Kubernetes](https://llmdocs.ru/wiki/kubernetes.md), в списках разрешённых адресов API.

## Устройство адреса IPv4

Адрес IPv4 — 32-битное число, которое записывают как четыре десятичных октета через точку: `192.168.1.10`. Адрес делится на две части: **сетевую** (префикс, общий для всех узлов подсети) и **узловую** (номер конкретного узла). Где проходит граница, определяет длина префикса или эквивалентная ей **маска подсети**:

```text
адрес     192.168.1.10   11000000.10101000.00000001.00001010
маска     255.255.255.0  11111111.11111111.11111111.00000000   (/24)
сеть      192.168.1.0    первые 24 бита — сеть, последние 8 — узел
```

Два узла находятся в одной подсети, если их адреса совпадают в префиксной части; тогда они общаются напрямую, а иначе отправляют пакеты через маршрутизатор (шлюз по умолчанию). Адреса IPv6 устроены так же, только длиной 128 бит (см. [IPv6](https://llmdocs.ru/wiki/ipv6.md)).

## От классов к CIDR

Изначально адреса делились на классы: A (сеть /8, 16,7 млн адресов), B (/16, 65 тыс.) и C (/24, 256). Организации, которой не хватало класса C, приходилось выдавать класс B, и адреса расходовались впустую, а таблицы маршрутизации разрастались. В 1993 году ввели CIDR: префикс может быть любой длины, а несколько соседних сетей можно объявить одним маршрутом — **агрегировать**.[1]

## Таблица префиксов

| Префикс | Маска | Адресов | Пригодно для узлов |
|---|---|---|---|
| /8 | 255.0.0.0 | 16 777 216 | 16 777 214 |
| /16 | 255.255.0.0 | 65 536 | 65 534 |
| /24 | 255.255.255.0 | 256 | 254 |
| /28 | 255.255.255.240 | 16 | 14 |
| /30 | 255.255.255.252 | 4 | 2 |
| /31 | 255.255.255.254 | 2 | 2 (точка-точка) |
| /32 | 255.255.255.255 | 1 | один узел |

В подсети из `2^(32 − n)` адресов первый — адрес самой сети, последний — широковещательный, поэтому узлам достаётся на два меньше (кроме /31 и /32). Запись `/32` используют, чтобы указать ровно один адрес, например в правиле файрвола.

## Особые диапазоны

| Диапазон | Назначение |
|---|---|
| `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16` | частные сети (RFC 1918)[2] |
| `127.0.0.0/8` | петлевой интерфейс (`127.0.0.1` — localhost) |
| `169.254.0.0/16` | локальные адреса канала, автоматическая настройка без DHCP |
| `100.64.0.0/10` | общее адресное пространство провайдеров (CGNAT)[4] |
| `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` | для документации и примеров |
| `224.0.0.0/4` | многоадресная рассылка (multicast) |
| `0.0.0.0/0` | «любой адрес» — маршрут по умолчанию |

Полный перечень ведёт IANA.[3] Частные адреса не маршрутизируются в интернете: чтобы устройства домашней или офисной сети выходили наружу, роутер подменяет их внешним адресом с помощью [NAT](https://llmdocs.ru/wiki/nat.md).

## Распределение адресов

Адресами управляет IANA, раздающая крупные блоки пяти региональным интернет-регистраторам (для Европы, Ближнего Востока и России — RIPE NCC), а те выдают их провайдерам и организациям. Свободный пул IPv4 у IANA закончился в феврале 2011 года, у RIPE NCC — в 2019-м. С тех пор адреса IPv4 продают и сдают в аренду, а облачные провайдеры берут плату за публичные адреса. Долгосрочное решение — переход на IPv6.

## Практика

```bash
ip -4 addr show                  # адреса и префиксы интерфейсов
ip route                         # маршруты; default via ... — шлюз
ipcalc 10.20.0.0/20              # границы подсети (утилита ipcalc)
```

В [Python](https://llmdocs.ru/wiki/python.md) с адресами удобно работать через модуль `ipaddress`:[6]

```python
import ipaddress

net = ipaddress.ip_network("10.20.0.0/20")
print(net.num_addresses, net[1], net[-2])            # 4096 10.20.0.1 10.20.15.254
print(ipaddress.ip_address("10.20.7.9") in net)      # True
print(list(net.subnets(new_prefix=22)))              # четыре подсети /22
```

## Типичные ошибки

- Пересечение диапазонов: внутренняя сеть Docker (по умолчанию из `172.17.0.0/16`) или облачная VPC совпадает с офисной сетью или сетью VPN, и часть адресов становится недоступна.
- Правило «открыть для `0.0.0.0/0`» в группе безопасности облака открывает сервис всему интернету.
- Путаница между адресом подсети и адресом узла: в правиле `192.168.1.10/24` имеется в виду вся сеть `192.168.1.0/24`.

## См. также

- [TCP/IP](https://llmdocs.ru/wiki/tcp-ip.md)
- [IPv6](https://llmdocs.ru/wiki/ipv6.md)
- [NAT](https://llmdocs.ru/wiki/nat.md)
- [DNS](https://llmdocs.ru/wiki/dns.md)
- [Модель OSI](https://llmdocs.ru/wiki/osi-model.md)

## Источники

1. [RFC 4632 — Classless Inter-domain Routing (CIDR)](https://www.rfc-editor.org/rfc/rfc4632)
2. [RFC 1918 — Address Allocation for Private Internets](https://www.rfc-editor.org/rfc/rfc1918)
3. [IANA — IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/)
4. [RFC 6598 — IANA-Reserved IPv4 Prefix for Shared Address Space](https://www.rfc-editor.org/rfc/rfc6598)
5. [RFC 791 — Internet Protocol](https://www.rfc-editor.org/rfc/rfc791)
6. [Python documentation — ipaddress](https://docs.python.org/3/library/ipaddress.html)
