Разбиение сети на подсети одинакового размера

Сети необходимо разбивать на подсети меньшего размера для увеличения производительности сетей и обеспечения безопасности. Подробнее об этом можно прочесть в соответствующей статье. Существует два способа такого разбиения: простой и более гибкий (с использованием VLSM) в данной статье речь пойдёт о более простом способе — разбиение сети на подсети одинакового размера. Перед прочтением этого материала я рекомендую посмотреть информацию о структуре IP адреса (сетевой и хостовой частях).

Пример 1

Рассмотрим для начала самый простой пример: имеется сеть 10.10.0.0/16 и стоит задача получить несколько десятков сетей поменьше. В исходной сети два октета (10.10) являются сетевой частью IP адреса и два (0.0) — хостовой. Простейшим вариантом разбиения будет увеличение префикса с /16 до /24. Таким образом, мы получаем в наше распоряжение весть третий октет, теперь мы можем в нём менять значения и получать 256 разных сетей, в каждой из которых будет по 254 хоста. А именно:

10.10.0.0/24 
10.10.1.0/24 
10.10.2.0/24 
... ещё 252 сети ... 
10.10.255.0/24

Важно что эти подсети в сумме образуют нашу исходную сеть 10.10.0.0/16 и не один адрес не выходит за её пределы. Как же произошло такое разбиение? Исходный адрес выглядел в двоичном виде так: 00001010. 00001010.|00000000.00000000 (вертикальная черта означает границу между сетевой и хостовой частями). После изменения префикса с /16 на /24 адрес стал выглядеть так: 00001010. 00001010.|00000000.|00000000 мы меняем третий октет (между двумя вертикальными чертами на любые значения и при этом гарантированно не вылезаем за пределы предоставленной нами сети (для того чтобы вылезти за её пределы надо поменять первые два октета). Сколько подсетей мы получили? Для того чтобы жто посчитать — надо узнать сколько бит мы добваили к префиксу (выделили на подсети): 24-16=8. 8 бит позволяют разместить 28=256 различных подсетей.

Пример 2

Возьмём более сложный пример. У нас есть сеть 192.168.128.128/25 и нам надо во что бы то ни стало получить 10 подсетей. Посчитаем, сколько бит нам надо выделить, чтобы в них влезло 10 подсетей. Для этого найдём минимальную степень двойки, которая была бы больше или равна 10 — это 16, то есть 24. Таким образом, мы можем выделить 4 бита и получим 16 подсетей. Префикс был 25, а стал 25+4=29. Какого же размера окажутся полученные подсети? В хостовой части останется 32-29=3 бита, то есть сети будут на 23-2=8-2=6 IP адресов. Если нас устраивают такие маленькие сети, то давайте вычислим их.

Исходный адрес имеет вид 11000000.10101000.10000000.1|0000000, после выделения подсетей получим адрес 11000000.10101000.10000000.1|0000|000 в котором мы можем расписать все комбинации для выделенных четырёх бит. Получаются сети:

11000000.10101000.10000000.1|0000|000 – 192.168.128.128/29
11000000.10101000.10000000.1|0001|000 – 192.168.128.136/29
11000000.10101000.10000000.1|0010|000 – 192.168.128.144/29
11000000.10101000.10000000.1|0011|000 – 192.168.128.152/29
11000000.10101000.10000000.1|0100|000 – 192.168.128.160/29
11000000.10101000.10000000.1|0101|000 – 192.168.128.168/29
11000000.10101000.10000000.1|0110|000 – 192.168.128.176/29
11000000.10101000.10000000.1|0111|000 – 192.168.128.184/29
11000000.10101000.10000000.1|1000|000 – 192.168.128.192/29
11000000.10101000.10000000.1|1001|000 – 192.168.128.200/29
11000000.10101000.10000000.1|1010|000 – 192.168.128.208/29
11000000.10101000.10000000.1|1011|000 – 192.168.128.216/29
11000000.10101000.10000000.1|1100|000 – 192.168.128.224/29
11000000.10101000.10000000.1|1101|000 – 192.168.128.232/29
11000000.10101000.10000000.1|1110|000 – 192.168.128.240/29
11000000.10101000.10000000.1|1111|000 – 192.168.128.248/29

Благодаря тому что мы нигде не меняли ни одного бита левее первой вертикальной черты (исходного префикса) мы точно не вылезли за пределы предоставленной нам исходной сети. Как видно, этот пример, в отличие от предыдущего не так просто посчитать в уме, надо смотреть на адреса в двоичном виде.

Алгоритм разбиения сети на подсети одинакового размера

Подытожим в общем виде алгоритм резбиения сети на подсети одинакового размера. Сначала нам надо понять сколько бит выделить на подсети. Если у нас стоит задача получить n подсетей, то мы ищем минимальную степень двойки k такую что 2k≥n и делаем новый префикс m (исходный префикс + k). Другая задача, если у нас не задано количество подсетей, но есть требования к их размеру (чтобы в них вмещалось как минимум n хостов), то мы опять же ищем минимальную степень двойки k Такую что 2k≥n+2 (два адреса добавляется потому что сеть ещё должна вместить адрес сети и брудкастовый адрес). И устанавливаем новый префикс m=32-k (чтобы в хостовой части у нас осталось k бит для адресации устройств).

Как бы ни формулировалось исходное требование, после первого шага алгоритма мы получаем новый префикс m. На втором шаге алгоритма мы должны выделить место на подсети. Оно будет находиться в адресе в промежутке между исходным префиксом и новым префиксом m. Далее надо просто в двоичном виде заполнить эти биты (выделенные для подсетей) всеми возможными комбинациями единиц и нулей, перевести адреса в десятичный вид. Разбиение готово.

Рекомендации по разбиению сетей

Если вы не чувствуете в себе силы справиться с этой задачей легко и не имеете достаточного опыта, то у меня есть рекомендация: делайте всё всегда в двоичном виде по приведённому выше алгоритму. Моя практика показывает, что большая часть ошибок возникает, когда студент пытается разбивать сети на глаз, интуитивно, прямо в десятичном виде, считая, что он уже постиг все принципы. Делайте все вычисления в двоичном виде. Со временем вы накопите опыт, поймёте закономерности и сможете решать большую часть таких задач в уме. Но для начала — переводите в двоичный вид и рисуйте вертикальные чёрточки. Всё что получилось между двумя вертикальными чертами (старым и новыми префиксами) — это и есть ваши подсети.

Комментарии

10.10.256.0/24 . WAAAAT?

Аватар пользователя bacek
Спасибо ))))) Сводящая с ума опечатка ))))

ХАХААХХА))

нужно каждое число ip адреса разделить на 24

как разделить 192.168.0.0/24 на 4 подсети?

Аватар пользователя bacek

На 4 равные подсети - значит надо выделить из хостовой части два бита, потому что два во второй степени даёт 4.

То есть префикс будет 24+2=26

Подсети соответственно получатся

  1. 192.168.0.0/26
  2. 192.168.0.64/26
  3. 192.168.0.128/26
  4. 192.168.0.192/26

привет можно вопрос откуда взялся 192.168.0.64 192.168.0.128 ну если разделить сеть на 4 что надо знать сперва наверное хость и патом на сеть то есть ты на первом 192.168.0.64 64 хост подключил

Аватар пользователя bacek

192.168.0.0/24 - исходная сеть имеет вид 11000000.10101000.00000000.|00000000 — тут вертикальная черта — граница хостовой и сетевой частей

Мы поняли, что надо выделить два бита для разбиения на 4 подсети 11000000.10101000.00000000.|00|000000 — вот я выделили эти два бита из хостовой части, теперь они будут относиться к сетевой. Два бита могут принимать 4 разных значения: 00, 01, 10, 11. Запишем 4 сети с этими 4мя вариантами:

  1. 11000000.10101000.00000000.|00|000000/26
  2. 11000000.10101000.00000000.|01|000000/26
  3. 11000000.10101000.00000000.|10|000000/26
  4. 11000000.10101000.00000000.|11|000000/26

Переводим их в десятичный вид:

  1. 192.168.0.0/26
  2. 192.168.0.64/26
  3. 192.168.0.128/26
  4. 192.168.0.192/26

Вот мы получили 4 адреса сетей (подсетей исходной сети) теперь в каждой из них можно смотреть диапазоны хостов:

  1. Хосты 192.168.0.1 — 192.168.0.62
  2. Хосты 192.168.0.65 — 192.168.0.126
  3. Хосты 192.168.0.129 — 192.168.0.190
  4. Хосты 192.168.0.193 — 192.168.0.254

Что тут не понятно? :-)

Самая интуитивно понятная статья по разбиению . прочел. понял алгоритм. дерзай.
Автору добра!

Как разделить 192.168.102.0/24 на 3 подсети

Аватар пользователя bacek
на 3 равных не дклится - можно на 2,4,8,16,32 и т.п. Поэтому когда задача так формулируется, надо делить на 4. 2-мя коментами выше делю на 4.

Здравствуйте, почему в примере 2 сеть в десятичном представлении такая 192.168.128.0/25, а в двоичном уже такая 11000000.10101000.10000000.1|0000000, откуда в последнем октете 1, если они должны быть все 0?
Спасибо

Аватар пользователя bacek
Вы совершенно правы, я исправил опечатку. Исходная сеть на самом деле 192.168.128.128/25 и все дальнейшие вычисления выполнены правильно исходя из этой сети. А вот сама сеть была записана неправильно. Спасибо вам! Обожаю когда кто-то читает достаточно внимательно чтобы найти ошибку.

Привет! Спасибо за статью. Есть похожая задача, но туплю.
С помощью какой маски подсети можно разделить сеть 172.33.49.112/28 на 4 подсети?
Судя по комментам, это нужно 28+4=32. А что дальше? Просят ответ в точечно-десятичной нотации. Это как? Что должно получиться? Как учат, так и получают :(

Аватар пользователя bacek
Здравствуйте. В не внимательно читали. 4 подсети - означает, что нужно добавить столько бит, сколько нужно чтобы закодировать 4 разных значения. Для 4х значений достаточно 2х бит, так как 2^2=4 (варианты 00,01,10,11) - то есть префикс будет 28+2=/30 Сети будут 112, 116, 120 и 124.

192.168.0.0/24 как разделить 1 сеть на 15 сетевых узлов

Аватар пользователя bacek

Не самый корректный вопрос - что значит разделить сеть на 15 узлов - в неё и так входит 254 узла, то есть она их вместит без разбиения. Если вопрос звучит иначе — как разделить сети на подсети равного размера, каждая из которых вмещала бы по 15 хостов, то тогда ответ в данной статье есть :) Новые подсети должны вмещать себя по 30 хостов, потому что исходя из степеней двойки мы можем делать 2^n-2 хостов. 2, 6, 14, 30, 62, ... 14 нам не подходит, а 30 - минимально возможная сеть на 15 хостов. 30 - это 2^5-2, то есть в хостовой части нам надо оставить 5 бит. Значит полученые сети будут обладать префиксом 32-5 - то есть /27 сами эти сети считаются аналогично тому что есть в данной статье выше.

Аватар пользователя Valger

Здравствуйте. Можете пожалуйста включить опцию редактирования собственных комментариев?

Интересно как будет решение разделить под сеть с данным адресом 10.15.35.64/22 по 64 ип адреса - сколько же сетей будет ? и почему

Аватар пользователя Valger

Если я не ошибаюсь, то при префиксе /22 будет доступно 1024 IP-адресов в хостовой части. Следовательно, если нужно что бы в каждой подсети было по 64 IP-адреса (включая идентификатор сети и броадкаст), то нужно сначала определить сколько битов из хостовой части будет использовано для разделения на подсети.

64=2^6 Значит из хостовой части (справа-налево) 6 бит будет использовано под диапазоны IP-адресов подсетей, а левая часть до сетевой части будет использована для разделения на подсети. Для разделения на подсети имеем 4 бита. 2^4=16. Получаем 16 подсетей по 64 IP-адреса в каждой.

https://docs.google.com/spreadsheets/d/1WBYZec-jFAJboCA0qXazjCrB1EThYwwMELQ9P9lN6kg/edit?usp=sharing вот тут можно посмотреть, как я это сделал. Надеюсь, что правильно. Таблица с именем "10.15.35.64/22"

 

 

Помогите, пожалуйста, с задачкой. Нужно 1) 101.0.0.0/8 разбить на 3 подсети; 2) написать широковещательный адрес первой подсети
Записал исходный адрес в двоичной СС: 01100101.00000000.00000000.00000000. Определил, что степень двойки будет 4, т.е. 2^2 = 4. Новый префикс, соответственно, 10 (8 + 2 = 10). А дальше все, завис.
Буду очень благодарен за помощь. Спасибо.

01100101.|00|111111.11111111.11111111 - 101.63.255.255/10
01100101.|01|111111.11111111.11111111 - 101.127.255.255/10
01100101.|10|111111.11111111.11111111 -101.191.255.255/10
01100101.|11|111111.11111111.11111111 -101.255.255.255/10

Тут надо заметить, что это броудкасты сетей)

"Благодаря тому что мы нигде не меняли ни одного бита левее первой вертикальной черты (исходного префикса) мы точно не вылезли за пределы предоставленной нам исходной сети. " - предпоследнее предложение примера 2
Возможно тут ошибка. Вы написали, что мы не меняли ни одного байта левее ПРАВОЙ вертикальной черты, но вы имели ввиду, по идее ЛЕВУЮ вертикальную черту, левее от которой как раз и находится адрес исходной сети. Левее правой черты находятся адреса подсетей

Аватар пользователя bacek

Ошибки вроде бы нет — у меня написано левее первой а не левее правой. Но по логике вы пишете совершенно правильно — левая (первая) вертикальная черта определяет границу исходной сети и если мы поменяли что-то левее неё, значит мы разбиваем 100% не правильно. Спасибо вам за вопрос и внимательность.

 Помогите, пожалуйста разделить  сеть172.16.0.0 /18 на 4 подсети. 

Добрый день.
Отдаём два бита (19 и 20) под наши подсети и получаем их адреса
10101100.00010000.00|00|0000.00000000 - 172.16.0.0/20
10101100.00010000.00|01|0000.00000000 - 172.16.16.0/20
10101100.00010000.00|10|0000.00000000 - 172.16.32.0/20
10101100.00010000.00|11|0000.00000000 - 172.16.48.0/20

В итоге то правильно или не?
Тип а как тогда можно разбить сеть 128.67.0.0/16 на 16 подсетей?

Добрый день,
Помогите разобраться плиз. Есть такая задача:
"Дано адресное пространство следующего вида - "10.10.18.х/?". Длину маски рассчитайте исходя из того, чтобы в каждой образовавшейся подсети можно было разместить ровно 36 клиентов. Для адресации в домене Pest.com используйте пятую по счету подсеть. В качестве адреса DC1 используйте первый возможный адрес из этой подсети."
Из того, что я проштудировал в инете (в т.ч. на Вашем сайте), возникают следующие вопросы:
1) Правильно ли я понимаю задание, что нам отдан на "съедение" весь последний октет (тот самый икс в условии), т.е. все 8 его бит, откуда максимум клиентов, которым мы можем предоставить адреса, составляет: 2^8-2=256-2=254 (без разделения на подсети)?
2) Правильно ли я понимаю, что формулировка задачи в части "...РОВНО 36 клиентов..." некорректна? Ведь 36+2=38 не яляется степенью двойки, и можно лишь взять с запасом, а именно - 6 бит на подсеть, т.е. 2^6=64-2=62>=36...
3) Но в таком случае (см. вопрос 2) выше) из наших 8ми бит остается 8-6=2, что означает, что мы может создать только 2^2=4 подсети; как же это тогда соотносится с заданием "...используйте ПЯТУЮ по счету подсеть..."??
...Теоретически это вроде как возможно: 36 клиентов + номер подсети + бродкаст = 38 узлов в подсети; общее пространство - 2^8-2=256; делим 256 на 38, получаем 6 целых с "хвостиком", т.е., типа, всего "влезает" 6 подсетей, а значит мы можем использовать пятую, но ведь все это не степени двойки...?

Здравствуйте, тут ошибка "В хостовой части останется 32-29=3 бита, то есть сети будут на 2^(3-2)=8-2=6 IP адресов." 2^(3-2)=8-2=2. И почему вы вычитаем (3-2) откуда эта два взялась?

Дана сеть 200.210.220.0/27. Разделить на 4 подсети.

Ребят помогите, пожалуйста. Задача: разделить сеть 10.16.0.0/25, на 5 подсетей по 2, 4, 45, 13 и 25 хостов в каждой.

Дана сеть 192.168.1.0/24. Выполните разбиение, если это возможно, данной сети на 4 подсети: две на 50 узлов и две на 30 узлов. Каждую из подсетей при разбиении следует выбирать минимального размера, подходящего для размещения требуемого количества узлов. После выполнения разбиения укажите:

а) Адреса каждой из подсетей и их маски в десятичной точечной нотации;

б) Точное количество адресов в каждой из подсетей, которые можно назначить узлам сети;

в) Широковещательные адреса по каждой из подсетей.

А как разбить 10.2.2.64/26 на 8 под¬сетей с маской /29 каждая

Во втором примере опечатка? 2^(3-2) вместо (2^3)-2.
2 не должна быть в степени.

Добавить комментарий