Деление на подсети: разделение локальной сети с помощью vlan
Одной из «классических» задач сисадмина является необходимость в рамках одного предприятия разделить одну физическую сеть на несколько виртуальных – по признаку принадлежности к отделу, департаменту, вип-персонам и т.д. Даже если вы будете использовать в качестве маршрутизатора и фаервола сервер с ОС Linux, осуществляющий технологию «ip-alias», вы не сможете быть уверены в своей безопасности на 100%.
Дело в том, что вышеуказанная технология позволяет одному и тому же интерфейсу вашего сервера выступать в роли нескольких шлюзов для разных подсетей, но она не сможет уберечь вашу сеть от прослушивания трафика.
И причина тому проста – пользователи разных отделов будут оставаться в одном широковещательном домене в рамках коммутатора, хоть подсети будут разными.
Разделение локальной сети с помощью vlan
Для решения данной проблемы используется технология VLAN (Virtual Local Area Network), позволяющая логически разделить физическую сеть на несколько широковещательных не пересекающихся промеж себя доменов, и соответственно, улучшающую безопасность локальной сети. Иными словами, VLAN позволяет осуществлять деление на подсети и создавать отдельные сетевые сегменты на 2-м, канальном, уровне модели OSI в рамках одного или нескольких физических коммутаторов вашей сети.
Обычно коммутатор передает данные от одного устройства к другому на основании mac-таблицы, которая содержит в себе информацию о mac-адресе устройства и физическом порте, с которого данный mac пришел. При разделении локальной сети с помощью vlan добавляется еще информация о принадлежности к определенному сегменту сети – номер vlan.
Технология VLAN позволяет избавиться от большого количества широковещательного трафика, примером которого являются arp-/dhcp-бродкасты или же мультикаст (multicast), использующийся при передаче видеопотоков. Такой тип трафика «съедает» полезную пропускную способность вашей сети.
Как правильно разбить сеть на vlan?
Рассмотрим, как разделить сеть на подсети с помощью VLAN на базе коммутатора Cisco Catalyst. Имеется два компьютера, подключенные к коммутатору и находящиеся в одном широковещательном домене, а также имеющие ip-адреса в одной сети с одинаковой маской подсети, и как следствие, «видящие» друг друга с помощью утилиты ping. Подключимся с помощью telnet или ssh к консоли коммутатора и посмотрим на конфигурацию vlan.
Здесь видно, что все физические порты коммутатора по умолчанию находятся в vlan 1, соответственно, устройства за ними взаимодоступны.
Чтобы разделить сеть на две подсети, создадим два новых vlan: первый для ПК_1, второй для ПК_2:
Проверим, обновилась ли таблица vlan:
Как видно, оба vlan были созданы и их состояние активно.
Однако физические порты еще не привязаны к этим vlan. Чтобы сделать это, выполним следующую конфигурацию:
Первая строка, следующая за названием физического интерфейса (порта), указывает коммутатору, что данный порт используется в режиме access – то есть принимает только единственный возможный vlan. Существуют еще и trunk-порты, поддерживающие несколько разных vlan с одного физического интерфейса – обычно такой режим используется между коммутаторами или коммутатором и маршрутизатором. Вторая строка указывает, какой именно vlan закреплен за данным физическим портом.
Посмотрим теперь на таблицу vlan:
Как видим, информация обновилась: порт ПК_1 находится в vlan 10, а порт ПК_2 – в vlan 20. Попробуем проверить доступность компьютеров друг относительно друга с помощью утилиты ping теперь:
Итак, после деления на подсети два компьютера (имеющие ip-адреса из одной сети и одинаковую маску подсети) стали друг для друга недоступны вследствие помещения их разные vlan на коммутаторе.
Таким образом, можно создать уникальные vlan для разных подразделений, поместив необходимые физические порты в каждый из них, разграничив физическую сеть на несколько взаимонедоступных логических сегментов.
Другое дело, если требуется осуществить маршрутизацию между разными подсетями из разных vlan, частично ограничив доступность каждой из них друг для друга. Для этого потребуется установка маршрутизатора, который примет на свой физический интерфейс несколько разных vlan с коммутаторов вашей сети используя технологию TRUNK. В данном случае на маршрутизаторе создаются виртуальные ip-интерфейсы, выступающие в роли шлюзов для подсетей подразделений. На такой ip-интерфейс уже можно добавить ACL (Access control list), выступающий своего рода фаерволом, ограничивающим доступность между подсетями.
Пример деления сети на подсети.
Представим, что у нас есть сеть из трех маршрутизаторов, трех коммутаторов и нескольких компьютеров, которую требуется разделить на 6 подсетей. Схема сети показана на рисунке ниже.
На всю сеть нам выделили один IP-адрес 192.168.0.0/24, который нам и требуется разделить на 6 подсетей. В двоичном виде этот IP-адрес выглядит так (порцию сети я выделю более жирным шрифтом): 11000000.10101000.00000000.00000000 .
- Требуемое количество узлов (хостов, в данном случае компьютеров) в каждой подсети:
- Подсеть A — 100 узлов
- Подсеть B — 50 узлов
- Подсеть C — 20 узлов
- Подсеть D — 2 узла
- Подсеть E — 2 узла
- Подсеть F — 2 узла
«/24» — это префикс маски подсети (краткая запись маски). Полная запись маски подсети 255.255.255.0. В двоичном отображении маска подсети выглядит так: 11111111.11111111.11111111.00000000 — это значит, что нам доступно 8 бит для деления сети.
Воспользуемся шпаргалкой выше (а именно таблицей «BIN to DEC»). Первой подсети A нам требуется выделить IP-адреса для 100 узлов. В таблице «BIN to DEC» мы видим, что заняв в маске один бит из восьми, мы получим 1 бит к порции сети (а это 2 подсети) и 7 битов в порции адреса (01111111 = 127). 127 вместе с нулем по количеству равен 128, это полное количество адресов, что удовлетворяет требованиям (и даже остается несколько адресов про запас).
И так, меняем маску с «/24» на «25» (в двоичном формате будет 11111111.11111111.11111111.10000000). Применим новую маску к нашей сети и получим 2 подсети (порцию сети я выделю более жирным шрифтом):
1 — 11000000.10101000.00000000.00000000 (сеть 192.168.0.0/25)
2 — 11000000.10101000.00000000.10000000 (сеть 192.168.0.128/25)
В новых двух сетях порция сети составляет 7 битов. По формуле (которая есть в шпаргалке) проверим, хватит ли нам 7 битов для сети со 100 узлами. 2^7-2=128-2=126, это значит что 7 битов даёт нам 126 адресов для узлов. (Напомню формулу: 2^X-2=количество адресов для узлов, где X равен количеству нулей, а «-2» — это под специальные адреса, которые нельзя назначать узлам.)
Осталась у нас одна сеть 192.168.0.128/25, и требуется для подсети B 50 адресов для узлов. Как и в предыдущий раз, мы видим в таблице «BIN to DEC» 00111111 = 63, это больше 50, а значит удовлетворяет требованиям. Занимаем еще один бит у порции адреса, остается 6 (2^6-2=62). Маска становится на единицу больше /26, применяем её к нашей сети и получаем две новых подсети (порцию сети я выделю более жирным шрифтом):
1 — 11000000.10101000.00000000.10000000 (сеть 192.168.0.128/26)
2 — 11000000.10101000.00000000.11000000 (сеть 192.168.0.192/26)
Таким же образом отделяем еще 1 бит от порции адреса узла (00011111 = 31, что больше 20, и следовательно нам подходит), маска уже /27. Снова две сети: 1 — 11000000.10101000.00000000.11000000 (сеть 192.168.0.192/27)
2 — 11000000.10101000.00000000.11100000 (сеть 192.168.0.224/27)
Осталось нам выделить 3 подсети по 2 адреса для узлов. По таблице видим, что нам достаточно для порции адреса узла всего двух битов (00000011 = 3), 2^2-2=2 адреса для двух узлов.
В свою очередь для трех, одинаковых по размеру, подсетей достаточно тоже двух битов (2^2=4, формула из шпаргалки). Всего в IP-адресе 32 бита, вычитаем требующиеся нам 2 и получаем 30, следовательно используем маску /30. Для нашей оставшейся сети это выглядит так (порцию сети я выделю более жирным шрифтом): 11000000.10101000.00000000.11100000 (сеть 192.168.0.224/30) .
Делим нашу новую сеть на 3 подсети:
1 — 11000000.10101000.00000000.11100000 (сеть 192.168.0.224/30) .
2 — 11000000.10101000.00000000.11100100 (сеть 192.168.0.228/30) .
3 — 11000000.10101000.00000000.11101000 (сеть 192.168.0.232/30) .
- Готово, задача выполнена:
- Подсеть A — 192.168.0.0/25
- Подсеть B — 192.168.0.128/26
- Подсеть C — 192.168.0.192/27
- Подсеть D — 192.168.0.224/30
- Подсеть E — 192.168.0.228/30
- Подсеть F — 192.168.0.232/30
Это не простой пример деления сети на подсети, поэтому если Вам требуется попроще пример для понимания — пишите письма на eaneav@gmail.com.