Всем привет! И сегодня мы постараемся полностью раскрыть вопрос: что такое VLAN и как его настроить в CISCO. Постараюсь писать максимально просто и на простых примерах, для чайников. Для полного понимания советую прочитать статью от начала до конца. Вам не нужно иметь под рукой коммутатор CISCO, чтобы понять принципы стандартной настройки — все можно понять на лету, я буду использовать простой пример. Если у вас есть вопросы или дополнения, пишите в комментариях.
Начало
Проблема с локальными сетями и несколькими подсетями заключается в том, что существует угроза утечки информации. Давайте рассмотрим пример из трех сетей: управления, учета и управления персоналом. Конечно, в крупных компаниях сеть гораздо больше, но мы рассмотрим более лаконичный пример.
Представим, что все эти компьютеры имеют одну и ту же первую (1) подсеть, т.е. ПК1 имеет адрес 192.168.1.2; ПК2 имеет — 192.168.1.3; ПК3 имеет адрес 192.168.1.4 и так далее, т.е они все в одной подсети.
Все они подключены к разным коммутаторам. Если кто не знает, то коммутатор при отсутствии таблицы коммутаторов (при первой загрузке) отправляет пакет приема на все порты. То есть, если ПК1 отправит пакет данных на ПК2, произойдет следующее:
Если вы забыли, что такое свитч, то давайте прочитаем статью здесь.
И почему это происходит? А все потому, что PC1 еще не знает MAC-адреса второго компьютера, и мы отправляем специальный пакет по протоколу ARP, для так называемого «кольца». Кроме того, передающий компьютер не знает адрес канального уровня; вспомните сетевую модель OSI.
И тут две проблемы:
- Безопасность: Злоумышленники могут просто перехватить трафик. В общем, это можно сделать стандартными программами-перехватчиками.
- Лишний трафик: когда сеть маленькая, это не так заметно. Но представьте, что у вас есть сеть из тысяч компьютеров. Что угодно может привести к перегрузке канала и потере пакетов.
Как ни странно, пример, который я привел, был жизнеспособным практически на заре развития сетей, когда Интернет был еще слабым и молодым. О проблеме знали все, и Cisco попыталась ее решить, придумав в своих лабораториях совершенно новый протокол ISL. После этого протокол Inter-Switch Link был присоединен к IEEE под кодовым названием 802.1q; это имя вы можете увидеть в Интернете или на распределительной коробке.
Во-первых, давайте взглянем на обычный «Ethernet-кадр» в его привычной среде обитания:
Теперь давайте взглянем на новую структуру 802.1q:
В итоге мы добавляем еще один тег с необходимой нам информацией:
Теперь мы подошли к очень интересной концепции. Как вы уже поняли, этот фреймворк 802.1q помогает корректно отправлять пакеты данных. Но вот вопрос, зачем добавлять фреймворк в пакет, который уже идет на конечное устройство пользователя? Правильно, не надо.
Именно поэтому в маршрутизаторах и коммутаторах существует два понятия:
- Trunk port (транковый порт) — порт, который выходит на другое сетевое устройство: свитч, роутер и т.п. С этого порта обычно отправляются тегированные пакеты, то есть пакеты с этим же тегом.
- Порт доступа: последний открытый порт или из которого информация поступает непосредственно на компьютер пользователя. Нет смысла добавлять сюда тег, загромождая размер пакета.
Нетегированный трафик — это пакеты данных, которые идут без кадра 802.1q. Маркировка VLAN происходит только на двух портах: Trunk и Access. Если вы все еще ничего не понимаете, не волнуйтесь, я покажу вам все позже на примере.
Настройка VLAN на коммутаторе
Приведу пример настройки VLAN на коммутаторе CISCO. На самом деле все его настройки выполняются примерно одинаково, так что вы можете использовать данную инструкцию в своих целях. Поддержка VLAN должна быть на всех коммутаторах канального уровня.
Для начала посмотрим на всю таблицу коммутации VLAN из стандартной консольной команды:
показать влан
Смотрим на столбцы:
Для примера я буду использовать модель Cisco 2960 24tt, но принцип настройки, который я покажу ниже, одинаков для всех ее устройств. Кроме того, вы сразу поймете принцип работы VLAN на примере.
Далее, давайте назовем наше животное как-нибудь:
Изменить (config) # имя хоста SW1
SW1 (настройки)#
Я покажу конфигурацию на примере нашего любимого образа, который я показал в начале. Здесь у нас есть:
- Переключатели: SenterSW, SW1, SW2, SW3.
- Компоненты: ПК1, ПК2, ПК3, ПК4, ПК5, ПК
Примерно запомните эти имена для удобной навигации при вводе команд. Иногда можно посмотреть и на эту картинку.
Создайте VLAN 2:
SW1(конфигурация)#vlan2
Дайте ему имя:
SW1 (config-vlan) # имя Дир-я
Теперь соединим наши компьютеры и получим отдельные VLAN. Подключим первый компьютер к первому порту, а второй ко второму. Для входа в конфигурацию первого порта набираем:
ПРИМЕЧАНИЕ! Просто помните, что команда с надписью «интерфейс» приведет вас к конфигурации этого объекта.
SW1(config)#интерфейс fastEthernet 0/1
Так как наш порт будет направлен именно на компьютер, то тегировать его не нужно, а переводим в нужное состояние:
SW1(config-if)#переключатель режима доступа к порту
создаем второй VLAN, теперь осталось привязать к нему первое устройство:
SW1(config-if)#переключатель порта доступа vlan 2
Теперь сделайте то же самое для второго порта. В итоге надо будет второй порт привязать к тому же VLAN2; мы хотим, чтобы они были в той же сети.
На будущее, чтобы не прописывать таким образом каждый порт, можно прописать диапазон портов так:
SW1 (config) # диапазон интерфейса fastEthernet 0/1-2
Доступ к режиму SW1 (config-if-range) #switchport
SW1(config-if-range)#switchport access vlan 2
Итак, теперь у вас есть два компьютера, настроенные правильно, и они находятся в одной и той же VLAN. Теперь нам нужно подключить наш первый переключатель к центральному. Для этого мы будем использовать порт 24. И, конечно же, нам нужно перевести его в тегированный режим:
SW1(config)#интерфейс fastEthernet 0/24
SW1 (config-if) # транк режима switchport
Вроде бы все сделали, но есть проблема: на коммутаторе нет правила, ограничивающего поток пакетов из других VLAN, то есть проблема с безопасностью остается. Теперь нам нужно написать правило, которое позволяет только пакетам для VLAN2 достигать нашего порта 24:
SW1 (config-if) # магистральный коммутатор, разрешенный vlan 2
На всякий случай проверьте таблицу маршрутизации:
Как видите, у нашей второй VLAN теперь есть только два доступных порта. Единственным недостатком этого вывода является то, что вы не можете видеть статус тегирования портов. Для этого есть отдельная команда:
показать интерфейс транка
Здесь мы видим наш порт 24, который нам нужен для связи с центральным коммутатором. Еще раз повторяю, что состояние тегирования (Trunk или Access) должно быть установлено для внешних портов. В противном случае настраивать VLAN не будет смысла.
Первый коммутатор мы настроили, теперь настроим третий. Во-первых, необходимо создать по три VLAN для каждой из структур: управления, бухгалтерии и отдела кадров. VLAN 2 уже назначен этому адресу. Создайте VLAN для учета:
CentrSW(config)#vlan 3
CentrSW(config-vlan)# имя бухгалтера
Теперь создаем внутреннюю сеть для отдела кадров:
CentrSW(config)#vlan 4
CentrSW(config-vlan)# имя otdel-kadrov
Что ж, поскольку этот коммутатор будет обмениваться данными только с устройствами в сети, мы будем использовать тегирование состояния транка. И мы будем использовать первые 3 порта.
CentrSW(config)#диапазон интерфейса fastEthernet 0/1-3
CentrSW(config-if-range)#switchport mode trunk
Вам не кажется, что мы что-то упустили? Наша центральная панель управления должна быть связующим звеном, верно? Но мы забыли создать VLAN 2 для первого сегмента:
CentrSW(config)#vlan 2
CentrSW(config-vlan)# имя Dir-ya
ПРИМЕЧАНИЕ! Чтобы не запутаться, мы должны называть VLAN как в первом коммутаторе.
А теперь осталось установить переключатели 2 и 3 по аналогии с первым. Я не буду описывать это здесь, так как все делается так же. Только не забудьте назвать их «SW2» и «SW3». Далее вам просто нужно создать и закрепить соответствующие VLAN: 3 и 4. Также не забудьте назвать их теми же именами, которые мы использовали на основном коммутаторе.
И тут мы подходим к следующей проблеме. Мы создаем VLAN и даже делим их на разные по портам. Вроде есть разделение, но давайте посмотрим на IP-адреса наших компьютеров:
Да, все компы в одной сети. Да, мы ограничили трафик канального уровня, разделив сегменты и порты на VLAN. В общем, мы могли бы просто разделить эту сеть на 3 подсети и трафик тоже был бы ограничен. Дело в том, что коммутатор не может разделять трафик между разными подсетями; это уже сетевой уровень модели OSI.
ПРИМЕЧАНИЕ! Если вас все еще смущают эти понятия, советую прочитать статью про OSI — ссылку я оставил в начале статьи.
Все это я делал в образовательных целях и вообще необходимо разделять сети как на канальном, так и на сетевом уровне. Это можно сделать вручную на компьютере. Но статья не об этом.
Что теперь будет с отправкой данных? Если мы отправим пакет на ПК2, он прибудет на первый коммутатор. Затем коммутатор отправит его одновременно на ПК2 и центральный коммутатор. После этого базовый коммутатор будет отправлять пакеты другим SW (2 и 3). Там коммутаторы, у которых есть правила только для VLAN: 3 и 4, просто отправят пакет на свалку. То есть этот пакет не дойдет до команд: 3, 4, 5 и 6.
Ситуация с переездом сотрудника
Рассмотрим ситуацию, когда в бухгалтерию (на время) придется поставить сотрудника совсем из другого отдела. Предположим, что Елена Павловна не может летом сидеть в отделении дирекции, так как у нее сильно повышено давление, а кондиционера там нет. Власти решают перевести ее на лето в бухгалтерию.
Тогда, что мы будем делать?! Сначала мы подключим ваш компьютер к следующему третьему порту на втором коммутаторе. Теперь возникла проблема, что на втором коммутаторе никогда не слышали о 2-м VLAN и пришлось его создать:
SW2(конфигурация)#vlan2
Sw2(config-vlan)# имя каталога
Теперь нужно настроить третий порт и добавить его в VLAN2. А также не забудьте прописать для него модель тегирования:
SW2(config)#интерфейс fastEthernet 0/3
SW2(config-if)#переключатель режима доступа к порту
SW2(config-if)#переключатель порта доступа vlan 2
Теперь нам нужно разрешить пакетам VLAN2 проходить через внешний порт. Второй коммутатор (как и все остальные) имеет порт 24. Внимательно пишите команду:
SW2(config)#интерфейс fastEthernet 0/24
SW2 (config-if) # транк коммутатора разрешен vlan add 2
Теперь перейдем к центральному выключателю:
CentrSW(config)#интерфейс fastEthernet 0/1
CentrSW(config-if)#switchport магистраль разрешена vlan 2
CentrSW(config)#интерфейс fastEthernet 0/2
CentrSW(config-if)#switchport магистраль разрешена vlan 2.3
CentrSW(config)#интерфейс fastEthernet 0/3
CentrSW(config-if)#switchport магистраль разрешена vlan 4
Обратите внимание, что для 2 внешних портов мы разрешаем одновременное использование двух VLAN. Теперь, когда вы отправляете пакет, он достигает центрального коммутатора. Затем он будет отправлен на коммутатор 2, в котором уже есть правило, разрешающее отправлять пакеты VLAN2 только на выделенный порт 3, где находится перемещенная сотрудница Елена Павловна.
Общение между собой
Теперь мы подходим к теме использования VLAN; как видите, это полезная штука, которая строго разделяет трафик на линковом уровне и позволяет отправлять пакеты только в правильном направлении. Так устроена работа крупных организаций, где большое количество отделов, которые не должны видеть друг друга. Но одна из проблем у нас все же есть, а именно проблема сети. Все наши компьютеры находятся в первой подсети, что неправильно, и нам нужно разделить их.
Но для этих целей нам нужен еще и роутер для подключения сети на сетевом уровне. Для этого подключим роутер Cisco 2811.
В конфигурации нам также нужно будет указать шлюзы, но они будут стандартными:
Маска будет везде одинаковая: 255.255.255.0 (/24).
Зачем нужен роутер? Это позволит компьютерам, которые находятся в разных VLAN, взаимодействовать. Для этого будет использоваться адрес шлюза каждой подсети.
Настройка маршрутизатора
Входим в конфигурацию и называем ее согласно изображению:
Маршрутизатор (конфигурация) # имя хоста Шлюз
Шлюз (конфигурация)#
Так как роутер подключен к центральному коммутатору, то шлюзы у нас будут не физические, а виртуальные (субинтерфейсные) так как мы не подключаем компьютеры напрямую к роутеру. Для этого необходимо настроить три таких же сабинтерфейса на роутере; ведь у нас 3 VLAN и 3 подсети:
Шлюз (конфигурация) # интерфейс fastEthernet 0/0.2
Шлюз (config-if) # инкапсуляция dot1Q 2
Шлюз (config-if)#IP-адрес 192.168.1.1 255.255.255.0
Теперь создаем виртуальный шлюз для второй подсети. Обратите внимание, что для порта прописываем команду: «0/0.3». Хотя в предыдущих коммутаторах мы явно указывали порт. Все это потому, что этот маршрутизатор, который напрямую не подключен к устройствам, будет отвечать за шлюз.
Шлюз (конфигурация) # интерфейс fastEthernet 0/0.3
Шлюз (config-if) # инкапсуляция dot1Q 3
Шлюз (config-if)#IP-адрес 192.168.2.1 255.255.255.0
Осталось создать шлюз для последней подсети:
Шлюз (конфигурация) # интерфейс fastEthernet 0/0.4
Шлюз (config-if) # инкапсуляция dot1Q 4
Шлюз (config-if)#IP-адрес 192.168.3.1 255.255.255.0
Чуть не забыл сказать: роутер будем подключать к 24 порту центрального коммутатора. Теперь нам нужно разрешить отправку всех vlan-пакетов на роутер через порт 24, к которому мы подключаемся:
CentrSW(config)#интерфейс fastEthernet 0/24
Не забудьте указать метку «транк», потому что пакеты будут идти на сетевое устройство, а не на компьютер:
CentrSW(config-if)#switchport mode trunk
Все VLAN можно просто написать через запятую:
CentrSW(config-if)#switchport магистраль разрешена vlan 2,3,4
Вот, например, если отправить пакет данных с первого компьютера на пятый, произойдет следующее:
Так заполняется таблица маршрутизации. Такой долгий путь обычно начинается с самого начала. Впоследствии маршрутизатор помогает всем компьютерам обмениваться данными через канальный уровень.
Видео
Более подробно про VLAN рассказывается в этом видео, оно достаточно длинное, но максимально информативное.