Как разместить две подсети рядом друг с другом?


10

Я использую этот калькулятор http://www.subnet-calculator.com/cidr.php , и я пытаюсь выяснить, как разместить две разные подсети рядом друг с другом.

Например, я хочу иметь подсеть / 27, начинающуюся с 1.0.0.1, рядом с / 25, поэтому я подумал, что подсеть / 25 должна начинаться с 1.0.0.32, так как она находится за пределами подсети / 27. Однако, когда я пытаюсь это сделать, калькулятор говорит, что диапазон для / 25 будет 1.0.0.1-1.0.0.127, а не начиная с 0,32.

Это ограничение калькулятора или как вы размещаете подсети рядом друг с другом?

РЕДАКТИРОВАТЬ : я думаю, мой вопрос, какие подсети могут идти рядом друг с другом? Что определяет это?


Вы не можете иметь / 25, начиная с 1.0.0.32, если это то, что вы просите. Помните, что подсети - это не произвольные диапазоны, а просто способ отличить номер хоста от номера сети.
BatchyX

Я думаю, мой вопрос в том, какие подсети могут идти рядом друг с другом? Есть ли документ или ссылка, по которой можно пойти куда?
instipod

2
Я предлагаю вам прочитать о битовых масках, тогда вы поймете, что такое маска подсети.
BatchyX

Ответы:


7

Вы должны различать начальный адрес подсети и размер подсети . Число за косой чертой - это размер (в 32-х битах). Таким образом, вы можете иметь две / 27 подсетей, как это

10.0.0.1/27  == 10.0.0.1  -> 10.0.0.30
10.0.0.33/27 == 10.0.0.33 -> 10.0.0.62

но подсеть a / 27 и a / 25 таким же образом означала бы запуск / 25 по более позднему адресу

10.0.0.1/27   == 10.0.0.1   -> 10.0.0.30
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254

поскольку подсети / 25 «нужно» больше места. Вы не можете запустить подсеть / 25 по произвольному адресу, только с правильных границ:

10.0.0.1/25   == 10.0.0.1   -> 10.0.0.126
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254

но обратите внимание, что

10.0.0.33/25   == 10.0.0.1   -> 10.0.0.126

потому что 10.0.0.33/25это просто еще один способ сказать 10.0.0.1/25или 10.0.0.0/25.

Вы также можете решить «заполнить» пространство между вами / 27 и вашей / 25 подсетью больше / 27 подсетей:

10.0.0.1/27   == 10.0.0.1   -> 10.0.0.30
10.0.0.33/27  == 10.0.0.33  -> 10.0.0.62
10.0.0.65/27  == 10.0.0.65  -> 10.0.0.94
10.0.0.97/27  == 10.0.0.97  -> 10.0.0.126
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254

или с другим / 27 и / 26:

10.0.0.1/27   == 10.0.0.1   -> 10.0.0.30
10.0.0.33/27  == 10.0.0.33  -> 10.0.0.62
10.0.0.65/26  == 10.0.0.65  -> 10.0.0.126
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254

1
Подсети включают в себя сетевой адрес и широковещательный адрес ... у вас нет неиспользуемых IP-адресов между смежными подсетями. И попытка объяснить, почему некоторые подсети могут быть объединены в более короткую маску без двоичной математики, полностью вводит в заблуждение.
cpt_fink

4

Префиксы / подсети используют двоичную логику. Подсети определяются битами, которые являются фиксированными, и битами, которые можно использовать для адресов. Количество фиксированных битов - это длина префикса или маска подсети. Несколько примеров IPv4:

Prefix:           10.0.0.0/8
Prefix length:    8
Subnet mask:      255.0.0.0
Prefix bits:      00001010 00000000 00000000 00000000 = 10.0.0.0
Subnet mask bits: 11111111 00000000 00000000 00000000 = 255.0.0.0

A 1в битах маски подсети указывает, что соответствующий бит является фиксированным, и 0указывает, что вы можете использовать этот бит. Длина префикса - это количество битов, установленное на 1, а маска подсети - это двоичное число, записанное в виде адреса IPv4.

Так что в этом примере вы можете использовать:

First address in the prefix: 00001010 00000000 00000000 00000000 = 10.0.0.0
Last address in the prefix:  00001010 11111111 11111111 11111111 = 10.255.255.255

Еще один пример с другой длиной префикса:

Prefix:           10.0.0.0/10
Prefix length:    10
Subnet mask:      255.192.0.0
Prefix bits:      00001010 00000000 00000000 00000000 = 10.0.0.0
Subnet mask bits: 11111111 11000000 00000000 00000000 = 255.192.0.0

В этом примере вы можете использовать меньше адресов:

First address in the prefix: 00001010 00000000 00000000 00000000 = 10.0.0.0
Last address in the prefix:  00001010 00111111 11111111 11111111 = 10.63.255.255

Как видите, подсеть определяется значением и количеством фиксированных битов. При использовании вашего примера 1.0.0.32/25вы получаете:

Prefix:           1.0.0.32/25
Prefix length:    25
Subnet mask:      255.255.255.128
Prefix bits:      00000001 00000000 00000000 00100000 = 10.0.0.32
Subnet mask bits: 11111111 11111111 11111111 10000000 = 255.255.255.128

First address in the prefix: 00000001 00000000 00000000 00000000 = 1.0.0.0
Last address in the prefix:  00000001 00000000 00000000 01111111 = 1.0.0.127

Значение 32 находится в середине гибких битов. При просмотре /25префиксов вы получаете:

Prefix length:      25
Subnet mask bits:   11111111 11111111 11111111 10000000

1st /25 in 1.0.0.0: 00000001 00000000 00000000 00000000 = 1.0.0.0/25
2nd /25 in 1.0.0.0: 00000001 00000000 00000000 10000000 = 1.0.0.128/25
3rd /25 in 1.0.0.0: 00000001 00000000 00000001 00000000 = 1.0.1.0/25
4th /25 in 1.0.0.0: 00000001 00000000 00000001 10000000 = 1.0.1.128/25
5th /25 in 1.0.0.0: 00000001 00000000 00000010 00000000 = 1.0.2.0/25
Etc.

При просмотре /27префиксов вы получаете:

Prefix length:      27
Subnet mask bits:   11111111 11111111 11111111 11100000

1st /25 in 1.0.0.0: 00000001 00000000 00000000 00000000 = 1.0.0.0/27
2nd /25 in 1.0.0.0: 00000001 00000000 00000000 00100000 = 1.0.0.32/27
3rd /25 in 1.0.0.0: 00000001 00000000 00000000 01000000 = 1.0.0.64/27
4th /25 in 1.0.0.0: 00000001 00000000 00000000 01100000 = 1.0.0.96/27
5th /25 in 1.0.0.0: 00000001 00000000 00000000 10000000 = 1.0.0.128/27
Etc.

В подсети IPv4 первый адрес (все гибкие биты 0) зарезервирован и называется сетевым адресом. Последний адрес (все гибкие биты 1) является широковещательным адресом подсети. Вы не можете использовать их для сетевых интерфейсов на устройствах.

Если вы хотите разместить несколько подсетей рядом друг с другом, вы должны убедиться, что они не перекрываются. Если у вас не так много адресного пространства, как в случае IPv4, подгонка всех подсетей может быть очень сложным процессом, а поддерживать его в управлении при изменении плана адресации еще сложнее. Вот почему с IPv6 так приятно работать: много адресного пространства, и обычно есть подсеть /64(можно использовать префиксы различной длины, но это может нарушить некоторые вещи, такие как автоконфигурация).

Если вас интересуют планы адресации IPv6, взгляните на документ «Подготовка плана адресации IPv6», который я написал пару лет назад для SURFnet (Голландской национальной сети исследований и образования). Способ работы подсетей в IPv6 точно такой же, как и для IPv4, за исключением того, что числа намного больше и записаны в шестнадцатеричном формате (что намного лучше соответствует битам, чем десятичное представление, используемое для IPv4!). Хотя длина префикса с фиксированными и гибкими битами работает одинаково. Краткий пример:

Prefix:           2001:0db8:0000:0000:0000:0000:0000:0000/64
Prefix length:    64
Subnet mask:      not really used anymore in IPv6, but it would have been:
                  ffff:ffff:ffff:ffff:0000:0000:0000:0000
Prefix bits:      0010 0000 0000 0001 0000 1101 1011 1000 = 2001:0db8
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
Subnet mask bits: 1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
                  1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000

First address in the prefix:
                  0010 0000 0000 0001 0000 1101 1011 1000 = 2001:0db8
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
Last address in the prefix:
                  0010 0000 0000 0001 0000 1101 1011 1000 = 2001:0db8
                  0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
                  1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
                  1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff

So from 2001:0db8:0000:0000:0000:0000:0000:0000
     to 2001:0db8:0000:0000:ffff:ffff:ffff:ffff

PS: я не использовал рекомендованную / каноническую запись здесь специально. Обычно вы сжимаете нули в адресе и пишете 2001:0db8:0000:0000:0000:0000:0000:0000как 2001:db8::, 2001:0db8:0000:0000:0000:0000:0000:0001пишется как 2001:db8::1и т. Д.


1
  • Для a / 24 последний октет (обычно зарезервированный) для сети равен .0 и только .0. 1 subnet

  • Для / 25 он может быть равен или .0, или .128. 2 subnets

  • Для a / 26 это может быть или .0, .64, .128 или .192. 4 subnets

  • Для a / 27 это может быть либо .0, .32, .64, .96, .128, .160, .192 или .244. 8 subnets

  • для / 28, .0, .16, .32, .48, .64, .80, .96, .112, .128, .144, .160, .176, .192, .208, .244, или 0,240. 16 subnets

  • для / 29, .0, .8, .16, .24, .32, .40, .48, .56, .64, .72, .80, .88, .96, .104, .112, .120, .128, .136, .144, .152, .160, .168, .176, .184, .192, .200, .208, .216, .224, .232, .240, или. 248 32 subnets

  • Префикс / 30 обычно встречается в двухточечных интерфейсах. 64 subnets

  • Префикс / 31 обычно не встречается в дикой природе, так как он не имеет общедоступных хостов, поскольку он охватывает только 2 номера сети: «сеть» и «широковещание» без места для IP-адреса хоста. 128 subnets(все четные числа от 0 до 254)

  • Префикс / 32 используется для указания маршрута для одного хоста. Это наиболее специфичный из маршрутов и, если он присутствует, должен иметь приоритет маршрутизации над всеми другими записями таблицы маршрутов, которые также не являются / 32. У A / 32 нет ни «сетевого», ни «широковещательного» адреса. 256 subnets (0 и 255 могут не работать в некоторых реализациях)


0

Простой способ понять это:

В IPv4:

Представьте себе строку из 256 * 256 * 256 * 256 (или 2 ^ 32) возможных IP-адресов.

[] [] [] [] .................. [] [] []
       256*256*256*256 total IP adresses

Он имеет маску подсети 0.0.0.0 (или 0000 0000 0000 0000 0000 0000 0000 0000 в двоичном виде).
Все биты, которые не маскируются, могут использоваться для предоставления IP-адреса в этой сети.

Возможные адреса в этой единственной сети:

0000 0000 0000 0000 0000 0000 0000 0000 (<- NETMASK, здесь ничего не маскируется ...)

0000 0000 0000 0000 0000 0000 0000 (IP 0.0.0.0) до
1111 1111 1111 1111 1111 1111 1111 1111 (IP 255.255.255.255)

Вся эта сеть начинается с IP 0.0.0.0 и продолжается до IP 255.255.255.255

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

Первый бит в маске подсети разделит его на 2 равные части, каждая с IP-адресами 128 * 256 * 256 * 256 (или 2 ^ 31):

[] [] [] .......... [] [] []  |  [] [] ........... [] []
128*256*256*256 IP Adresses       128*256*256*256 IP Adr

Это имеет маску подсети 128.0.0.0 (или 1000 0000 0000 0000 0000 0000 0000 0000 в двоичном виде).
Все биты, которые не маскируются, могут использоваться для предоставления IP-адреса в этой сети.

Таким образом, вы можете иметь 2 подсети, и для каждой подсети у вас есть 31 бит доступных IP-адресов.

Для первой подсети (та, где за маской сети стоит '0')

1000 0000 0000 0000 0000 0000 0000 (<- NETMASK)

0000 0000 0000 0000 0000 0000 0000 (IP 0.0.0.0) -
0111 1111 1111 1111 1111 1111 1111 1111 (IP 127.255.255.255)

и для 2-й подсети (та, где за маской сети стоит '1')

1000 0000 0000 0000 0000 0000 0000 (<- NETMASK)

1000 0000 0000 0000 0000 0000 0000 (IP 128.0.0.0) -
1111 1111 1111 1111 1111 1111 1111 1111 (IP 255.255.255.255)

Следующий дополнительный бит в маске подсети делит обе стороны на 2 равные части по 2 ^ 30 IP-адресов каждый

И так далее...

Таким образом, если вы попытаетесь назначить, скажем, подсеть / 3, это означает, что вы провели 3 итерации деления, в результате чего получилось 2 ^ 3 = 8 подсетей. Каждая подсеть может быть только одним из 8 подразделений всей линейки машин. Они не могут пересекаться. Каждый начинается после первого.

[] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... []
32*256*256*256 or 2^30 IP Adresses each.

Это имеет маску подсети 0.0.0.0

Таким образом, для первой подсети (та, где за маской сети стоит «000»)

1110 0000 0000 0000 0000 0000 0000 0000 (<- NETMASK)

0000 0000 0000 0000 0000 0000 0000 (IP 0.0.0.0) -
0001 1111 1111 1111 1111 1111 1111 1111 (IP 31.255.255.255)

и для 2-й подсети (та, где за маской сети стоит '001')

1110 0000 0000 0000 0000 0000 0000 (NETMASK)

0010 0000 0000 0000 0000 0000 0000 (IP 32.0.0.0) -
0011 1111 1111 1111 1111 1111 1111 1111 (IP 63.255.255.255)

...

и для 7-й подсети (та, где за маской сети стоит «110»)

1110 0000 0000 0000 0000 0000 0000 (NETMASK)

1100 0000 0000 0000 0000 0000 0000 (IP 192.0.0.0) -
1101 1111 1111 1111 1111 1111 1111 1111 (IP 223.255.255.255)

и для 8-й подсети (та, где за маской сети стоит «111»)

1110 0000 0000 0000 0000 0000 0000 (NETMASK)

1110 0000 0000 0000 0000 0000 0000 (IP 224.0.0.0) до
1111 1111 1111 1111 1111 1111 1111 1111 (IP 255.255.255.255)

Если вы продолжаете добавлять бит в маску сети, вы продолжаете делить: подсеть / 32 выделяет одну машину.

Но помните, что вы не можете иметь только машины:

чтобы все работало, часть диапазона подсети зарезервирована:

для каждой подсети «0 бит со значением 1» и «все биты со значением 1» обычно зарезервированы для широковещательной передачи, поэтому обычно в подсети доступно только nb_of_possible_adresses_in_the_subnet-2 IP-адреса для реальных машинных интерфейсов. И лучше всего быть интерфейсом шлюза, который имеет другой интерфейс в других сетях, что позволяет вам использовать его в качестве шлюза для доступа к этим другим сетям (и всему, через шлюзы этих других сетей)


трудно представить аккуратно ... И я надеюсь, что путаница между "строкой из 2 ^ 32 IP-адресов" и 32-битным представлением, используемым повсюду, не более запутанна, чем помощь ...
Оливье Дюлак
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.