Продвинутые знания CIDR

Предыстория и история

Если вы инженер DevOps или SRE, вы должны использовать одну из этих двух команд: ifconfig и ip addr . Для устранения неполадок в сети обычно вы входите на хост и проверяете конфигурацию и состояние сети, запустив:

root@test:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
    inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fec7:7975/64 scope link 
       valid_lft forever preferred_lft forever

Эта команда показывает все сетевые карты на этой машине. Как видите, каждая сетевая карта имеет IP-адрес. IP-адрес — это коммуникационный адрес сетевой карты в сетевом мире, который эквивалентен номеру дома в нашем реальном мире.

Поскольку это номер дома, он не может быть одинаковым для всех, иначе будут конфликты. Например, если бы все звонили №1001, блок 6, экспресс-доставки было бы некуда. Поэтому иногда на нашем компьютере возникает конфликт сетевых адресов, и возникает ситуация, когда он не может получить доступ к Интернету, большинство из которых - конфликты IP-адресов.

Как показано выше, 10.100.122.2 — это IP-адрес. Адрес разделен точками на четыре части по 8 бит каждая, поэтому всего адрес IPv4 составляет 32 бита. Поскольку адреса IPv4 недостаточно, был изобретен IPv6, который в приведенном выше выводе равен inet6 fe80::f816:3eff:fec7:7975/64. Это 128 бит, которых пока достаточно, но кто знает, что будет в будущем?

Изначально 32-битных IP-адресов было недостаточно, и они были разделены на 5 категорий. Если подумать сейчас, когда тогда выделялись адреса, это была роскошь.

В сетевом адресе, по крайней мере на момент проектирования, есть две основные части для классов A, B и C, первая часть — это номер сети, а вторая часть — номер хоста.

В следующей таблице подробно показано количество хостов, которые могут быть включены в три типа адресов A, B и C.

Вы видите, что максимальное количество хостов, которое может содержать адрес класса C, слишком мало, всего 254. А максимальное количество хостов, которое может содержать адрес класса B, слишком велико. В одну сеть помещается более 60 000 машин, и среднее предприятие в принципе не может достичь такого масштаба, а неиспользуемые адреса тратятся впустую.

CIDR

Бесклассовая междоменная маршрутизация (CIDR) — это метод распределения IP-адресов и IP-маршрутизации. Набор стандартов интернет-протокола (IP) используется для создания уникальных идентификаторов для сетей и отдельных устройств.

Этот метод нарушает практику использования нескольких типов изначально разработанных адресов и делит 32-битный IP-адрес на два: номер сети впереди и номер хоста внизу. спина .

Куда делить? Если вы обратите внимание, то увидите, что 10.100.122.2/24, этот IP-адрес имеет косую черту, а после косой черты стоит цифра 24. Это адресное представление — CIDR. Последние 24 означают, что из 32 бит первые 24 бита — это номер сети, а последние 8 бит — номер хоста.

CIDR был введен в 1992 году, а это означает, что понятие сетевого «класса» на уровне таблицы маршрутизации было отменено и заменено понятием «сетевой префикс». «Бестиповый» означает, что решения о маршрутизации теперь принимаются на основе всей 32-битной маски IP-адреса.

Не имеет значения, относится ли его IP-адрес к классу A, классу B или классу C. Идея такова: объединить множество адресов класса C для присвоения адреса класса B. Такой способ выделения нескольких IP-адресов позволяет объединить множество записей в таблице маршрутизации в меньшее число.

Чтобы использовать это слияние, должны быть соблюдены следующие три свойства:

  • Когда несколько IP-адресов объединяются для маршрутизации, IP-адреса должны иметь одинаковые биты старшего разряда.
  • Таблицы маршрутизации и алгоритмы маршрутизации должны быть расширены, чтобы принимать решения о маршрутизации на основе 32-битных IP-адресов и 32-битных масок.
  • Протокол маршрутизации должен быть расширен, чтобы иметь 32-битную маску в дополнение к 32-битному адресу.

Согласно RFC1466 [Gerich 1993], весь мир разделен на четыре региона, и каждому региону присвоен непрерывный адрес класса C:

  • Европа: 194.0.0.0 ~ 195.255.255.255
  • Северная Америка: 198.0.0.0 ~ 199.255.255.255
  • Центральная и Южная Америка: 200.0 .0.0 ~ 201.255.255.255
  • Азиатско-Тихоокеанский регион: 202.0.0.0 ~ 203.255.255.255

Таким образом, каждый регион имеет около 32 миллионов адресов, а еще 32 миллиона адресов 204.0.0.0 ~ 223.255.255.255 зарезервированы для резервного копирования.
Преимущества такого метода размещения очевидны:

  1. Распределение адресов непрерывно
  2. CIDR упрощает настройку таблицы маршрутизации

Примечание. Диапазоны частных IP-адресов CIDR перечислены ниже:

Пример CIDR

Давайте посмотрим на блок CIDR 16.158.165.91/22. Можете ли вы найти первый адрес, маску подсети и широковещательный адрес этой сети?

Если ваш ответ для первого IP-адреса 16.158.165.1 , то это неправильно. Давайте проведем анализ.

Так как /22 не является целым числом, кратным 8, с ним непросто обращаться. Его можно только сначала преобразовать в двоичный файл. Часть 16.158 не перемещается, она занимает первые 16 бит. 165 в середине становится 10100101 в двоичном формате. В дополнение к первым 16 битам осталось 6 бит. Итак, первые 6 из 8 бит — это номер сети, 16.158.‹101001›, а ‹01›.91 — номер машины.

Так как каждая часть должна иметь 8 бит, поэтому мы добавляем еще два 0 к номеру сети, тогда он становится 16.158.‹10100100› (16.158.164). Первый доступный IP-адрес:16.158.164.1. Диапазон IP-адресов: 16.158.164.0–16.158.167.255.

Обратите внимание, что 16.158.164.0 — это сетевой адрес, а 16.158.164.255 — сетевой широковещательный адрес. Оба зарезервированы.

Пример использования в реальной жизни

Требования:

Предприятию требуется 1000 IP-адресов. Интернет-провайдер имеет блок адресов 200.0.64.0/18.

Анализ:

Поскольку 1000 IP-адресов = 2^10 = 1024, что занимает 10 бит адреса. Блок адресов, назначенный интернет-провайдером предприятию, может быть: 200.0.68.0/22 (бит сети 22, бит хоста 10).

Если у компании четыре дочерних компании, IP-адреса, необходимые для каждой дочерней компании, следующие:

  • 500 для компании А
  • 250 для компании B
  • 120 для компании C
  • 120 для компании D

Давайте сначала проанализируем адресный блок.

Интернет-провайдер: 200.0.64.0/18

  • Первый адрес: 200.0.64.0 = 11001000.00000000.01000000.00000000
  • Последний адрес: 200.0.127.255 =11001000.00000000.01111111.11111111
    Общее количество адресов провайдеров: 2¹⁴ = 16384.

Корпоративные CIDR

Предприятию нужно 1000 IP, начиная с 2¹⁰ = 1024, поэтому мы можем рассчитать, что хостовая часть — 10 бит, сетевая часть — 22 бита. Мы можем выделить 200.0.64.0/22 предприятию.

  • Первый адрес: 200.0.64.0 = 11001000.00000000.010000 00.00000000
  • Последний адрес: 200.0.67.255 = 11001000.00000000.010000 11.11111111

Затем мы можем рассчитать сетевую часть для каждой дочерней компании:

  • Компания А, 500 IPs = 2⁹ = 512 = 9 bits
  • Компания Б, 250 IPs = 2⁸ = 256 = 8 bits
  • Компания С, 120 IPs = 2⁷ = 128 = 7 bits
  • Компания Д, 120 IPs = 2⁷ = 128 = 7 bits

Итак, мы можем выделить следующие CIDR:

  • Компания А: 200.0.64.0/23 (200.0.64.0 ~ 200.0.65.255)
  • Компания Б: 200.0.66.0/24 (200.0.66.0 ~ 200.0.66.255)
  • Компания С: 200.0.66.0/25 (200.0.67.0 ~ 200.0.67.127)
  • Компания D: 200.0.67.128/25 (200.0.67.128 ~ 200.0.67.255)

В реальной жизни вам не нужно выполнять расчеты вручную, есть много онлайн-калькуляторов CIDR, которые вы можете использовать, например https://www.ipaddressguide.com/cidr.