← Назад к вопросам

Что такое CIDR?

1.6 Junior🔥 232 комментариев
#Сети и протоколы

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Развернутое объяснение CIDR для инженера DevOps

CIDR (Classless Inter-Domain Routing) — это метод IP-адресации, который заменил устаревшую классовую систему (Class A, B, C) и решил две ключевые проблемы: истощение IPv4-адресов и рост таблиц маршрутизации. Как DevOps-инженер с опытом, я использую CIDR ежедневно для проектирования сетевой инфраструктуры в облаках, настройки security groups, VPC и Kubernetes networking.

Основная концепция и синтаксис

Вместо фиксированных классов CIDR использует гибкую маску переменной длины (Variable Length Subnet Mask - VLSM), записываемую через слэш. Например:

  • 192.168.1.0/24 — 254 хоста (маска 255.255.255.0)
  • 10.0.0.0/16 — 65534 хоста (маска 255.255.0.0)
  • 172.16.0.0/12 — 1+ миллион адресов

Ключевые преимущества CIDR:

  • Экономия адресного пространства — можно выделить ровно столько адресов, сколько нужно
  • Иерархическая маршрутизация — агрегация маршрутов (route summarization)
  • Гибкое разделение на подсети (subnetting) и объединение (supernetting)

Практическое применение в DevOps

1. Облачные сети (AWS VPC, Azure VNet, GCP VPC)

При создании VPC указываем CIDR-блок:

# Создание VPC в AWS CLI
aws ec2 create-vpc --cidr-block 10.0.0.0/16

# Разделение на подсети
Public Subnet:  10.0.1.0/24    # Для балансировщиков
Private Subnet: 10.0.2.0/24    # Для application servers
Data Subnet:    10.0.3.0/24    # Для баз данных

2. Kubernetes Networking

# Конфигурация Calico CNI с CIDR
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: default-pool
spec:
  cidr: 10.244.0.0/16
  blockSize: 26  # Размер подсети для каждого узла
  natOutgoing: true

3. Security Groups и Firewall Rules

# Terraform пример для AWS Security Group
resource "aws_security_group" "app" {
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["10.0.0.0/8", "192.168.0.0/16"]  # Разрешаем только внутренние сети
  }
  
  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["203.0.113.0/24"]  # Только с конкретной подсети
  }
}

Расчёт подсетей: основные формулы

  • Количество адресов в подсети = 2^(32 - префикс)
  • Количество usable hosts = 2^(32 - префикс) - 2 (минус network и broadcast)
  • Пример расчёта в Python:
import ipaddress

def subnet_info(cidr):
    net = ipaddress.ip_network(cidr, strict=False)
    return {
        "network": str(net.network_address),
        "broadcast": str(net.broadcast_address),
        "hosts": list(net.hosts())[:5],  # Первые 5 адресов
        "total_addresses": net.num_addresses,
        "usable_hosts": net.num_addresses - 2
    }

print(subnet_info("10.0.0.0/28"))

Пример из реальной практики

При миграции в AWS нужно было создать изолированную среду для трех команд разработки. Использовал:

  • 10.0.0.0/8 — весь адресный блок VPC
  • 10.1.0.0/16, 10.2.0.0/16, 10.3.0.0/16 — по подсети на команду
  • В каждой /16 разбил на /24 подсети для разных типов сервисов
  • 10.254.0.0/16 — выделил под shared services (VPN, monitoring)

Важные нюансы для DevOps:

  • При работе с Kubernetes нужно избегать конфликтов CIDR Pod сети с CIDR VPC
  • В Docker по умолчанию используется 172.17.0.0/16 — может конфликтовать с корпоративными сетями
  • Бесклассовая маршрутизация требует правильной настройки BGP в гибридных облаках

Инструменты для работы с CIDR

# Утилита ipcalc для расчётов
ipcalc 192.168.1.0/26

# Проверка принадлежности адреса к подсети
$ python3 -c "import ipaddress; print('192.168.1.5' in ipaddress.ip_network('192.168.1.0/24'))"
True

# Генерация подсетей из большого блока
$ nmap -sL -n 10.0.0.0/29 | grep 'Nmap scan report'

CIDR — фундаментальная технология, без которой невозможно современное DevOps. Понимание принципов бесклассовой адресации критически важно для проектирования отказоустойчивых, безопасных и масштабируемых инфраструктур как в облаке, так и в on-premise средах. Особенно важно при работе с multi-cloud стратегиями, где нужно избегать overlapping IP ranges между разными провайдерами.

Что такое CIDR? | PrepBro