- •Протокол ip
- •Классы адресов и их маски
- •Подсети
- •Маска подсети
- •Практика выделения ip-подсетей
- •Маска подсети переменной длины
- •Практическое использование маски подсети переменной длины
- •Использование технологии cidr
- •Пример использования технологии cidr
- •Настройка протокола ip на маршрутизаторе' Cisco Systems
- •Протокол arp
- •Использование протокола arp для проведения атак
Подсети
В 1985 году документом RFC 950 был определен стандартный процесс поддержки формирования подсетей, или разделения единственного номера сети классов А, В и С на меньшие части. Формирование подсетей было введено для преодоления следующих проблем:
резкий рост таблиц маршрутизации в Интернете;
появление дефицита номеров сетей при необходимости расширения их количества.
Обе эти проблемы решались путем добавления еще одного уровня иерархии к адресной структуре протокола IP. Вместо двухуровневой иерархии новая концепция формирования подсетей вводит поддержку еще одного уровня — третьего. На рис. 2.5 представлен процесс формирования подсетей, в котором номер хоста делится на две части: номер подсети и номер хоста в этой подсети.
Формирование подсетей решает проблему роста таблиц маршрутизации, так как конфигурация подсетей корпоративной сети никогда не видна за пределами организации. Маршруты из Интернета в любую подсеть данного IP-адреса одинаковы, независимо от того, на какой подсети расположен получатель. Это стало возможным потому, что все подсети данного номера сети используют один и тот же сетевой префикс, но с разными номерами подсетей. Маршрутизаторам в частной сети требуется различать отдельные подсети, а у маршрутизаторов в Интернете все эти подсети определены единственной записью в таблицах маршрутизации. Это позволяет администратору частной сети вносить любые изменения в логическую структуру сети без влияния на размер таблиц маршрутизации у маршрутизаторов в Интернете.
Формирование подсетей также позволяет решить вторую проблему, связанную с выделением организации нового сетевого номера или номеров при ее росте. Организации можно выделить один номер сети, после чего администратор имеет возможность произвольно присваивать номера подсетей
каждой из своих внутренних сетей. Это позволяет внедрять дополнительные подсети без необходимости получения нового сетевого номера.
На рис. 2.6 показан пример распределенной сети, состоящей из нескольких логических сетей, которые используют концепцию подсетей внутри одного адреса класса В. Граничный маршрутизатор получает весь трафик, адресованный сети 130.5.0.0 из Интернета, и передает его внутренним подсетям, основываясь на информации, содержащейся в третьем октете.
Формирование подсетей внутри частной сети организации дает следующие преимущества:
размер глобальных таблиц маршрутизации в Интернете не растет, так как администратор частной сети не нуждается в получении дополнительной адресной информации;
администратор получает возможность по своему усмотрению внедрять дополнительные подсети без получения новых номеров сетей;
изменение топологии частной сети не влияет на таблицы маршрутизации в Интернете, поскольку маршрутизаторы в Интернете не имеют маршрутов в индивидуальные подсети организации — они имеют только маршрут в родительскую сеть.
Маска подсети
Если маршрутизаторы в Интернете используют для передачи трафика в окружение подсетей только сетевой префикс адреса получателя, то маршрутизаторы внутри этого окружения для передачи трафика индивидуальным подсетям используют расширенный сетевой префикс. Расширенный сетевой префикс состоит из префикса сети и номера подсети (см. рис. 2.7).
Структуру расширенного сетевого префикса можно представить в виде маски подсети (subnet mask). Маска подсети — это число, двоичная запись которого содержит единицы в тех разрядах, которые должны интерпретироваться как номер сети. Маска подсети позволяет провести четкую границу между двумя частями IP-адреса. Одна часть идентифицирует номер подсети, вторая используется для идентификации хостов в этой подсети.
Хосты и маршрутизаторы используют старшие биты IP-адреса для определения его класса. После того как класс определен, хост может легко найти границу между битами, использующимися для идентификации номера сети и для идентификации номера хоста в этой сети. Однако для определения границ битов, идентифицирующих номер подсети, такая схема не подходит. Для решения этого вопроса используется 32-разрядная маска подсети, которая помогает однозначно определить требуемую границу. Для стандартных классов сетей маски имеют следующие значения:
255.0.0.0 — маска для сети класса А;
255.255.0.0 — маска для сети класса В;
255.255.255.0 — маска для сети класса С.
Например, если используется адрес класса В 130.5.0.0 и сетевой администратор хочет использовать весь третий октет для номера подсети, ему необходимо указать маску подсети 255.255.255.0. Биты в маске подсети задают способ интерпретации битов адреса: если бит в маске подсети равен 1, то система, проверяющая адрес, должна рассматривать соответствующий бит в IP-адресе как часть расширенного сетевого префикса. Другими словами, после определения класса IP-адреса любой бит в части номера хоста, которому соответствует единичный бит в маске подсети, используется для идентификации номера подсети. Оставшаяся часть номера хоста, которой соответствует нулевое значение маски подсети, используется для задания номера хоста. На рис. 2.8 показан пример IP-адреса класса В с соответствующей маской подсети.
Все сказанное можно проиллюстрировать рисунком, из которого становится понятным механизм формирования маски подсети — происходит простое преобразование двоичной записи в десятичную (см. рис. 2.9).
В стандартах, описывающих современные протоколы маршрутизации, часто делается ссылка на длину расширенного сетевого префикса, а не на маску подсети. Данная длина эквивалентна количеству единичных битов в маске подсети. Это означает, что сетевой адрес 130.5.5.25 с маской подсети 255.255.255.0 может быть также записан как 130.5.5.25/24. Число 24 указывает на то, что в маске подсети
255.255.255.0 количество единичных битов равно 24. Такая запись является более компактной и легкой для понимания, чем запись с использованием маски подсети в ее традиционной точечно-десятичной нотации. Рисунок 2.10 иллюстрирует пример записи расширенного сетевого префикса.
. Следует отметить, что большинство современных протоколов маршрутизации переносят маску подсети в своих сообщениях. В то же время не существует стандартного протокола маршрутизации, который имел бы дополнительное однобайтовое поле в заголовке своих сообщений, определяющее число битов в расширенном сетевом префиксе. Протоколы маршрутизации передают полную четырехок-тетную маску подсети.
Перед тем как разрабатывать сеть на базе протокола IP, сетевому администратору необходимо ответить на следующие четыре важных вопроса:
1. Как много подсетей требуется организации сегодня?
2. Как много подсетей может потребоваться организации в будущем?
Для определения какой-либо подсети адмтмотриаиг к: метает двоичное представление ее номера (в данном примере для восыш твасегхш. это может быть число от 0 до 7) в битовое поле номера подсети. Наяршмвр,ЯШ1 определения подсети #4 администратор просто помещает двоичное преяопшвашве числа 4 (000001002) в трехбитовое поле номера подсети. Таблица 2.5. совдрввг нж восемь возможных вариантов подсетей рассматриваемого примера.
Самым простым способом проверки корректности опредевшиишииоетей является контроль кратности всех десятичных номеров подсетей померят подсети #1. В данном примере все номера подсетей кратны 32.
ПРИМЕЧАНИЕ
Компания Cisco Systems включила в свой программный продукт ConfigMaker v2.4 инструмент работы с адресами, называемый IP Subnet Calculator. Администратор, введя адрес и маску подсети, получает полную классификацию (см. рис. 2.12).
Когда схема введения подсетей была опубликована в документе RFC 950, запрещалось использование номеров подсетей, у которых все биты установлены в единицы или нули. Причиной такого ограничения является необходимость устранения возможных проблем при работе тех протоколов маршрутизации, которые не переносят в своих служебных сообщениях ни маску подсети, ни длину расширенного сетевого префикса. Например, если используется протокол маршрутизации RIP (его первая версия — обозначается как RIP-1), который не переносит маску подсети и длину расширенного сетевого префикса, маршруты в разные подсети с адресами 193.1.1.0 /27 и 193.1.1.0 /24 будут рассматриваться как идентичные. То есть без указания маски подсети маршрутизатор не делает различий между маршрутом в одну подсеть и маршрутом во всю сеть. Похожая проблема, но только с определением направления широковещания возникает и в случае равенства всех битов единице. Например, один адрес 193.1.1.255 используется как широковещательный для всей сети 193.1.1.0/24 и для подсети 193.1.1.224/27. Рисунок 2.13 иллюстрирует обе рассмотренные ситуации.
С разработкой протоколов маршрутизации, переносящих маску подсети (OSPF, IS-IS) с каждым рекламируемым маршрутом, стало возможно вопреки документу RFC 950 использовать подсети, все биты которых установлены в единицу и ноль. По этой причине производители позволяют настраивать подсети с такими номерами на портах своих маршрутизаторов. При этом нужно учитывать следующие два фактора: используемые в корпоративной сети протоколы маршрутизации, относящиеся к классу IGP, должны поддерживать маску подсети или расширенный сетевой префикс; необходима поддержка номеров подсетей со всеми единичными и нулевыми битами всеми маршрутизаторами в сети. Кроме того, иногда важно учитывать номер версии программного обеспечения маршрутизатора.
В рассматриваемом примере (табл. 2.6) остается 5 бит для задания адресов хостов в каждой подсети. В результате каждая подсеть может содержать блок из 30 адресов хостов (25 - 2 = 30), которые нумеруются от 1 до 30. Для определения адреса хоста N в сети администратор помещает
двоичноевракпввеяне числа N в поле номера хоста. Например, для определения адреса, иин^ийигпйипщшп присвоить хосту #28 в подсети #2, администратор просто ппмицаит дрииинпр представление 28 (111002) в пятибитовое поле подсети #2. В табл. 25 •оказаны некоторые возможные комбинации номеров хостов в подсети #2.
Для того чтобы проверить корректность широковещательного адреса для определенной подсети, можно использовать следующее простое правило: во всег случаях широковещательный адрес для подсети #N на единицу меньше, чем базовый адрес для подсети #(N+1). Например, широковещательный адрес для подсети #2 (193.1.1.95) на единицу меньше базового адреса подсети #3 (193.1.1.96).
Перед передачей дейтаграммы хосту необходимо определить:
1. Располагается ли получатель в той же подсети, что и отправитель?
2. Если существует более чем один маршрутизатор, имеющий маршрут в нужную сеть, какой маршрутизатор необходимо использовать отправителю?
До введения подсетей процесс передачи выполнялся путем выделения поля сетевого номера из IP-адреса получателя, содержащегося в заголовке IP-дейтаграммы, и последующего сравнения с собственным IP-адресом хоста. Если сетевые номера адреса отправителя и получателя совпадают, то они располагаются в одной локальной сети, и дейтаграмма может быть передана напрямую. Если номера сетей разные, то дейтаграмму необходимо посылать получателю, используя маршрутизатор по умолчанию.
После введения подсетей этот процесс значительно усложнился, так как получатель может располагаться в другой подсети той же самой сети, что и получатель. Для осуществления процесса передачи в этом случае используется маска подсети. Выполняется операция «логическое И» между IP-адресом получателя и маской подсети. Результат сравнивается с результатом выполнения той же операции, но для собственного IP-адреса хоста и той же маски подсети. Если результаты этих двух операций идентичны, то отправитель и получатель находятся в одной подсети и дейтаграмма может быть послана напрямую. Если результаты различны, то получатель находится в другой подсети. В этом случае дейтаграмма посылается маршрутизатору.
В табл. 2.7 и 2.8 представлены некоторые возможные (и наиболее часто используемые) варианты выделения подсетей для сетей классов В и С.
При рассмотрении примера разделения на подсети сети класса С 193.1.1.0 /24 была отмечена рекомендация относительно порядка битов при выделении подсетей. В документе RFC 1219 есть основное правило, которому желательно следовать при присвоении номеров подсетям и хостам. Номера подсетей назначают таким образом, чтобы старшие биты в номере подсети устанавливались первыми. Например, если поле номера подсети состоит из 4 бит, то первые несколько номеров подсетей должны быть следующими: 8 (10002), 4 (01002), 12 (11002), 2 (00102), 6 (01102) и т. д. Иными словами, единичные биты номеров подсетей рекомендуется устанавливать, начиная с крайней левой позиции. В то время как единичные биты номеров хостов рекомендуется устанавливать, начиная с крайней правой позиции (табл. 2.9).
Если следовать этому правилу, то на границе между номером подсети и номером хоста будут существовать нулевые биты. Это позволяет менять маску подсети без изменения IP-адреса, присвоенного хосту. Необходимость в изменении маски подсети может возникнуть при расширении числа хостов в каждой подсети, с учетом того, что планируемое число возможных подсетей обычно больше необходимого в настоящий момент. В этом случае существует возможность «заимствования» под номера подсетей некоторых битов из числа зарезервированных. Достоинством описанного правила является то, что администратору достаточно изменить маску подсети на каждом хосте и не нужно переконфигурировать IP-адреса хостов во всей организации. Изменение адресов потребует больших усилий от администратора, так как в данном случае может потребоваться изменение почтовых сервисов, статических таблиц маршрутизации и т. д.
В сети, которая была разбита на подсети, можно использовать два типа широковещательной передачи информации: направленное широковещание и ограниченное. Направленное широковещание используется для передачи дейтаграммы всем хостам в определенной подсети. Для посылки дейтаграммы всем хостам во всех подсетях необходимо использовать ограниченное широковещание с адресом 255.255.255.255. Однако необходимо учесть, что маршрутизаторы не пропускают дейтаграммы с таким адресом. Существует одно ограничение, накладываемое на направленное широковещание в средах с подсетями. Биты, назначенные для формирования номеров подсетей, обычно являются частью поля номера хоста и не могут быть все установлены в нули или единицы. Например, если есть адрес класса В, в котором третий байт выделен под номера подсетей — 128.1.<Номер подсе-ти>.<Номер хоста>, то в этом случае адрес направленного широковещания не может быть равен 128.1.255.255,128.1.0.255,128.1.255.0 и 128.1.0.0.
Существуют теоретические и практические аргументы, призывающие не использовать верхние (все биты единичные) и нижние подсети (все биты нулевые) в распределенных сетях (можно также встретить термин «граничные подсети»). Как уже не раз отмечалось, теоретически битовое поле содержит два специальных значения: все биты установлены в ноль, что обычно означает «данный», например «данное устройство» или «данная сеть», и все биты установлены в единицу, что
Если следовать этому правилу, то на границе между номером подсети и номером хоста будут существовать нулевые биты. Это позволяет менять маску подсети без изменения IP-адреса, присвоенного хосту. Необходимость в изменении маски подсети может возникнуть при расширении числа хостов в каждой подсети, с учетом того, что планируемое число возможных подсетей обычно больше необходимого в настоящий момент. В этом случае существует возможность «заимствования» под номера подсетей некоторых битов из числа зарезервированных. Достоинством описанного правила является то, что администратору достаточно изменить маску подсети на каждом хосте и не нужно переконфигурировать IP-адреса хостов во всей организации. Изменение адресов потребует больших усилий от администратора, так как в данном случае может потребоваться изменение почтовых сервисов, статических таблиц маршрутизации и т. д.
В сети, которая была разбита на подсети, можно использовать два типа широковещательной передачи информации: направленное широковещание и ограниченное. Направленное широковещание используется для передачи дейтаграммы всем хостам в определенной подсети. Для посылки дейтаграммы всем хостам во всех подсетях необходимо использовать ограниченное широковещание с адресом 255.255.255.255. Однако необходимо учесть, что маршрутизаторы не пропускают дейтаграммы с таким адресом. Существует одно ограничение, накладываемое на направленное широковещание в средах с подсетями. Биты, назначенные для формирования номеров подсетей, обычно являются частью поля номера хоста и не могут быть все установлены в нули или единицы. Например, если есть адрес класса В, в котором третий байт выделен под номера подсетей — 128.1.<Номер подсети>.<Номер хоста>, то в этом случае адрес направленного широковещания не может быть равен 128.1.255.255,128.1.0.255,128.1.255.0 и 128.1.0.0.
Существуют теоретические и практические аргументы, призывающие не использовать верхние (все биты единичные) и нижние подсети (все биты нулевые) в распределенных сетях (можно также встретить термин «граничные подсети»). Как уже не раз отмечалось, теоретически битовое поле содержит два специальных значения: все биты установлены в ноль, что обычно означает «данный», например «данное устройство» или «данная сеть», и все биты установлены в единицу, что
означает «все», например «все устройства» или «все сети». Ранние документы, регламентирующие адресацию в Интернете, рекомендовали оставлять эти значения неиспользуемыми. Это определяло запрет на использование адреса нижней сети из всех нулей и адреса верхней сети из всех единиц. В результате программное обеспечение, обслуживающее протокол IP на сетевых устройствах, проверяло факт настройки пользователем адресации в обход этих правил. На практике использование этих подсетей может быть проблематичным, так как не все устройства, особенно выпущенные давно, поддерживают такую настройку. Для того чтобы избежать проблем, следует быть хорошо осведомленным о конкретном устройстве и выяснить, какое адресное пространство оно позволяет настроить. Маршрутизаторы фирмы Cisco Systems допускают настройку на использование рассматриваемых подсетей, так что в свое распоряжение можно получить еще одну подсеть. Для того чтобы использовать нижнюю подсеть, нужно выполнить команду ip subnet-zero в глобальном режиме конфигурации.
Routerfconfigure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#ip subnet-zero
В том случае, если администратор сети не вводил эту команду на маршрутизаторе, попытка настроить интерфейс с адресом нижней подсети приведет к появлению сообщения об ошибке:
Routerfconfigure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#no ip subnet-zero
Router(config)#interface sen all
Router(config-if)#ip address 192.168.1.2 255.255.255.224
Bad mask /27 for address 192.168.1.2
