Основы компьютерных сетей. Тема №6. Понятие VLAN, Trunk и протоколы VTP и DTP

7306245b529346dba6f169eaac55087a.jpg

Всех с наступившим новым годом! Продолжаем разговор о сетях и сегодня затронем такую важную тему в мире коммутации, как VLAN. Посмотрим, что он из себя представляет и как с ним работать. А также разберем работающие с ним протоколы VTP и DTP.

Содержание
1) Основные сетевые термины, сетевая модель OSI и стек протоколов TCP/IP.
2) Протоколы верхнего уровня.
3) Протоколы нижних уровней (транспортного, сетевого и канального).
4) Сетевые устройства и виды применяемых кабелей.
5) Понятие IP адресации, масок подсетей и их расчет.
6) Понятие VLAN, Trunk и протоколы VTP и DTP.
7) Протокол связующего дерева: STP.
8) Протокол агрегирования каналов: Etherchannel.
9) Маршрутизация: статическая и динамическая на примере RIP, OSPF и EIGRP.
10) Трансляция сетевых адресов: NAT и PAT.
11) Протоколы резервирования первого перехода: FHRP.
12) Безопасность компьютерных сетей и виртуальные частные сети: VPN.
13) Глобальные сети и используемые протоколы: PPP, HDLC, Frame Relay.
14) Введение в IPv6, конфигурация и маршрутизация.
15) Сетевое управление и мониторинг сети.

P.S. Возможно, со временем список дополнится.


В предыдущих статьях мы уже работали с многими сетевыми устройствами, поняли, чем они друг от друга отличаются и рассмотрели из чего состоят кадры, пакеты и прочие PDU. В принципе с этими знаниями можно организовать простейшую локальную сеть и работать в ней. Но мир не стоит на месте. Появляется все больше устройств, которые нагружают сеть или что еще хуже — создают угрозу в безопасности. А, как правило, «опасность» появляется раньше «безопасности». Сейчас я на самом простом примере покажу это.
d7817b60b635420fbc9417076d373082.PNG
Мы пока не будем затрагивать маршрутизаторы и разные подсети. Допустим все узлы находятся в одной подсети.
Сразу приведу список IP-адресов:
  1. PC1 — 192.168.1.2/24
  2. PC2 — 192.168.1.3/24
  3. PC3 — 192.168.1.4/24
  4. PC4 — 192.168.1.5/24
  5. PC5 — 192.168.1.6/24
  6. PC6 — 192.168.1.7/24

У нас 3 отдела: дирекция, бухгалтерия, отдел кадров. У каждого отдела свой коммутатор и соединены они через центральный верхний.
И вот PC1 отправляет ping на компьютер PC5.
b67ea34dfb1c4249b97a440d99906d03.PNG
740a5f3e82964489acc209d28f24ee48.PNG
e41fff269c364d7bb69c5a7f7b421528.PNG
7fe012ff59a440ce975c639e73d3dbe9.PNG
0685025a69c04d6f8318d31d7805f354.PNG
Кто хочет увидеть это в виде анимации, открывайте спойлер.
Работа сети в одном широковещательном домене
347d5c51f5b0460a81edd5584637c9f8.gif

Красиво да? Мы в прошлых статьях уже не раз говорили о работе протокола ARP, но это было еще в прошлом году, поэтому вкратце объясню. Так как PC1 не знает MAC-адрес (или адрес канального уровня) PC5, то он отправляет в разведку ARP, чтобы тот ему сообщил. Он приходит на коммутатор, откуда ретранслируется на все активные порты, то есть к PC2 и на центральный коммутатор. Из центрального коммутатора вылетит на соседние коммутаторы и так далее, пока не дойдет до PC5. Вот такой не маленький трафик вызвало одно ARP-сообщение. Его получили все участники сети. Большой и не нужный трафик — это первая проблема. Вторая проблема — это безопасность. Думаю, заметили, что сообщение дошло даже до отдела кадров, компьютеры которых вообще не участвовали в этом. Любой злоумышленник, подключившись к любому из коммутаторов, будет иметь доступ ко всей сети. В принципе сети раньше так и работали. Компьютеры находились в одной канальной среде и разделялись только при помощи маршрутизаторов. Но время шло и нужно было решать эту проблему на канальном уровне. Cisco, как пионер, придумала свой протокол, который тегировал кадры и определял принадлежность к определенной канальной среде. Назывался он ISL (Inter-Switch Link). Идея эта понравилась всем и IEEE решили разработать аналогичный открытый стандарт. Стандарт получил название 802.1q. Получил он огромное распространение и Cisco решила тоже перейти на него.
И вот как раз технология VLAN основывается на работе протокола 802.1q. Давайте уже начнем говорить про нее.
В 3-ей части я показал, как выглядит ethernet-кадр. Посмотрите на него и освежите в памяти. Вот так выглядит не тегированный кадр.
1932088c8c7f437dac56ac8a239e8b1c.png

Теперь взглянем на тегированный.
fa870df0ad52464aaaf22ca9083c02fc.png

Как видим, отличие в том, что появляется некий Тег. Это то, что нам и интересно. Копнем глубже. Состоит он из 4-х частей.

1) TPID (англ. Tag Protocol ID) или Идентификатор тегированного протокола — состоит из 2-х байт и для VLAN всегда равен 0×8100.
2) PCP (англ. Priority Code Point) или значение приоритета — состоит из 3-х бит. Используется для приоритезации трафика. Крутые и бородатые сисадмины знают, как правильно им управлять и оперирует им, когда в сети гуляет разный трафик (голос, видео, данные и т.д.)
3) CFI (англ. Canonical Format Indicator) или индикатор каноничного формата — простое поле, состоящее из одного бита. Если стоит 0, то это стандартный формат MAC-адреса.
4) VID (англ. VLAN ID) или идентификатор VLAN — состоит из 12 бит и показывает, в каком VLAN находится кадр.

Хочу заострить внимание на том, что тегирование кадров осуществляется между сетевыми устройствами (коммутаторы, маршрутизаторы и т.д.), а между конечным узлом (компьютер, ноутбук) и сетевым устройством кадры не тегируются. Поэтому порт сетевого устройства может находиться в 2-х состояниях: access или trunk.

  • Access port или порт доступа — порт, находящийся в определенном VLAN и передающий не тегированные кадры. Как правило, это порт, смотрящий на пользовательское устройство.
  • Trunk port или магистральный порт — порт, передающий тегированный трафик. Как правило, этот порт поднимается между сетевыми устройствами.

Сейчас я покажу это на практике. Открываю ту же лабу. Картинку повторять не буду, а сразу открою коммутатор и посмотрю, что у него с VLAN.
Набираю команду show vlan.

fb5f9f646c364907900358437dad3d85.PNG

Выстраиваются несколько таблиц. Нам по сути важна только самая первая. Теперь покажу как ее читать.

1 столбец — это номер VLAN. Здесь изначально присутствует номер 1 — это стандартный VLAN, который изначально есть на каждом коммутаторе. Он выполняет еще одну функцию, о которой чуть ниже напишу. Также присутствуют зарезервированные с 1002–1005. Это для других канальных сред, которые вряд ли сейчас используются. Удалить их тоже нельзя.

Switch(config)#no vlan 1005
Default VLAN 1005 may not be deleted.

При удалении Cisco выводит сообщение, что этот VLAN удалить нельзя. Поэтому живем и эти 4 VLANа не трогаем.

2 столбец — это имя VLAN. При создании VLAN, вы можете на свое усмотрение придумывать им осмысленные имена, чтобы потом их идентифицировать. Тут уже есть default, fddi-default, token-ring-default, fddinet-default, trnet-default.

3 столбец — статус. Здесь показывается в каком состоянии находится VLAN. На данный момент VLAN 1 или default в состоянии active, а 4 следующих act/unsup (хоть и активные, но не поддерживаются).

4 столбец — порты. Здесь показано к каким VLAN-ам принадлежат порты. Сейчас, когда мы еще ничего не трогали, они находятся в default.

Приступаем к настройке коммутаторов. Правилом хорошего тона будет дать коммутаторам осмысленные имена. Чем и займемся. Привожу команду.

Switch(config)#hostname CentrSW
CentrSW(config)#

Остальные настраиваются аналогично, поэтому покажу обновленную схему топологии.
4d757e3dc2ee4313be7e0a5720ad9328.PNG

Начнем настройку с коммутатора SW1.
Для начала создадим VLAN на коммутаторе.

SW1(config)#vlan 2 -  создаем VLAN 2 (VLAN 1 по умолчанию зарезервирован, поэтому берем следующий).
SW1(config-vlan)#name Dir-ya - попадаем в настройки VLAN и задаем ему имя.

VLAN создан. Теперь переходим к портам.
Интерфейс FastEthernet0/1 смотрит на PC1, а FastEthernet0/2 на PC2. Как говорилось ранее, кадры между ними должны передаваться не тегированными, поэтому переведем их в состояние Access.
SW1(config)#interface fastEthernet 0/1 - переходим к настройке 1-ого порта.
SW1(config-if)#switchport mode access - переводим порт в режим access.
SW1(config-if)#switchport access vlan 2 - закрепляем за портом 2-ой VLAN.
SW1(config)#interface fastEthernet 0/2 - переходим к настройке 2-ого порта.
SW1(config-if)#switchport mode access - переводим порт в режим access.
SW1(config-if)#switchport access vlan 2 - закрепляем за портом 2-ой VLAN.

Так как оба порта закрепляются под одинаковым VLAN-ом, то их еще можно было настроить группой.
SW1(config)#interface range fastEthernet 0/1-2 - то есть выбираем пул и далее настройка аналогичная.
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport access vlan 2

Настроили access порты. Теперь настроим trunk между SW1 и CentrSW.
SW1(config)#interface fastEthernet 0/24 - переходим к настройке 24-ого порта.
SW1(config-if)#switchport mode trunk - переводим порт в режим trunk.
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/24, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/24, changed state to up

Сразу видим, что порт перенастроился. В принципе для работы этого достаточно. Но с точки зрения безопасности разрешать для передачи нужно только те VLAN, которые действительно нужны. Приступим.
SW1(config-if)#switchport trunk allowed vlan 2 - разрешаем передавать только 2-ой VLAN.

Без этой команды передаваться будут все имеющиеся VLAN.
Посмотрим, как изменилась таблица командой show vlan.
e0031dafd82a4e7a9f843e3b0f47270f.PNG
Появился 2-ой VLAN с именем Dir-ya и видим принадлежащие ему порты fa0/1 и fa0/2.

Чтобы вывести только верхнюю таблицу, можно воспользоваться командой show vlan brief.

d26e715193eb47e88d9633a3fcd4e7c8.PNG

Можно еще укоротить вывод, если указать определенный ID VLANа.

de647e30895f45bea90fad59ee0337ca.PNG

Или его имя.

d05fc92a2a514adfbbcadfae9052084c.PNG

Вся информациях о VLAN хранится в flash памяти в файле vlan.dat.

fcb596a1e0934097a619d1cfe4bb55d8.PNG

Как вы заметили, ни в одной из команд, нет информации о trunk. Ее можно посмотреть другой командой show interfaces trunk.

cba526f27d03403ca5dae9488637d352.PNG

Здесь есть информация и о trunk портах, и о том какие VLAN они передают. Еще тут есть столбец Native vlan. Это как раз тот трафик, который не должен тегироваться. Если на коммутатор приходит не тегированный кадр, то он автоматически причисляется к Native Vlan (по умолчанию и в нашем случае это VLAN 1). Native VLAN можно, а многие говорят, что нужно менять в целях безопасности. Для этого в режиме настройки транкового порта нужно применить команду — switchport trunk native vlan X, где X — номер присваиваемого VLAN. В этой топологии мы менять не будем, но знать, как это делать полезно.

Осталось настроить остальные устройства.

CentrSW:
Центральный коммутатор является связующим звеном, а значит он должен знать обо всех VLAN-ах. Поэтому сначала создаем их, а потом переводим все интерфейсы в транковый режим.

CentrSW(config)#vlan 2
CentrSW(config-vlan)# name Dir-ya
CentrSW(config)#vlan 3
CentrSW(config-vlan)# name buhgalter
CentrSW(config)#vlan 4
CentrSW(config-vlan)# name otdel-kadrov
CentrSW(config)#interface range fastEthernet 0/1-3
CentrSW(config-if-range)#switchport mode trunk

Не забываем сохранять конфиг. Команда copy running-config startup-config.

SW2:

SW2(config)#vlan 3
SW2(config-vlan)#name buhgalter
SW2(config)#interface range fastEthernet 0/1-2 
SW2(config-if-range)#switchport mode access
SW2(config-if-range)#switchport access vlan 3
SW2(config)#interface fastEthernet 0/24
SW2(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan 4

SW3:

SW3(config)#vlan 4
SW3(config-vlan)#name buhgalter
SW3(config)#interface range fastEthernet 0/1-2 
SW3(config-if-range)#switchport mode access
SW3(config-if-range)#switchport access vlan 4
SW3(config)#interface fastEthernet 0/24
SW3(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan 4

Обратите внимание на то, что мы подняли и настроили VLAN, но адресацию узлов оставили такой же. То есть, фактически все узлы в одной подсети, но разделены VLAN-ами. Так делать нельзя. Каждому VLAN надо выделять отдельную подсеть. Я это сделал исключительно в учебных целях. Если бы каждый отдел сидел в своей подсети, то они бы априори были ограничены, так как коммутатор не умеет маршрутизировать трафик из одной подсети в другую (плюс это уже ограничение на сетевом уровне). А нам нужно ограничить отделы на канальном уровне.
Снова отправляю ping с PC1 к PC3.
2d7be5ab91d7487c8301b14fb8d812a0.PNG
Идет в ход ARP, который нам и нужен сейчас. Откроем его.
686282fac76543b1a18f0e678fb647b7.PNG
Пока что ничего нового. ARP инкапсулирован в ethernet.
11933094cb4d4670964a05390e988045.PNG
Кадр прилетает на коммутатор и тегируется. Теперь там не обычный ethernet, а 802.1q. Добавились поля, о которых я писал ранее. Это TPID, который равен 8100 и показывающий, что это 802.1q. И TCI, которое объединяет 3 поля PCP, CFI и VID. Число, которое в этом поле — это номер VLAN. Двигаемся дальше.
c00be391b35f4a9195aa4f7b413baa7a.PNG
После тега он отправляет кадр на PC2 (т.к. он в том же VLAN) и на центральный коммутатор по транковому порту.
1353c683c33743b0817f365cc689096b.PNG
Так как жестко не было прописано какие типы VLAN пропускать по каким портам, то он отправит на оба коммутатора. И вот здесь коммутаторы, увидев номер VLAN, понимают, что устройств с таким VLAN-ом у них нет и смело его отбрасывают.
ee78f94cae834814aa9e9624072598f3.PNG
PC1 ожидает ответ, который так и не приходит. Можно под спойлером посмотреть в виде анимации.
Анимация
726f56fa1b714320a963becdece85c44.gif

Теперь следующая ситуация. В состав дирекции нанимают еще одного человека, но в кабинете дирекции нет места и на время просят разместить человека в отделе бухгалтерии. Решаем эту проблему.
60fef015073344b0a21f785c2d470fb5.PNG
Подключили компьютер к порту FastEthernet 0/3 коммутатора и присвою IP-адрес 192.168.1.8/24.
Теперь настрою коммутатор SW2. Так как компьютер должен находиться во 2-ом VLAN, о котором коммутатор не знает, то создам его на коммутаторе.

SW2(config)#vlan 2
SW2(config-vlan)#name Dir-ya

Дальше настраиваем порт FastEthernet 0/3, который смотрит на PC7.
SW2(config)#interface fastEthernet 0/3
SW2(config-if)#switchport mode access 
SW2(config-if)#switchport access vlan 2

И последнее — настроить транковый порт.
SW2(config)#interface fastEthernet 0/24
SW2(config-if)#switchport trunk allowed vlan add 2 - обратите внимание на эту команду. 
А именно на ключевое слово "add". Если не дописать это слово, то вы сотрете все остальные разрешенные к передаче VLAN на этом порту. 
Поэтому если у вас уже был поднят транк на порту и передавались другие VLAN, то добавлять надо именно так.

Чтобы кадры ходили красиво, подкорректирую центральный коммутатор CentrSW.
CentrSW(config)#interface fastEthernet 0/1
CentrSW(config-if)#switchport mode trunk allowed vlan 2
CentrSW(config)#interface fastEthernet 0/2
CentrSW(config-if)#switchport mode trunk allowed vlan 2,3
CentrSW(config)#interface fastEthernet 0/3
CentrSW(config-if)#switchport mode trunk allowed vlan 4

Время проверки. Отправляю ping с PC1 на PC7.
19d1bab5ed7842e699f4de9449f7643e.PNG
3eff260d679545d7b04ed793d05d02b4.PNG
Пока что весь путь аналогичен предыдущему. Но вот с этого момента (с картинки ниже) центральный коммутатор примет другое решение. Он получает кадр и видит, что тот протегирован 2-ым VLAN-ом. Значит отправлять его надо только туда, где это разрешено, то есть на порт fa0/2.
1b350d8d54714ccbae7f8114094e2c7a.PNG
522bf8c784684180b3871df255c8f162.PNG

И вот он приходит на SW2. Открываем и видим, что он еще тегированный. Но следующим узлом стоит компьютер и тег надо снимать. Нажимаем на «Outbound PDU Details», чтобы посмотреть в каком виде кадр вылетит из коммутатора.
b5f5c8f126ee4208b7f9f24d909c1003.PNG
И действительно. Коммутатор отправит кадр в «чистом» виде, то есть без тегов.

208f487e3ff548f3a9f4e60b2e556607.PNG
Доходит ARP до PC7. Открываем его и убеждаемся, что кадр не тегированный PC7 узнал себя и отправляет ответ.

1b182fe469e64cc2b91e273d10ecc24e.PNG
Открываем кадр на коммутаторе и видим, что на отправку он уйдет тегированным. Дальше кадр будет путешествовать тем же путем, что и пришел.
e6f6c11d1fb343f8b0f5e15f0c836b08.PNG
f75a60a47f08448899240643f3fa6ee5.PNG

ec20638a766a490f915ff748184c88d9.PNG
ARP доходит до PC1, о чем свидетельствует галочка на конверте. Теперь ему известен MAC-адрес и он пускает в ход ICMP.
b60199c180f14f0aaecf447fa5eb0051.PNG
Открываем пакет на коммутаторе и наблюдаем такую же картину. На канальном уровне кадр тегируется коммутатором. Так будет с каждым сообщением.
63db7fb465184409a0e6253c14bcafb3.PNG
2304be8c960f42a28d764a7e60c82559.PNG
f1f66ed3557f41eb8aaf13c28dd8d0cf.PNG
Видим, что пакет успешно доходит до PC7. Обратный путь я показывать не буду, так как он аналогичен. Если кому интересно, можно весь путь увидеть на анимации под спойлером ниже. А если охота самому поковырять эту топологию, прикладываю ссылку на лабораторку.

Логика работы VLAN
a676c731fe0948e2a6766a67caffe923.gif

Вот в принципе самое популярное применение VLAN-ов. Независимо от физического расположения, можно логически объединять узлы в группы, там самым изолируя их от других. Очень удобно, когда сотрудники физически работают в разных местах, но должны быть объединены. И конечно с точки зрения безопасности VLAN не заменимы. Главное, чтобы к сетевым устройствам имели доступ ограниченный круг лиц, но это уже отдельная тема.
Добились ограничения на канальном уровне. Трафик теперь не гуляет где попало, а ходит строго по назначению. Но теперь встает вопрос в том, что отделам между собой нужно общаться. А так как они в разных канальных средах, то в дело вступает маршрутизация. Но перед началом, приведем топологию в порядок. Самое первое к чему приложим руку — это адресация узлов. Повторюсь, что каждый отдел должен находиться в своей подсети. Итого получаем:

  • Дирекция — 192.168.1.0/24
  • Бухгалтерия — 192.168.2.0/24
  • Отдел кадров — 192.168.3.0/24

3816aa9c52ea4302bba838e52285f457.PNG

Раз подсети определены, то сразу адресуем узлы.

  1. PC1:
    IP: 192.168.1.2
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.1.1
  2. PC2:
    IP: 192.168.1.3
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.1.1
  3. PC3:
    IP: 192.168.2.2
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.2.1
  4. PC4:
    IP: 192.168.2.3
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.2.1
  5. PC5:
    IP: 192.168.3.2
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.3.1
  6. PC6:
    IP: 192.168.3.3
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.3.1
  7. PC7:
    IP: 192.168.1.4
    Маска: 255.255.255.0 или /24
    Шлюз: 192.168.1.1

Теперь про изменения в топологии. Видим, что добавился маршрутизатор. Он как раз и будет перекидывать трафик с одного VLAN на другой (иными словами маршрутизировать). Изначально соединения между ним и коммутатором нет, так как интерфейсы выключены.
У узлов добавился такой параметр, как адрес шлюза. Этот адрес они используют, когда надо отправить сообщение узлу, находящемуся в другой подсети. Соответственно у каждой подсети свой шлюз.
Осталось настроить маршрутизатор, и я открываю его CLI. По традиции дам осмысленное имя.
Router(config)#hostname Gateway
Gateway(config)#

Далее переходим к настройке интерфейсов.
Gateway(config)#interface fastEthernet 0/0 - переходим к требуемому интерфейсу.
Gateway(config-if)#no shutdown - включаем его.
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

Теперь внимание! Мы включили интерфейс, но не повесили на него IP-адрес. Дело в том, что от физического интерфейса (fastethernet 0/0) нужен только линк или канал. Роль шлюзов будут выполнять виртуальные интерфейсы или сабинтерфейсы (англ. subinterface). На данный момент 3 типа VLAN. Значит и сабинтерфейсов будет 3. Приступаем к настройке.
Gateway(config)#interface fastEthernet 0/0.2
Gateway(config-if)#encapsulation dot1Q 2
Gateway(config-if)#ip address 192.168.1.1 255.255.255.0
Gateway(config)#interface fastEthernet 0/0.3
Gateway(config-if)#encapsulation dot1Q 3
Gateway(config-if)#ip address 192.168.2.1 255.255.255.0
Gateway(config)#interface fastEthernet 0/0.4
Gateway(config-if)#encapsulation dot1Q 4
Gateway(config-if)#ip address 192.168.3.1 255.255.255.0

Маршрутизатор настроен. Переходим к центральному коммутатору и настроим на нем транковый порт, чтобы он пропускал тегированные кадры на маршрутизатор.
CentrSW(config)#interface fastEthernet 0/24
CentrSW(config-if)#switchport mode trunk
CentrSW(config-if)#switchport trunk allowed vlan 2,3,4

Конфигурация закончена и переходим к практике. Отправляю ping с PC1 на PC6 (то есть на 192.168.3.3).
496fe94a133e48d1827f114c300ac6cc.PNG
PC1 понятия не имеет, кто такой PC6 или 192.168.3.3, но знает, что они находятся в разных подсетях (как он это понимает описано в предыдущей статье). Поэтому он отправит сообщение через основной шлюз, адрес которого указан в его настройках. И хоть PC1 знает IP-адрес основного шлюза, для полного счастья не хватает MAC-адреса. И он пускает в ход ARP.
c160626fdfb24fa3a1d6dacb170acd65.PNG
3c9dcb078660477db8159fbf8b49edc2.PNG

ca3378596da94c3aa191337897c7dabc.PNG
Обратите внимание. Как только кадр прибывает на CentrSW, коммутатор не рассылает его кому попало. Он рассылает только на те порты, где разрешен пропуск 2-го VLAN. То есть на маршрутизатор и на SW2 (там есть пользователь, сидящий во 2-ом VLAN).
3421802895a04fe9863cc5c90b16d50a.PNG
Маршрутизатор узнает себя и отправляет ответ (показан стрелочкой). И обратите внимание на нижний кадр. Когда SW2 получил ARP от центрального коммутатора, он аналогично не стал рассылать его на все компьютеры, а отправил только PC7, который сидит во 2-ом VLAN. Но PC7 его отбрасывает, так как он не для него. Смотрим дальше.
fa491e302d0341cbb676ff9667a5d776.PNG

54e2d6613f1b4eec80114b69409f1c06.PNG
ARP дошел до PC1. Теперь ему все известно и можно отправлять ICMP. Еще раз обращу внимание на то, что в качестве MAC-адреса назначения (канальный уровень), будет адрес маршрутизатора, а в качестве IP-адреса назначения (сетевой уровень), адрес PC6.
aec8f751cb5948b09f2154be9ecdca7d.PNG
617699226d744e22a40bddda0db93d67.PNG
394adb86d359440d9f09448121d4becf.PNG
Доходит ICMP до маршрутизатора. Он смотрит в свою таблицу и понимает, что не знает никого под адресом 192.168.3.3. Отбрасывает прибывший ICMP и пускает разведать ARP.
7ddb452c419246ba85a6b1d66b98cb80.PNG
194c754d5cf94ca3aa0e66cddee17c0d.PNG
1c8ca7552ba7405d8be85a9913d8d7f3.PNG
a76dad905a09484098f4f698a103d316.PNG
PC6 узнает себя и отправляет ответ.

b502ec1a8cc3430192c67abbae173601.PNG
e41e10af81154aac83e9bd6b4aa31e1d.PNG
a5275a2ff6c14dde93df57bcc1e3d8b1.PNG
Доходит до маршрутизатора ответ и он добавляет запись в своей таблице. Посмотреть таблицу ARP можно командой show arp.

c86668211f854dc69f3eabf85c1b9e5b.PNG

Двигаемся дальше. PC1 недоволен, что ему никто не отвечает и отправляет следующее ICMP-сообщение.
7f3115f3172a41d2a315eafc58df6579.PNG
82c5d5d9107b4e369a2198b7be953ce9.PNG
a483b7e304bb41ba801fb6d94a5f742f.PNG
0e8e824d1ff34e6cb590a85db45fd365.PNG
c2140518785d4b0e823ae85e6b5b123a.PNG
04d92a46ba8a409789488c454547d4f2.PNG
6b2f727a17994356af3d7c9f670cbbe7.PNG
На этот раз ICMP доходит без проблем. Обратно он проследует тем же маршрутом. Я лишь покажу конечный результат.
8072e7f7885441e4a4308aec02069177.PNG
Первый пакет затерялся (в результате работы ARP), а второй дошел без проблем.
Кому интересно увидеть в анимации, добро пожаловать под спойлер.

InterVLAN Routing
8da661e15ca54b7b9ef2fbf6c48bf321.gif

Итак. Мы добились того, что если узлы находятся в одной подсети и в одном VLAN, то ходить они будут напрямую через коммутаторы. В случае, когда нужно передать сообщение в другую подсеть и VLAN, то передавать будут через роутер Gateway, который осуществляет «межвлановую» маршрутизацию. Данная топология получила название «router on a stick» или «роутер на палочке». Как вы поняли она очень удобна. Мы создали 3 виртуальных интерфейса и по одному проводу гоняли разные тегированные кадры. Без использования сабинтерфейсов и VLAN-ов, пришлось бы для каждой подсети задействовать отдельный физический интерфейс, что совсем не выгодно.
Кстати очень хорошо этот вопрос разобран в этом видео (видео идет около 3-х часов, поэтому ссылка с привязкой именно к тому моменту времени). Если после прочтения и просмотра видео захочется добить все собственными руками, прикладываю ссылку на скачивание.

Разобрались с VLAN-ами и переходим к одному из протоколов, работающего с ним.
DTP (англ. Dynamic Trunking Protocol) или на русском динамический транковый протокол — проприетарный протокол компании Cisco, служащий для реализации trunk режима между коммутаторами. Хотя в зависимости от состояния, они могут согласоваться и в режим access.
В DTP есть 4 режима: Dynamic auto, Dynamic desirable, Trunk, Access. Рассмотрим как они согласуются.

Режимы Dynamic auto Dynamic desirable Trunk Access
Dynamic auto Access Trunk Trunk Access
Dynamic desirable Trunk Trunk Trunk Access
Trunk Trunk Trunk Trunk Отсутствие соединения
Access Access Access Отсутствие соединения Access

То есть левая колонка это 1-ое устройство, а верхняя строка 2-ое устройство. По-умолчанию коммутаторы находятся в режиме «dynamic auto». Если посмотреть таблицу сопоставления, то два коммутатора в режиме «dynamic auto» согласуются в режим «access». Давайте это и проверим. Создаю я новую лабораторную работу и добавлю 2 коммутатора.
9bc6de48c02241f2abd311d463bd7cbf.PNG
Соединять их пока не буду. Мне надо убедиться, что оба коммутатора в режиме «dynamic auto». Проверять буду командой show interfaces switchport.

79365b60ff554d0ba087ba9baca65c81.PNG12511085841846a081da98898a1607f5.PNG

Результат этой команды очень большой, поэтому я его обрезал и выделил интересующие пункты. Начнем с Administrative Mode. Эта строка показывает, в каком из 4-режимов работает данный порт на коммутаторе. Убеждаемся, что на обоих коммутаторах порты в режиме «Dynamic auto». А строка Operational Mode показывает, в каком режиме работы они согласовали работу. Мы пока их не соединяли, поэтому они в состоянии «down».
Сразу дам вам хороший совет. При тестировании какого либо протокола, пользуйтесь фильтрами. Отключайте показ работы всех ненужных вам протоколов.
Перевожу CPT в режим simulation и отфильтрую все протоколы, кроме DTP.
5f15ae195554409ca83c1c55154ca500.PNG

a5625c47099c4a72ad75db6d6a07ae77.PNG

Думаю здесь все понятно.
Соединяю коммутаторы кабелем и, при поднятии линков, один из коммутаторов генерирует DTP-сообщение.
40fb852c7d894b99a51254d7d63ab89e.PNG
Открываю и вижу, что это DTP инкапсулированный в Ethernet-кадр. Отправляет он его на мультикастовый адрес »0100.0ccc.cccc», который относится к протоколам DTP, VTP, CDP.
И обращу внимание на 2 поля в заголовке DTP.

1) DTP Type — сюда отправляющий вставляет предложение. То есть в какой режим он хочет согласоваться. В нашем случае он предлагает согласовать «access».
2) Neighbor MAC-address — в это поле он записывает MAC-адрес своего порта.

Отправляет он и ждет реакции от соседа.
734fd3c56b314450b3473ff6824424cd.PNG
Доходит до SW1 сообщение и он генерирует ответный. Где также согласует режим «access», вставляет свой MAC-адрес и отправляет в путь до SW2.
4f78de2e71574385a3660d83b05b5b59.PNG
Успешно доходит DTP. По идее они должны были согласоваться в режиме «access». Проверю.

fe19df8742bb44cd95d4195d15a957ce.PNG6f05698861df40bdb94f33a745451f44.PNG

Как и предполагалось, согласовались они в режим «access».
Кто то говорит, что технология удобная и пользуется ею. Но я крайне не рекомендую использовать этот протокол в своей сети. Рекомендую это не только я, и сейчас объясню почему. Смысл в том, что этот протокол открывает большую дыру в безопасности. Я открою лабораторку, в которой разбиралась работа «Router on a stick» и добавлю туда еще один коммутатор.
beb6caeccefb49249d9034f64eba4ec7.PNG
Теперь зайду в настройки нового коммутатора и жестко пропишу на порту работу в режиме trunk.

New_SW(config)#interface fastEthernet 0/1
New_SW(config-if)#switchport mode trunk

Соединяю их и смотрю, как они согласовались.

5fedb17b9338401c8c67aa8a42d59c2e.PNG4ed59d2120504b7da3162be55ff2df64.PNG

Все верно. Режимы «dynamic auto» и «trunk» согласуются в режим trunk. Теперь ждем, когда кто- то начнет проявлять активность. Допустим PC1 решил кому то отправить сообщение. Формирует ARP и выпускает в сеть.
1e543f6eb0d348fc80b914a2de93de60.PNG
Пропустим его путь до того момента, когда он попадет на SW2.
c9f585a64c8348bb9b81759a50c06516.PNG
И вот самое интересное.
82f41e737e134aeabdaf3bd40bb2518c.PNG
Он отправляет его на вновь подключенный коммутатор. Объясняю, что произошло. Как только мы согласовали с ним trunk, он начинает отправлять ему все пришедшие кадры. Хоть на схеме и показано, что коммутатор отбрасывает кадры, это ничего не значит. К коммутатору или вместо коммутатора можно подключить любое перехватывающее устройство (sniffer) и спокойно просматривать, что творится в сети. Вроде перехватил он безобидный ARP. Но если взглянуть глубже, то можно увидеть, что уже известен MAC-адрес »0000.0C1C.05DD» и IP-адрес »192.168.1.2». То есть PC1 не думая выдал себя. Теперь злоумышленник знает о таком компьютере. Вдобавок он знает, что он сидит во 2-ом VLAN. Дальше он может натворить многого. Самое банальное — это подменить свой MAC-адрес, IP-адрес, согласоваться быстро в Access и и выдавать себя за PC1. Но самое интересное. Ведь сразу можно этого не понять. Обычно, когда мы прописываем режим работы порта, он сразу отображается в конфигурации. Ввожу show running-config .

388b8dbc9f134d3985978145cb525e5c.PNG
Но здесь настройки порта пустые. Ввожу show interfaces switchport и проматываю до fa0/4.

2009663d8a86432298eeca384b7081b3.PNG
А вот здесь видим, что согласован trunk. Не всегда show running-config дает исчерпывающую информацию. Поэтому запоминайте и другие команды.
Думаю понятно почему нельзя доверять этому протоколу. Он вроде облегчает жизнь, но в то же время может создать огромную проблему. Поэтому полагайтесь на ручной метод. При настройке сразу же обозначьте себе какие порты будут работать в режиме trunk, а какие в access. И самое главное — всегда отключайте согласование. Чтобы коммутаторы не пытались ни с кем согласоваться. Делается это командой «switchport nonegotiate».

Переходим к следующему протоколу.
VTP (англ. VLAN Trunking Protocol) — проприетарный протокол компании Cisco, служащий для обмена информацией о VLAN-ах.
Представьте ситуацию, что у вас 40 коммутаторов и 70 VLAN-ов. По хорошему нужно вручную на каждом коммутаторе их создать и прописать на каких trunk-ых портах разрешать передачу. Дело это муторное и долгое. Поэтому эту задачу может взвалить на себя VTP. Вы создаете VLAN на одном коммутаторе, а все остальные синхронизируются с его базой. Взгляните на следующую топологию.
551f8e9a7f774195b9f4fe1c858692ee.PNG
Здесь присутствуют 4 коммутатора. Один из них является VTP-сервером, а 3 остальных клиентами. Те VLAN, которые будут созданы на сервере, автоматически синхронизируются на клиентах. Объясню как работает VTP и что он умеет.
Итак. VTP может создавать, изменять и удалять VLAN. Каждое такое действие влечет к тому, что увеличивается номер ревизии (каждое действие увеличивает номер на +1). После он рассылает объявления, где указан номер ревизии. Клиенты, получившие это объявление, сравнивают свой номер ревизии с пришедшим. И если пришедший номер выше, они синхронизируют свою базу с ней. В противном случае объявление игнорируется.
Но это еще не все. У VTP есть роли. По-умолчанию все коммутаторы работают в роли сервера. Расскажу про них.

  1. VTP Server. Умеет все. То есть создает, изменяет, удаляет VLAN. Если получает объявление, в которых ревизия старше его, то си

    © Habrahabr.ru