Что такое CIDR?

Ответ

CIDR (Classless Inter-Domain Routing) — это метод бесклассовой адресации, который заменил устаревшую классовую систему (A, B, C). Он позволяет гибко определять размер сети с помощью записи IP-адрес/префикс, где префикс указывает количество бит в сетевой части адреса.

Как это работает: Адрес 192.168.1.0/24 означает:

  • Сетевой адрес: 192.168.1.0
  • Маска подсети: 255.255.255.0 (24 единичных бита слева)
  • Диапазон хостов: 192.168.1.1192.168.1.254
  • Широковещательный адрес: 192.168.1.255

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

  1. Проектирование VPC/Cloud Networks: В AWS VPC я обычно создаю сеть /16 (например, 10.0.0.0/16) и разбиваю её на публичные и приватные подсети размером /24 в разных AZ.
    10.0.1.0/24 — public-subnet-a
    10.0.2.0/24 — private-subnet-a
    10.0.3.0/24 — public-subnet-b
  2. Безопасность: CIDR-блоки используются в Security Groups и Network ACLs для точного контроля доступа. Например, разрешить SSH только из офиса: Ingress: TCP/22, Source: 203.0.113.32/28.
  3. Маршрутизация: В таблицах маршрутов указываются CIDR-назначения.

Полезные команды:

# Рассчитать сеть и диапазон (Linux)
$ ipcalc 10.0.1.32/27
Address:   10.0.1.32          00001010.00000000.00000001.001 00000
Netmask:   255.255.255.224 = 27
Network:   10.0.1.32/27       00001010.00000000.00000001.001 00000
HostMin:   10.0.1.33          00001010.00000000.00000001.001 00001
HostMax:   10.0.1.62          00001010.00000000.00000001.001 11110
Broadcast: 10.0.1.63          00001010.00000000.00000001.001 11111
Hosts/Net: 30

Ответ 18+ 🔞

Давай разберём эту тему, чтобы у тебя в голове всё встало на свои места, а не болталось как хуй в проруби. CIDR — это, по сути, отказ от тупой классовой системы, которая была придумана ещё когда трава была зеленее, а интернет — диковинкой. Вместо того чтобы делить сети на жёсткие классы A, B, C, как будто на дворе 2002-й год, мы получили гибкий инструмент.

Суть проще пареной репы: Запись IP-адрес/префикс — это и есть наш волшебный ключ. Префикс — это просто количество единичек в маске подсети, которые мы не поленились посчитать. Возьмём классику: 192.168.1.0/24.

  • Сеть: 192.168.1.0 — это как адрес дома, где живут все хосты.
  • Маска: 255.255.255.0 — потому что 24 бита слева — единицы. Остальные 8 — нули, для хостов.
  • Кто в доме живет: С 192.168.1.1 по 192.168.1.254. Первый адрес — шлюз обычно, последний — на широковещание.
  • Кричать на всех: 192.168.1.255 — чтобы все в подсети услышали.

Где это в работе встаёт поперёк горла:

  1. Проектируем сети в облаке (VPC): Берём, к примеру, здоровенную сеть /1610.0.0.0/16. Это овердохуища адресов. А потом режем её на аккуратные куски под разные зоны доступности. Как маньяк-повар.

    10.0.1.0/24 — public-subnet-a (публичная, в зоне А)
    10.0.2.0/24 — private-subnet-a (приватная, в зоне А)
    10.0.3.0/24 — public-subnet-b (публичная, в зоне B)

    И так далее. Главное — не накосячить с пересечениями, а то будет тебе хиросима и нигерсраки в маршрутизации.

  2. Безопасность — наше всё: Security Groups и ACLs живут и дышат CIDR. Хочешь пустить SSH только из офиса? Пожалуйста: Ingress: TCP/22, Source: 203.0.113.32/28. Точный, как удар вилкой в глаз. Никаких лишних дыр.

  3. Маршрутизация: В таблицах маршрутов ты именно CIDR-блоки и указываешь. "На сеть 10.10.0.0/16 шли через такой-то интерфейс". Всё чётко.

Чтоб не считать в уме, есть инструменты: Запусти в консоли, и жизнь станет проще. Я серьёзно, терпения ноль ебать — считать эти биты руками.

# Рассчитать сеть и диапазон (Linux)
$ ipcalc 10.0.1.32/27
Address:   10.0.1.32          00001010.00000000.00000001.001 00000
Netmask:   255.255.255.224 = 27
Network:   10.0.1.32/27       00001010.00000000.00000001.001 00000
HostMin:   10.0.1.33          00001010.00000000.00000001.001 00001
HostMax:   10.0.1.62          00001010.00000000.00000001.001 11110
Broadcast: 10.0.1.63          00001010.00000000.00000001.001 11111
Hosts/Net: 30

Вот видишь? Взяли /27 — получили 30 адресов для хостов. Всё наглядно, ни хуя себе, как удобно. Главное — понять принцип, а дальше только практика. И да, не путай /32 с широковещательным адресом, а то сам от себя охуеешь, когда ничего не заработает.