Как найти vlan в сети

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

В предыдущих статьях мы уже работали с многими сетевыми устройствами, поняли, чем они друг от друга отличаются и рассмотрели из чего состоят кадры, пакеты и прочие PDU. В принципе с этими знаниями можно организовать простейшую локальную сеть и работать в ней. Но мир не стоит на месте. Появляется все больше устройств, которые нагружают сеть или что еще хуже — создают угрозу в безопасности. А, как правило, «опасность» появляется раньше «безопасности». Сейчас я на самом простом примере покажу это.

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

Сразу приведу список 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 на компьютер PC2.

Кто хочет увидеть это в виде анимации, открывайте спойлер (там показан ping от PC1 до PC5).

Работа сети в одном широковещательном домене

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

В 3-ей части я показал, как выглядит ethernet-кадр. Посмотрите на него и освежите в памяти. Вот так выглядит не тегированный кадр.

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

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

1) TPID (англ. Tag Protocol ID) или Идентификатор тегированного протокола — состоит из 2-х байт и для VLAN всегда равен 0x8100.
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.

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

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)#

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

Начнем настройку с коммутатора 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.

Появился 2-ой VLAN с именем Dir-ya и видим принадлежащие ему порты fa0/1 и fa0/2.

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

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

Или его имя.

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

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

Здесь есть информация и о 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
SW2(config-if)#switchport trunk allowed vlan 3

SW3:

SW3(config)#vlan 4
SW3(config-vlan)#name otdel kadrov
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
SW3(config-if)#switchport trunk allowed vlan 4

Обратите внимание на то, что мы подняли и настроили VLAN, но адресацию узлов оставили такой же. То есть, фактически все узлы в одной подсети, но разделены VLAN-ами. Так делать нельзя. Каждому VLAN надо выделять отдельную подсеть. Я это сделал исключительно в учебных целях. Если бы каждый отдел сидел в своей подсети, то они бы априори были ограничены, так как коммутатор не умеет маршрутизировать трафик из одной подсети в другую (плюс это уже ограничение на сетевом уровне). А нам нужно ограничить отделы на канальном уровне.
Снова отправляю ping с PC1 к PC3.

Идет в ход ARP, который нам и нужен сейчас. Откроем его.

Пока что ничего нового. ARP инкапсулирован в ethernet.

Кадр прилетает на коммутатор и тегируется. Теперь там не обычный ethernet, а 802.1q. Добавились поля, о которых я писал ранее. Это TPID, который равен 8100 и показывающий, что это 802.1q. И TCI, которое объединяет 3 поля PCP, CFI и VID. Число, которое в этом поле — это номер VLAN. Двигаемся дальше.

После тега он отправляет кадр на PC2 (т.к. он в том же VLAN) и на центральный коммутатор по транковому порту.

Так как жестко не было прописано какие типы VLAN пропускать по каким портам, то он отправит на оба коммутатора. И вот здесь коммутаторы, увидев номер VLAN, понимают, что устройств с таким VLAN-ом у них нет и смело его отбрасывают.

PC1 ожидает ответ, который так и не приходит. Можно под спойлером посмотреть в виде анимации.

Анимация

Теперь следующая ситуация. В состав дирекции нанимают еще одного человека, но в кабинете дирекции нет места и на время просят разместить человека в отделе бухгалтерии. Решаем эту проблему.

Подключили компьютер к порту 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 trunk allowed vlan 2
CentrSW(config)#interface fastEthernet 0/2
CentrSW(config-if)#switchport trunk allowed vlan 2,3
CentrSW(config)#interface fastEthernet 0/3
CentrSW(config-if)#switchport trunk allowed vlan 4

Время проверки. Отправляю ping с PC1 на PC7.

Пока что весь путь аналогичен предыдущему. Но вот с этого момента (с картинки ниже) центральный коммутатор примет другое решение. Он получает кадр и видит, что тот протегирован 2-ым VLAN-ом. Значит отправлять его надо только туда, где это разрешено, то есть на порт fa0/2.

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

И действительно. Коммутатор отправит кадр в «чистом» виде, то есть без тегов.

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

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

ARP доходит до PC1, о чем свидетельствует галочка на конверте. Теперь ему известен MAC-адрес и он пускает в ход ICMP.

Открываем пакет на коммутаторе и наблюдаем такую же картину. На канальном уровне кадр тегируется коммутатором. Так будет с каждым сообщением.

Видим, что пакет успешно доходит до PC7. Обратный путь я показывать не буду, так как он аналогичен. Если кому интересно, можно весь путь увидеть на анимации под спойлером ниже. А если охота самому поковырять эту топологию, прикладываю ссылку на лабораторку.

Логика работы VLAN

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

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

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

  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).

PC1 понятия не имеет, кто такой PC6 или 192.168.3.3, но знает, что они находятся в разных подсетях (как он это понимает описано в предыдущей статье). Поэтому он отправит сообщение через основной шлюз, адрес которого указан в его настройках. И хоть PC1 знает IP-адрес основного шлюза, для полного счастья не хватает MAC-адреса. И он пускает в ход ARP.

Обратите внимание. Как только кадр прибывает на CentrSW, коммутатор не рассылает его кому попало. Он рассылает только на те порты, где разрешен пропуск 2-го VLAN. То есть на маршрутизатор и на SW2 (там есть пользователь, сидящий во 2-ом VLAN).

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

ARP дошел до PC1. Теперь ему все известно и можно отправлять ICMP. Еще раз обращу внимание на то, что в качестве MAC-адреса назначения (канальный уровень), будет адрес маршрутизатора, а в качестве IP-адреса назначения (сетевой уровень), адрес PC6.

Доходит ICMP до маршрутизатора. Он смотрит в свою таблицу и понимает, что не знает никого под адресом 192.168.3.3. Отбрасывает прибывший ICMP и пускает разведать ARP.

PC6 узнает себя и отправляет ответ.

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

Двигаемся дальше. PC1 недоволен, что ему никто не отвечает и отправляет следующее ICMP-сообщение.

На этот раз ICMP доходит без проблем. Обратно он проследует тем же маршрутом. Я лишь покажу конечный результат.

Первый пакет затерялся (в результате работы ARP), а второй дошел без проблем.
Кому интересно увидеть в анимации, добро пожаловать под спойлер.

InterVLAN Routing

Итак. Мы добились того, что если узлы находятся в одной подсети и в одном 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. Рассмотрим как они согласуются.

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

Соединять их пока не буду. Мне надо убедиться, что оба коммутатора в режиме «dynamic auto». Проверять буду командой show interfaces switchport.

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

Сразу дам вам хороший совет. При тестировании какого либо протокола, пользуйтесь фильтрами. Отключайте показ работы всех ненужных вам протоколов.

Перевожу CPT в режим simulation и отфильтрую все протоколы, кроме DTP.

Думаю здесь все понятно. Соединяю коммутаторы кабелем и, при поднятии линков, один из коммутаторов генерирует DTP-сообщение.

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

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

Отправляет он и ждет реакции от соседа.

Доходит до SW1 сообщение и он генерирует ответный. Где также согласует режим «access», вставляет свой MAC-адрес и отправляет в путь до SW2.

Успешно доходит DTP. По идее они должны были согласоваться в режиме «access». Проверю.

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

Теперь зайду в настройки нового коммутатора и жестко пропишу на порту работу в режиме trunk.

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

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

Все верно. Режимы «dynamic auto» и «trunk» согласуются в режим trunk. Теперь ждем, когда кто- то начнет проявлять активность. Допустим PC1 решил кому то отправить сообщение. Формирует ARP и выпускает в сеть.

Пропустим его путь до того момента, когда он попадет на SW2.

И вот самое интересное.

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

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

А вот здесь видим, что согласован trunk. Не всегда show running-config дает исчерпывающую информацию. Поэтому запоминайте и другие команды.

Думаю понятно почему нельзя доверять этому протоколу. Он вроде облегчает жизнь, но в то же время может создать огромную проблему. Поэтому полагайтесь на ручной метод. При настройке сразу же обозначьте себе какие порты будут работать в режиме trunk, а какие в access. И самое главное — всегда отключайте согласование. Чтобы коммутаторы не пытались ни с кем согласоваться. Делается это командой «switchport nonegotiate».

Переходим к следующему протоколу.

VTP (англ. VLAN Trunking Protocol) — проприетарный протокол компании Cisco, служащий для обмена информацией о VLAN-ах.

Представьте ситуацию, что у вас 40 коммутаторов и 70 VLAN-ов. По хорошему нужно вручную на каждом коммутаторе их создать и прописать на каких trunk-ых портах разрешать передачу. Дело это муторное и долгое. Поэтому эту задачу может взвалить на себя VTP. Вы создаете VLAN на одном коммутаторе, а все остальные синхронизируются с его базой. Взгляните на следующую топологию.

Здесь присутствуют 4 коммутатора. Один из них является VTP-сервером, а 3 остальных клиентами. Те VLAN, которые будут созданы на сервере, автоматически синхронизируются на клиентах. Объясню как работает VTP и что он умеет.

Итак. VTP может создавать, изменять и удалять VLAN. Каждое такое действие влечет к тому, что увеличивается номер ревизии (каждое действие увеличивает номер на +1). После он рассылает объявления, где указан номер ревизии. Клиенты, получившие это объявление, сравнивают свой номер ревизии с пришедшим. И если пришедший номер выше, они синхронизируют свою базу с ней. В противном случае объявление игнорируется.

Но это еще не все. У VTP есть роли. По-умолчанию все коммутаторы работают в роли сервера. Расскажу про них.

  1. VTP Server. Умеет все. То есть создает, изменяет, удаляет VLAN. Если получает объявление, в которых ревизия старше его, то синхронизируется. Постоянно рассылает объявления и ретранслирует от соседей.
  2. VTP Client — Эта роль уже ограничена. Создавать, изменять и удалять VLAN нельзя. Все VLAN получает и синхронизирует от сервера. Периодически сообщает соседям о своей базе VLAN-ов.
  3. VTP Transparent — эта такая независимая роль. Может создавать, изменять и удалять VLAN только в своей базе. Никому ничего не навязывает и ни от кого не принимает. Если получает какое то объявление, передает дальше, но со своей базой не синхронизирует. Если в предыдущих ролях, при каждом изменении увеличивался номер ревизии, то в этом режиме номер ревизии всегда равен 0.

Это все, что касается VTP версии 2. В VTP 3-ей версии добавилась еще одна роль — VTP Off. Он не передает никакие объявления. В остальном работа аналогична режиму Transparent.

Начитались теории и переходим к практике. Проверим, что центральный коммутатор в режиме Server. Вводим команду show vtp status.

Видим, что VTP Operating Mode: Server. Также можно заметить, что версия VTP 2-ая. К сожалению, в CPT 3-ья версия не поддерживается. Версия ревизии нулевая.
Теперь настроим нижние коммутаторы.

SW1(config)#vtp mode client 
Setting device to VTP CLIENT mode.

Видим сообщение, что устройство перешло в клиентский режим. Остальные настраиваются точно также.

Чтобы устройства смогли обмениваться объявлениями, они должны находиться в одном домене. Причем тут есть особенность. Если устройство (в режиме Server или Client) не состоит ни в одном домене, то при первом полученном объявлении, перейдет в объявленный домен. Если же клиент состоит в каком то домене, то принимать объявления от других доменов не будет. Откроем SW1 и убедимся, что он не состоит ни в одном домене.

Убеждаемся, что тут пусто.

Теперь переходим центральному коммутатору и переведем его в домен.

CentrSW(config)#vtp domain cisadmin.ru
Changing VTP domain name from NULL to cisadmin.ru

Видим сообщение, что он перевелся в домен cisadmin.ru.
Проверим статус.

И действительно. Имя домена изменилось. Обратите внимание, что номер ревизии пока что нулевой. Он изменится, как только мы создадим на нем VLAN. Но перед созданием надо перевести симулятор в режим simulation, чтобы посмотреть как он сгенерирует объявления. Создаем 20-ый VLAN и видим следующую картинку.

Как только создан VLAN и увеличился номер ревизии, сервер генерирует объявления. У него их два. Сначала откроем тот, что левее. Это объявление называется «Summary Advertisement» или на русском «сводное объявление». Это объявление генерируется коммутатором раз в 5 минут, где он рассказывает о имени домена и текущей ревизии. Смотрим как выглядит.

В Ethernet-кадре обратите внимание на Destination MAC-адрес. Он такой же, как и выше, когда генерировался DTP. То есть, в нашем случае на него отреагируют только те, у кого запущен VTP. Теперь посмотрим на следующее поле.

Здесь как раз вся информация. Пройдусь по самым важным полям.

  • Management Domain Name — имя самого домена (в данном случае cisadmin.ru).
  • Updater Identity — идентификатор того, кто обновляет. Здесь, как правило, записывается IP-адрес. Но так как адрес коммутатору не присваивали, то поле пустое
  • Update Timestamp — время обновления. Время на коммутаторе не менялось, поэтому там стоит заводское.
  • MD5 Digest — хеш MD5. Оно используется для проверки полномочий. То есть, если на VTP стоит пароль. Мы пароль не меняли, поэтому хэш по-умолчанию.

Теперь посмотрим на следующее генерируемое сообщение (то, что справа). Оно называется «Subset Advertisement» или «подробное объявление». Это такая подробная информация о каждом передаваемом VLAN.

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

Получают клиенты объявления. Видят, что номер ревизии выше, чем у них и синхронизируют базу. И отправляют сообщение серверу о том, что база VLAN-ов изменилась.

Принцип работы протокола VTP

Вот так в принципе работает протокол VTP. Но у него есть очень большие минусы. И минусы эти в плане безопасности. Объясню на примере этой же лабораторки. У нас есть центральный коммутатор, на котором создаются VLAN, а потом по мультикасту он их синхронизирует со всеми коммутаторами. В нашем случае он рассказывает про VLAN 20. Предлагаю еще раз глянуть на его конфигурацию.

И тут в сеть мы добавляем новый коммутатор. У него нет новых VLAN-ов, кроме стандартных и он не состоит ни в одном VTP-домене, но подкручен номер ревизии.

И перед тем как его воткнуть в сеть, переводим порт в режим trunk.

Теперь переключаю CPT в «Simulation Mode» и отфильтровываю все, кроме VTP. Подключаюсь и смотрю, что происходит.

Через какое то время до NewSW доходит VTP сообщение, откуда он узнает, что в сети есть VTP-домен «cisadmin.ru». Так как он не состоял до этого в другом домене, он автоматически в него переходит. Проверим.

Теперь он в том же домене, но с номером ревизии выше. Он формирует VTP-сообщение, где рассказывает об этом.

Первым под раздачу попадет SW1.

Заметьте, что на SW1 приходят сразу 2 VTP-сообщения (от NewSW и от CentrSW). В сообщении от NewSW он видит, что номер ревизии выше, чем его и синхронизирует свою базу. А вот сообщение от CentrSW для него уже устарело, и он отбрасывает его. Проверим, что изменилось на SW1.

Обновился номер ревизии и, что самое интересное, база VLAN. Теперь она пустая. Смотрим дальше.

Обратите внимание. До сервера доходит VTP-сообщение, где номер ревизии выше, чем у него. Он понимает, что сеть изменилась и надо под нее подстроиться. Проверим конфигурацию.

Конфигурация центрального сервера изменилась и теперь он будет вещать именно ее.
А теперь представьте, что у нас не один VLAN, а сотни. Вот таким простым способом можно положить сеть. Конечно домен может быть запаролен и злоумышленнику будет тяжелее нанести вред. А представьте ситуацию, что у вас сломался коммутатор и срочно надо его заменить. Вы или ваш коллега бежите на склад за старым коммутатором и забываете проверить номер ревизии. Он оказывается выше чем у остальных. Что произойдет дальше, вы уже видели. Поэтому я рекомендую не использовать этот протокол. Особенно в больших корпоративных сетях. Если используете VTP 3-ей версии, то смело переводите коммутаторы в режим «Off». Если же используется 2-ая версия, то переводите в режим «Transparent».

Кому интересно посмотреть это в виде анимации, открывайте спойлер.

Подключение коммутатора с большей ревизией

Для желающих поработать с этой лабораторкой, прикладываю ссылку.
Ну вот статья про VLAN подошла к концу. Если остались какие то вопросы, смело задавайте. Спасибо за прочтение.

В данной статье разбираемся с настройкой виртуальной локальной сети VLAN для сетевого оборудования Mikrotik поэтапно в состояние: access, trunk, и в двух состояниях одновременно.

Для начала разберемся, что же означает VLAN. VLAN  – это аббревиатура Virtual Local Area Network виртуальная локальная сеть. Другими словами — эта технология позволяет, на основе реальной сети, создавать виртуальные сети с разными уровнями доступа и распределением пользователей. Виртуальные сети повышают безопасность локальной сети, как пример, отделив рабочую сеть от гостевой и запретив гостевой сети доступ в рабочую, можно использовать физически одну точку доступа для доступа в сеть интернет как для сотрудников, так и для гостей компании. Или разделив сети для разных подразделений или отделов одной компании упростив тем самым обслуживание и мониторинг сети. Сегментируя сеть можно обеспечить отдельные сети для разных компаний в большом бизнес центре, таким образом можно соединить в одну сеть офисы расстояние которых превышает физическую длину сегмента Ethernet кабеля (100-150 метров). Благодаря разделу сети на сегменты с помощью VLAN, можно уменьшить нагрузку на оборудование, а также более точно определить и исправлять ошибки возникающие в сети.

ВАЖНО! Для построения сети с продержкой VLAN нужно использовать оборудование, которое поддерживает данный функционал. Также желательно использовать оборудование одного производителя или же убедиться, что все оборудование в сети поддерживаю модификацию стандарта VLAN.

Технические параметры и стандарты

В одном сегменте локальной сети нет возможности сделать нескончаемое число виртуальных сетей, все дело в ограничении стандарта, он ограничен – 4096 сегментов (от 0 до 4095). Надо учесть тот факт, что VLAN с идентификатором 1 является основным или native и по умолчанию используется на всех портах сетевых устройств.

Стандартные настройки состояния порта

  • access port или не тегированный – порт транслирует только один VLAN.  Это порт, к которому непосредственно подключается конечное устройство(компьютер, точка доступа, принтер и другие устройства).
  • trunk port или тегированный – порт транслирует несколько VLAN. Этот порт передает несколько идентификаторов VLAN с одного сетевого устройства на другое.

Ввиду особенности оборудования MikroTik настройка VLAN можно делать разными способами. К сожалению, не все способы настройки VLAN будут совместимы с настройками оборудования других производителей, и по этой причине, в данной статье будет рассмотрены настройки которые будут максимально совместимы с оборудованием разных производителей. В данной статье настройки оборудования MikroTik будут осуществляться через программу WinBox.

Пример №1: Настройка VLAN в состоянии access

В первом примере рассмотрим настройку VLAN на устройстве RB750r2 (hEx lite) у которого порты будут в разных VLAN-ах и в режиме access. Схема приведена ниже.

Первый порт будет использоваться для подключению к интернет провайдеру, второй и третий порты для общей сети и останутся в базовой конфигурации. А на четвертый и пятый порты будут навешены VLAN, на четвертый – VLAN100 (VLAN с меткой сто), а на пятый порт – VLAN200 (VLAN с меткой двести).

Настройка VLAN

Создадим Bridge для каждого из VLAN-ов — Vlan100 и Vlan200. Главное меню – Bridge, нажимаем «+» для создания bridge. Далее задаем имя (в примере будем использовать Vlan100) и нажимаем кнопку ОК. И повторяем такие же действия для создания bridge Vlan200.

Вторым этапом нам потребуется создать непосредственно VLAN с метками 100 и 200.  Главное меню – Interfaces —  вкладка VLAN, нажимаем «+» для создания VLAN. Далее даем ему имя и ставим метку согласно нашему VLAN, а также выбираем интерфейс, к которому будет принадлежать VLAN, выбираем ранее созданный нами bridge – Vlan100 и Vlan200 соответственно для 100 и 200 VBLAN-ов.

Следующий этап, назначим IP адрес для каждого VLAN-на. Главное меню – IP – Addresses, нажимаем «+» для назначения IP адреса, задаем адресного пространства и выбираем интерфейс, как и в предыдущем шаге нашем интерфейсом служит bridge Vlan100 и Vlan200.

Теперь настроим DHCP Server для каждого из VLAN bridge, для примера будет использоваться наиболее простой и быстрый вариант создание DHCP Server. Главное меню – IP – DHCP Server, нажимаем «DHCP Setup» выбираем интерфейс bridge Vlan100 и нажимаем кнопку «Next», в конце нажимаем «ОК», и повторяем процедуру для следующего интерфейса bridge Vlan200.

Следующий этап — переводим четвертый и пятый порт в состояние access. Главное меню – Bridges, вкладка VLANs, нажимаем «+» и создаем настройки для VLAN100, в качестве Bridge – выбираем созданный ранее Bridge Vlan100, метка VLAN 100, далее выбираем какой VLAN будет передаваться – Tagged — Bridge Vlan100 и последнее выбираем какой порт будет в состояние access (Untagged – порт 4), нажимаем «ОК» и правило готово. И создаем еще одно правило, но теперь для VLAN200 подставляя все значения для двухсотого VLAN-на, а в качестве access порта выбираем пятый порт согласно нашей схеме. Vlan100 и Vlan200 с меткой 1 создается автоматически, так как VLAN с меткой 1 это VLAN управления, по умолчанию назначается всем портам и bridges. Это означает, что пользователи VLAN100 и VLAN 200 могут попасть в служебную сеть. В следующем этане настроек мы создадим правила, которые помогут изолировать сети одну от другой.

Последним действием будет изолирование VLAN-ов один от одного, а также от VLAN с меткой 1, сети управления. Главное меню IP – Routes вкладка Rules нажимаем «+» и создаем правило. Сеть 192.168.100.0/24 недоступна (unreachable) сеть 192.168.200.0/24 и наоборот, а также сетям 192.168.100.0/24 и 192.168.200.0/24 не будет доступна сеть управления 192.168.88.0/24. Для каждого такого ограничения создаться отдельное правило.

В итоге мы получили маршрутизатор с настроенными в режиме access четвертого и пятого портов, согласно нашей схеме.

Пример №2: Настройка VLAN в состоянии trunk

Во втором примере к предыдущим настройкам добавим VLAN 40 и 30 в состоянии trunk на третий порт RB750r2 (hEx lite). Для примера подключим к третьему порту точку доступа и назначим разные VLAN-ны разным беспроводным сетям VLAN30 – Test30, а VLAN40 – Test40. В качестве точки доступа будет использоваться точка RBwAPG-5HacD2HnD (wAP ac), подключенная к третьему порту RB750r2 (hEx lite).

C начала настроим маршрутизатор. Создадим VLAN 30 и 40. Главное меню – Interfaces —  VLAN, нажимаем «+» для создания VLAN. Далее даем ему имя и ставим метку согласно нашему VLAN, и выбираем третий порт, к которому будет принадлежать VLAN. В отличии от предыдущего примера VLAN 30 и 40 будут принадлежать к одному порту (ether3).

Следующий этап, назначим IP адрес для каждого VLAN-на. Главное меню – IP – Addresses, нажимаем «+» для назначения адреса, задаем адресного пространства 192168.30.0 для интерфейса Vlan30, а для интерфейса Vlan40 назначаем адрес пространства 192.168.40.0.

Теперь настроим DHCP Server для каждого из VLAN-ов. Главное меню – IP – DHCP Server, нажимаем «DHCP Setup» выбираем интерфейс VLAN30 и жмем кнопку «Next», в конце нажимаем «ОК», и повторяем процедуру для интерфейса VLAN40. 

Переходим к настройкам точки доступа RBwAPG-5HacD2HnD (wAP ac). Первым этапом удалим все настройки, а также не будем использовать заводские настройки при загрузке устройства. Главное меню – System – Reset Configuration, выбираем пункты No Default Configuration и Do Not Backup далее нажимаем кнопку Reset Configuration.

После перезагрузки приступим к настройке беспроводной сети. Главное меню – Wireless, нажимаем «+» для создания Virtual (виртуальной сети), во вкладке General называем беспроводный интерфейс (в примере wlan30 и wlan40  для  VLAN 30 и VLAN40 соответственно), далее переходим во вкладку Wireless и настраиваем беспроводный интерфейс: Mode – ap bridge (тип вещания радиомодуля), SSID – Test30 (название беспроводной сети), Master Interface – wlan1 (так как был создан виртуальный беспроводный интерфейс нужно определить к какому радиомодулю он будет относиться, в данном примере виртуальные интерфейсы будут относиться к радиомодулю с частотой 2,4ГГц), Security Profile – default (профиль безопасности беспроводной сети, в примере будем использовать профиль по умолчанию, изменить параметры которого можно во вкладке Security (Гласное меню – Wireless вкладка  Security)), VLAN Mode – use tag (выбираем использовать  метку VLAN, другими словами переводим беспроводный интерфейс в access), VLAN ID – 30 ( прописываем метку VLAN). Нажимаем «ОК» и создаем еще один беспроводный интерфейс, но уже для VLAN 40 (он будет отличаться от предыдущих настроек следующими параметрами SSID – Test40VLAN ID – 40, а также может быть выбран другой профиль безопасности).

Cледующим шагом будет создание и объединение всех интерфейсов (физических и виртуальных) в один Bridge. Главное меню – Bridge, нажимаем «+» для создания bridge. Далее даем ему имя (в примере bridge_AP) и нажимаем кнопку ОК. Переходим во вкладку Ports и нажимаем «+» добавляем все порты в созданный ранее bridge_AP.  После этого этапа оборудование будет настроено согласно нашей схеме. Так же эта схема в этом примере будет работать если в разрыв между точкой доступа и маршрутизатором установить неуправляемый коммутатором. Далее в следующем примере рассмотрим схему с использованием управляемого коммутатора для расширения нашей сети.

Пример №3: Настройка VLAN в состоянии trunk и access

В данном примере мы расширим нашу сеть при помощи коммутатора CRS328-24P-4S+RM под управлением операционной системой SwitchOS.  На первый порт коммутатора будут оправлены три VLAN (VLAN30, VLAN40 и VLAN200) в режиме trunk, с двадцать четвертого порта VLAN30 и VLAN40, также в trunk, будут уходить на точку доступа RBwAPG-5HacD2HnD (wAP ac). А VLAN200 будет на портах с девятого по шестнадцатый в режиме access. Схема представлена ниже. В данном примере будут продолжаться настройки создание в первом и втором примерах. Будут изменены настройки RB750r2 (hEx lite), а настройки на точке доступа RBwAPG-5HacD2HnD (wAP ac) останутся без изменений. Коммутатор CRS328-24P-4S+RM будет настроен под нашу задачу из базовой конфигурации.  Поэтому, перед тем как перейти к третей части, нужно ознакомиться с первым и вторым примером, а настройки коммутатора привести к базовым.

Первым этапом на маршрутизаторе RB750r2 (hEx lite нужно изменить настройки VLAN200. Главное меню – Interface, вкладка VLAN ,  выбираем VLAN200 и меняем интерфейс к которому принадлежит этот VLAN с bridge Vlan200  на ethernet3. Нажимаем «ОК».

Далее. Главное меню – Bridges, вкладка Ports нажимаем «+« добавим vlan200 в bridge Vlan200. Нажимаем «ОК», и переходим к следующему этапу.

Следующий этап – это настройка коммутатора CRS328-24P-4S+RM. Обратите внимание, что оборудование MikroTik под управлением Switch OS настраивается не через привычный интерфейс программы WinBox, а не посредственно через веб-интерфейс. IP – адрес по умолчанию (192.168.88.1) такой же как и в большинстве устройств MikroTik. Логин admin, а поле пароля пустое. Используя веб-браузер заходим на устройство CRS328-24P-4S+RM (в данном примере настройки будут касаться VLAN). Добавляем выше созданные VLAN200, VLAN40 и VLAN30.  Переходим во вкладку VLANs, жмем Append и добавляем идентификатор VLAN вторым шагом выбираем, к которому порту будет принадлежать тот или иной VLAN (в примере VLAN30 и VLAN40 транслируется на двадцать четвертый порт к которому подключена точка доступа, а VLAN200  отдаем с девятого по шестнадцатый порты). Первый порт будет содержат все три VLAN-на, так как в это порт подключен маршрутизатор сети RB750r2 (hEx lite) третьим портом.  Нажимаем кнопку Apply All применяем создание настройки. Теперь VLAN30 и VLAN40 транслируется на двадцать четвертый.

Следующим шагом отдадим VLAN200 в режиме access. Переходим во вкладку VLAN переводим нужные порты в состояние only untagged (access) и идентификатор VLAN 200, нажимаем кнопку Apply All. Все этапы настроек в третьем примере выполнены, сеть работает согласно нашей схеме.

return

Сети для самых маленьких. Часть вторая. Коммутация

1 ноября 2012, 16:59

like

18
views
26671
message
118



После скучного рассказа о подключении к кошкам переходим к настройке сети. В этот раз темы будут для новичков сложные, для старичков избитые. Впрочем сетевым аксакалам едва ли удастся почерпнуть что-то новое из этого цикла. Итак, сегодня: аккуратно впитываем теорию о коммутаторах, уровнях сетевой модели, понятии инкапсуляции и заголовков (не пугайтесь — еще не время), собираем спланированную в нулевой части цикла сеть, настраиваем VLAN’ы, разбираемся с access и trunk-портами и тегированными Ethernet-фреймами, соотносим текущие знания со стеком протоколов TCP/IP и моделью OSI (да, наконец-то мы ее коснёмся).

Содержание выпуска

  • Теория
  • VLAN
  • FAQ
  • Практика

Перед тем, как вы обратитесь к практике, настоятельно рекомендуем почитать нулевую часть, где мы всё спланировали и запротоколировали.

Теория

Для начала необходимо определится с определениями и детерминировать терминологию. В начале пути с этим могут быть трудности, несмотря на горы википедии и прорву технических статей.

Рассмотрим самые общие термины, поскольку что такое коммутатор и маршрутизатор вы, во-первых, представляете, во-вторых, по ходу не раз ещё их затронем.

Итак, тронулись:

СКС — структурированная кабельная система — это определение вы в любом яндексе найдёте. На деле это все провода, розетки, патчпанели и патчкорды, то есть грубо говоря, это физика вашей сети в узком смысле, в широком — это совокупность сетей: ЛВС, телефонные сети, системы видеонаблюдения и прочее. Это отдельный очень большой и порой сложный пласт знаний и технологий, который вообще не имеет точек пересечения с настройкой, поэтому к нему мы более обращаться не будем. Привели мы этот термин по большей части для того, чтобы читатель чувствовал отличие от следующего.

ЛВС — Локальная Вычислительная Сеть — LAN — Local Area Network. Актуальность слова “Вычислительная” сейчас можно поставить под сомнение, так же, как в слове ЭВМ. Всё-таки, говоря о современных сетях и устройствах, мы давно уже не держим в уме термин «вычисления», несмотря на то, что глубинная суть осталась неизменной. В этом плане буржуйские термин более универсален и даёт более простое представление о своём значении.

Итак, локальная сеть — в первом приближении — это сеть вашей организации. Вот, к примеру, обслуживаем мы сейчас сеть компании «Лифт ми Ап» с двумя офисам, так вот сети этих двух офисов и будут являться локальной сетью.

При втором приближении, локальной называют сеть, которая находится под управлением одного сетевого администратора. То есть, например, вы отвечаете за районный сегмент сети провайдера, в таком случае ваша районная сеть со всеми подсетями будет являться локальной, в то время, как вышестоящая сеть и сети других районов уже нет, так как за них отвечает уже другие люди. Вообще говоря, это уже MAN — Metropolian Area Network — сеть уровня города. Но в какой-то степени к ней можно применить понятие LAN и уж тем более VLAN.

С точки зрения меня, как абонента этого провайдера, моя локальная сеть — это всё, что до моего домашнего роутера. Интуитивно, наверно, все понимают о чём идёт речь.

Именно с локальными сетями мы и будем иметь дело в ближайших выпусках.

И последнее, что хотелось бы отметить в связи с ЛВС — это IP-адресация.

Все вы знаете, что когда вы включаете какой-нибудь домашний Wi-Fi-роутер в сеть, он обычно выдаёт вам IP-адрес, вроде 192.168.1.x. Почему именно 192.168 в начале?

Дело в том, что все IP адреса делятся на приватные (private, он же внутренний, “серый”, локальный), и публичные. Публичные используются в интернет, каждый адрес уникален, их распределение контролирует организация IANA(Internet Assigned Numbers Authority).

Приватные используются для адресации хостов (ну, строго говоря, не хостов, а интерфейсов) внутри ЛВС, их распределение никто не контролирует. Для них выделили три диапазона адресов (по одному из каждого класса):

  • 10.0.0.0 — 10.255.255.255
  • 172.16.0.0 — 172.31.255.255
  • 192.168.0.0 — 192.168.255.255

Важный момент касаемо “классов адресов”, об этом уже как-то писали на хабре: классов адресов уже давно не существует. Позже мы обстоятельно поговорим об адресации, но пока рекомендация такая: забыть про существование классов адресов, чтобы не попасть впросак на собеседовании или в разговоре.

Это те адреса, которые вы можете использовать в своей частной сети. Они вполне могут повторяться (и повторяются) в разных локальных сетях, и за её пределы они не выходят. Приватный адрес на то и приватный, поэтому любой пакет с адресом из диапазонов, указанных выше, попавший к провайдеру, будет отбрасываться.

Если вернуться к нашей старой схеме то вы увидите, что для своей сети мы выбрали приватные адреса из диапазона 172.16.0.0 — 172.31.255.255.

Достаточно подробно об IP-адресах можно почитать тут и тут.

У всех провайдеров и во внутренней сети любой крупной организации используются именно эти серые подсети. Если только вы не государственный ВУЗ, которому в своё время выпала сеть на несколько тысяч публичных адресов: Кемеровский Государственный Университет, к примеру, не озадачивается NAT’ом и прочей чепухой — просто на все компьютеры университетской сети раздаются белые IP.

Широковещательный домен — область сети, в которой происходит обмен широковещательными сообщениями, и устройства могут отправлять друг другу сообщения непосредственно, без участия маршрутизатора.

О чём это мы тут говорим? Ну, например, послал ваш компьютер широковещательный запрос в сеть в поисках DHCP-сервера. Фрейм этот (он же кадр) адресован всем устройствам и имеет MAC-адрес получателя FF:FF:FF:FF:FF:FF. Сначала он попадает на коммутатор, с которого его копии рассылаются на все порты. Потом часть попадает на другие компьютеры, часть уходят в соседние коммутаторы, кто-то доходит до маршрутизатора, а одну копию принимает-таки DHCP-сервер. И вот участок сети, внутри которого могут жить эти кадры и называется широковещательным доменом. А кончают свою жизнь они на конечных хостах (компьютеры, серверы) или на маршрутизаторах, которые их отбрасывают, если они им не предназначены: Broadcast Example

Если же на коммутаторе заведены VLAN’ы, то они также разделяют широковещательные домены, потому что пакет между ними обязательно должен проходить через маршрутизатор, который отбросит широковещательные сообщения. Таким образом, один VLAN — это один широковещательный домен.

Broadcast with VLANs Example Ещё раз: у нас есть три способа разграничить широковещательные домены:

1) Поставить маршрутизатор и разнести хосты в разные подсети,

2) Разделить сеть VLAN’ами,

3) Порвать кабель.

Ну и самая жесть, которой часто сторонятся начинающие: OSI. Open System Interconnection. Вообще в двух словах, чтобы мозг не захламить за одно занятие. Эту модель называют эталонной, потому что в реальном мире дело не дошло до реализации. Но она само совершенство, поэтому инженеры и админы вворачивают это слово повсюду.

В основе лежат 7 китов сетевой иерархии: 7 уровней. Сегодня коснёмся двух нижних: первый — физический — это представление информации в виде сигналов, прямо скажем, битов. Задача этого уровня сгенерировать электрический, оптический или радиосигнал, передать его в среду и принять его. К нему относится вся физика: интерфейсы, кабели, антенны, медиаконвертеры (конвертеры среды), репитеры, старые хабы. В общем низкоуровневая это работа. Это первый уровень модели OSI и стека TCP/IP.

Второй — канальный. На этом уровне работают коммутаторы. Идентификатор устройства здесь, это MAC-адрес. У каждого узла (компьютер, маршрутизатор, ноутбук, IP-телефон, любой Wi-Fi-клиент) есть этот уникальный адрес, который однозначно определяет устройство в локальной сети. В теории MAC-адреса не должны повторяться вообще, но на практике такое однако случается и в рамках одного широковещательного домена может приводить к сложноотлавливаемым проблемам.

Наиболее известным протоколом этого уровня является Ethernet. Данные на этом уровне передаются кусками, каждый из которых называется Ethernet-фрейм (он же Ethernet-кадр, он же PDU канального уровня). Что он представляет из себя?

*Картинку гнусно спёрли из википедии, потому что красивее не нарисуем*

Payload — это полезная нагрузка — данные сетевого уровня, которые вкладываются (инкапсулируются) в кадр. MAC Header (Заголовок) — это служебная информация канального (второго) уровня. Самые важные пока для нас элементы — это source MAC-address (адрес отправителя кадра) и Destination MAC-address (адрес получателя кадра).

Третий уровень — сетевой (IP)

Четвёртый — транспортный (TCP, UDP)

С пятого по седьмой — сеансовый, представления и прикладной (в стеке TCP/IP они не различаются и называются просто прикладным. На нём работают протоколы вроде HTTP, FTP, telnet и многие другие)

Сегодня мы акцентируемся на 1-м и 2-м уровнях, особенно на втором. Третьего и четвертого коснёмся в следующих выпусках.

Теперь проследим нелёгкий путь кадра.

Состояние покоя сети — утопия. Вы пытаетесь пропинговать, например, адрес соседнего компьютера командой ping 192.168.1.118. Данные этого приложения показаны фиолетовым параллелепипедом. За это отвечает протокол ICMP. В него инкапсулируется информация от приложения — это означает, что к данным 5-го уровня добавляется заголовок со служебной информацией 4-го уровня. Его данные упаковываются (инкапсулируются) в IP-пакеты, где в заголовке указан IP-адрес получателя (192.168.1.118) и IP-адрес отправителя — логические адреса. А затем всё это инкапсулируется в Ethernet-кадры с MAC-адресами отправителя и получателя — физическими адресами. При формировании кадров в заголовке в качестве MAC-адреса источника (source) подставляется адрес вашего компьютера, а адресом получателя (destinantion) будет MAC-адрес компьютера — владельца IP-адреса 192.168.1.118 (о механизмах такого преобразования поговорим в следующий раз). То есть если бы вы смогли сфотографировать кадр, то вы бы увидели все эти данные в разрезе, так сказать.

На самом деле, нет ничего проще: запускаете какой-нибудь анализатор трафика, например, замечательный Wireshark и Ethereal, на своём компьютере и пингуете другой хост. Вот такую картину вы сможете лицезреть: Dump Вы это можете сделать прямо сейчас, читая эти строки, просто установив и запустив анализатор трафика.

В последнюю очередь сетевая карта вашего компьютера дробит фрейм на биты и отправляет их в кабель. Коммутатор из поступивших битов собирает первоначальный кадр Далее начинается интеллектуальный труд: из заголовка извлекается адрес получателя, перетрясается таблица MAC-адресов на предмет совпадения и, как только оное найдено, кадр без изменений отправляется в указанный порт. Если же адреса пока ещё нет или кадр пришёл широковещательный, то он направляется на все порты, кроме того, откуда пришёл.

Если адреса отправителя в таблице до сих пор не было, то в этот момент коммутатор добавит его.

Естественно, кадр опять передаётся в виде битов — это закон электроники, и вы должны просто всегда иметь это в виду. Конечный хост, получив поток битов, собирает из них кадр, ещё только предполагая, что он предназначается ему. Далее он сравнивает MAC-адрес получателя со своим и, если они совпадают, то заголовок второго уровня отбрасывается, а IP-данные передаются на обработку вышестоящему протоколу. Если адреса не совпадают, то кадр отбрасывается вместе со всем содержимым. Далее сравниваются IP-адрес получателя и этого устройства. Если совпадают, то заголовок сетевого уровня отбрасывается, и данные передаются транспортному уровню (ICMP) Конечный хост обработал ICMP-запрос (echo-request) и готов послать ICMP-ответ (echo-reply) вашему компьютеру с адресом 192.168.1.131 и далее пункты 1-3 повторяются уже для нового кадра

То, о чём мы писали до сих пор — это принцип работы любого коммутатора. Так делают даже простые длинки за 300 рублей.

VLAN

Ну а теперь, давайте, коллеги, финальный рывок: добавим сюда ещё VLAN’ы.

С ними работают уже только управляемые коммутаторы.

Напомним, что вланы нужны для разделения сетей. Соответственно появляется некий идентификатор, которым маркируется трафик разных подсетей на коммутаторе.

Говоря о VLAN’ах, часто используют заклинание 802.1q. Это и есть стандарт, описывающий как именно кадр маркируется/тегируется. Пугаться такого шифра не стоит. Так же, например, Wi-Fi описывается стандартом 802.11n, а протокол аутентификации — 802.1x. Нам с этим предстоит столкнуться в будущем, поэтому отложите это в своей энергонезависимой памяти.

Что же именно происходит на кухне коммутации?

Внутрь фрейма после Source MAC-адреса добавляется ещё одно поле, очень грубо говоря, содержащее номер VLAN’а. Длина, выделенная для номера влана равна 12 битам, это означает, что максимальное число вланов 4096. Мы хотим обратить внимание молодых инженеров на такие подробности. Дело в том, что мы в своём цикле в силу объективных причин, не можем обо всём рассказать, но такие вопросы, во-первых, часто задают на собеседованиях, во-вторых, это просто надо знать.

Кадр Ethernet с полем 802.1q Кадры первого влана обычно не тегируются — он является родным вланом (native vlan).

Каждый коммутатор принимает теперь решение на основе этой метки-тега (или его отсутствия).

В таблицу МАС-адресов добавляется ещё столбец с номером VLAN’а и при поиске пары MAC-адрес/порт теперь будет сравниваться тег кадра с номером VLAN’а в таблице.

Существует два типа портов:

1. Access port — порт доступа — к нему подключаются, как правило, конечные узлы. Трафик между этим портом и устройством нетегированный. За каждым access-портом закреплён определённый VLAN, иногда этот параметр называют PVID. Весь трафик, приходящий на этот порт от конечного устройства, получает метку этого влана, а исходящий уходит без метки.

2. Trunk port. У этого порта два основных применения — линия между двумя коммутаторами или от коммутатора к маршрутизатору. Внутри такой линии, называемой в народе, что логично, транком, передаётся трафик нескольких вланов. Разумеется, тут трафик уже идёт с тегами, чтобы принимающая сторона могла отличить кадр, который идёт в бухгалтерию, от кадра, предназначенного для ИТ-отдела. За транковым портом закрепляется целый диапазон вланов.

Кроме того, существует вышеупомянутый native vlan. Трафик этого влана не тегируется даже в транке, по умолчанию это 1-й влан и по умолчанию он разрешён. Вы можете переопределить эти параметры.

Нужен он для совместимости с устройствами, незнакомыми с инкапсуляцией 802.1q. Например, вам нужно через Wi-Fi мост передать 3 влана, и один из них является вланом управления. Если Wi-Fi-модули не понимают стандарт 802.1q, то управлять ими вы сможете, только если этот влан настроите, как native vlan с обеих сторон.

Что происходит в сети с вланами?

  1. Итак, от вашего компьютера с IP-адресом, например, 192.168.1.131 отправляется пакет другому компьютеру в вашей же сети. Этот пакет инкапсулируется в кадр, и пока никто ничего не знает о вланах, поэтому кадр уходит, как есть, на ближайший коммутатор.
  2. На коммутаторе этот порт отмечен, как член, например, 2-го VLAN’а командой
    Switch0#interface fa0/1
    Switch0(config)#description “I am using simple frames”
    Switch0(config-if)#switchport mode access
    Switch0(config-if)#switchport access vlan 2
    

    Это означает, что любой кадр, пришедший на этот интерфейс, автоматический тегируется: на него вешается ленточка с номером VLAN’а. В данном случае с номером 2.

    Далее коммутатор ищет в своей таблице MAC-адресов среди портов, принадлежащих 2-му влану, порт, к которому подключено устройство с MAC-адресом получателя.

  3. Если получатель подключен к такому же access-порту, то ленточка с кадра отвязывается, и кадр отправляется в этот самый порт таким, каким он был изначально. То есть получателю также нет необходимости знать о существовании вланов.
  4. Если же искомый порт, является транковым, то ленточка на нём остаётся.
    Switch(config)#interface fa0/2
    Switch(config-if)#description “I am using tagged frames”
    Switch(config-if)#switchport mode trunk
    
  5. Попробуем провести аналогию с реальными миром. Вы с другом, например, пакеты-туристы и летите отдыхать дикарями самолётом авиалиний Ethernet Airlines. Но по дороге вы поссорились, и потому, когда в аэропорту назначения, вас спрашивают в какую гостиницу вас везти, вы отвечаете “Рога”, а ваш товарищ говорит “Копыта”. И сразу после этого вас инкапсулируют в разные кадры-машины: вас в такси с тегом “Таксопарк “На рогах”, а вашего товарища с его грузом в КамАЗ с тегом “Транспортная компания “В копыто”. Теперь вам нельзя на автобусные полосы, а вашему другу под знаки, запрещающие проезд грузовиков.

    Так вот две гостиницы — это МАС-адреса назначения, а ограничения по маршруту — порты других вланов.

    Петляя, по улочкам, вам, как IP-пакету не о чем беспокоиться — кадр-автомобиль доставит вас до места назначения, и, грубо говоря, в зависимости от тега на каждом перекрёстке будет приниматься решение, как ехать дальше.

    FAQ:

    Q: Что произойдёт, если тегированный кадр прилетит на access-порт?

    A: Он будет отброшен.

    Q: Что произойдёт, если нетегированный кадр прилетит на trunk-порт?

    A: Он будет помещён в Native VLAN. По умолчанию им является 1-й VLAN. Но вы можете поменять его командой switchport trunk native vlan 2

    В этом случае все кадры, помеченные 2-м вланом будут уходить в этот порт нетегироваными, а нетегированные кадры, приходящий на этот интерфейс, помечаться 2-м вланом. Кадры с тегами других вланов останутся неизменными, проходя, через такой порт.

    Q: Можно ли конечным узлам (компьютерам, ноутбукам, планшетам, телефонам) отправлять тегированные кадры и соответственно подключать их к транковым портам?

    A: Да, можно. Если сетевая карта и программное обеспечение поддерживает стандарт 802.1q, то узел может работать с тегированными кадрами.

    Q: Что будет с тегированными кадрами, если они попадут на обычный неуправляемый коммутатор или другое устройство, не понимающее стандарт 802.1q?

    A: Скорее всего, свич его отбросит из-за увеличенного размера кадра. Зависит от разных факторов: производитель, софт (прошивка), тип форвардинга (cut-through, store-and-forward).

    Практика. Настройка сети “Лифт ми Ап”

    Ну и наконец-то обратимся к настройке. Вива ля практис!

    Будет у нас такая сеть: Вспомним, как мы её планировали:

    • VLAN
    • IP-план
    • план коммутации

    Советуем на дополнительной вкладке отрыть их, потому что мы будем обращаться туда периодически.

    Мы могли бы сейчас броситься сразу настраивать всё по порядку: полностью одно устройство, потом другое. Но так не будет, пожалуй, понимания значения процессов.

    Порты доступа (access)

    Поэтому начнём с простого: настроим два порта на msk-arbat-asw3 как access для влана 101 (ПТО):

    msk-arbat-asw3(config)#interface FastEthernet0/1
    msk-arbat-asw3(config-if)#description PTO
    msk-arbat-asw3(config-if)#switchport mode access
    msk-arbat-asw3(config-if)#switchport access vlan 101
    % Access VLAN does not exist. Creating vlan 101
    
    msk-arbat-asw3(config)#interface FastEthernet0/2
    msk-arbat-asw3(config-if)#description PTO
    msk-arbat-asw3(config-if)#switchport access vlan 101
    msk-arbat-asw3(config-if)switchport mode access
    

    Все настройки делаем сразу в соответствии с планом.

    Заметили, что коммутатор ругается на отсутствие влана? Тут надо быть аккуратным. Некоторые версии ПО работают несколько нелогично.

    Даже если вы его не создадите, то настройки применятся и при отладке на первый взгляд всё будет нормально, но связи не будет. Причём коварство заключается в том, что фраза Creating vlan 101 вовсе не означает, что этот самый влан будет создан. Поэтому отправляемся в режим глобальной конфигурации и создаём его (а заодно и все другие вланы, нужные на этом коммутаторе):

    msk-arbat-asw3>enable

    msk-arbat-asw3#configure terminal

    msk-arbat-asw3(config)#vlan 2

    msk-arbat-asw3(config-vlan)#name Management

    msk-arbat-asw3(config-vlan)#vlan 3

    msk-arbat-asw3(config-vlan)#name Servers

    msk-arbat-asw3(config-vlan)#vlan 101

    msk-arbat-asw3(config-vlan)#name PTO

    msk-arbat-asw3(config-vlan)#vlan 102

    msk-arbat-asw3(config-vlan)#name FEO

    msk-arbat-asw3(config-vlan)#vlan 103

    msk-arbat-asw3(config-vlan)#name Accounting

    msk-arbat-asw3(config-vlan)#vlan 104

    msk-arbat-asw3(config-vlan)#name Other

    Теперь подключите компьютеры к портам FE0/1 и FE0/2, настройте на них адреса 172.16.3.2 и 172.16.3.3 с маской подсети 255.255.255.0 и шлюзом 172.16.3.1 и проверьте связь: После того, как это получилось, настроим порт FE0/16, как access, для 104-го влана (сеть других пользователей):

    msk-arbat-asw3(config)#interface FastEthernet0/16
    msk-arbat-asw3(config-if)#description Other
    msk-arbat-asw3(config-if)#switchport access vlan 104
    msk-arbat-asw3(config-if)switchport mode access
    

    Подключите к нему компьютер и настройте адрес из той же подсети, что ПТО, например, 172.16.3.5 с маской 255.255.255.0.

    Если вы попытаетесь теперь пропинговать этот адрес, то у вас не должно этого получиться — компьютеры находятся в разных вланах и изолированы друг от друга:

    То есть ещё раз, что происходит? От вашего компьютера приходит на 1-й порт широковещательный запрос: “Кто такой 172.16.3.5”, потому что сам компьютер пока не знает MAC-адреса получателя. Кадр, который несёт в себе этот запрос помечается, как принадлежащий 101-му VLAN’у в соответствии с портом, на который он поступил. И далее, чтобы узнать где-же находится компьютер 172.16.3.5, кадр рассылается на все порты-члены 101-го VLAN’а. А в их числе нет порта FE0/16, поэтому, естественно, этот адрес считается недостижимым, что приводит к ответу “Request timed out”.

    Внимание! Если в этом VLAN’е все-таки окажется устройство с таким IP, то это не будет тем же самым ноутбуком Other и при этом они не буду конфликтовать друг с другом, поскольку логически находятся в разных широковещательных доменах.

    Транковые порты (trunk)

    Итак, врата для вас открылись, теперь вам предстоит создать коридор — транк между тремя коммутаторами: msk-arbat-asw3, msk-arbat-dsw1 и msk-rubl-asw1.

    Uplink портом на msk-arbat-asw3 является GE1/1. Ну а поскольку нам всё равно все вланы нужно будет пробросить, то сделаем это сейчас, то есть помимо 101 и 104 пропишем 2, 102 и 103:

    msk-arbat-asw3(config)#interface GigabitEthernet1/1
    msk-arbat-asw3(config-if)#description msk-arbat-dsw1
    msk-arbat-asw3(config-if)#switchport trunk allowed vlan 2,101-104
    msk-arbat-asw3(config-if)#switchport mode trunk
    

    На самом деле на интерфейсе достаточно команды #switchport mode trunk, чтобы у вас через этот порт уже пошли тегированные кадры всех вланов, потому что по умолчанию транковый порт пропускает всё. Но мы же инженеры, а не эникейщики. Где это видано, чтобы безлимит творился за нашей спиной? Поэтому через нас проходит только то, что мы разрешаем. Как только вы дали команду switchport trunk allowed vlan 101, через порт не пройдёт кадр никаких вланов, кроме 101 (VLAN 1 ходит по умолчанию и нетегированным).

    Внимание! Если вы хотите в транковый порт добавить ещё один влан, то вам необходимо использовать следующий синтаксис команды:

    msk-arbat-dsw1(config-if)#switchport trunk allowed vlan add 105
    

    В противном случае (написав switchport trunk allowed vlan 105) вы сотрёте все старые разрешения и добавите новый 105-й влан. И хорошо ещё, если при этом вы не потеряете доступ на этот коммутататор. Но за простой связи всё равно вы получите по пятое число)

    Переходим к msk-arbat-dsw1. На нём необходимо создать все вланы и настроить два порта:

    GE1/2 в сторону msk-arbat-asw3

    FE0/1 в сторону msk-rubl-asw1:

    msk-arbat-dsw1(config)#interface GigabitEthernet1/2
    msk-arbat-dsw1(config-if)#description msk-arbat-asw3
    msk-arbat-dsw1(config-if)#switchport trunk allowed vlan 2,101-104
    msk-arbat-dsw1(config-if)#switchport mode trunk
    msk-arbat-dsw1(config)#interface FastEthernet0/1
    msk-arbat-dsw1(config-if)#description msk-rubl-asw1
    msk-arbat-dsw1(config-if)#switchport trunk allowed vlan 2,101,104
    msk-arbat-dsw1(config-if)#switchport mode trunk
    

    Ну и настроим, конечно, порты на msk-rubl-asw1:

    msk-rubl-asw1(config)interface FastEthernet0/24
    msk-rubl-asw1(config-if)switchport trunk allowed vlan 2,101,104
    msk-rubl-asw1(config-if)switchport mode trunk
    msk-rubl-asw1(config)#int FastEthernet0/1
    msk-rubl-asw1(config-if)#description PTO
    msk-rubl-asw1(config-if)#switchport mode access 
    msk-rubl-asw1(config-if)#switchport access vlan 101
    % Access VLAN does not exist. Creating vlan 101
    

    Снова нужно настроить вланы. И заметьте, при настройке транковых портов никаких сообщений нет.

    Если вы всё настроили правильно (в чём не приходится сомневаться), то с первого порта msk-rubl-asw1 вы увидите компьютеры ПТО, подключённые к msk-arbat-asw3.

    Для уверенности проверим ещё и 104-й влан. Через транк мы его сюда уже доставили.

    msk-rubl-asw1(config)#interface FastEthernet 0/16
    msk-rubl-asw1(config-if)#switchport mode access 
    msk-rubl-asw1(config-if)#switchport access vlan 104
    

    Подключаем компьютер к 16-му порт и настраиваем на нём IP-адрес 172.16.6.3 с маской 255.255.255.0 и шлюзом 172.16.6.1. А IP-адрес ноутбука на арбате поменяйте на 172.16.6.2 с теми же маской и шлюзом.

    Сеть управления

    Настроим IP-адрес для управления.

    В наших лабах они не понадобятся, потому что мы настраиваем устройство через окно РТ. А вот в реальной жизни это вам жизненно необходимо.

    Для этого мы создаём виртуальный интерфейс и указываем номер интересующего нас влана. А далее работаем с ним, как с самым обычным физическим интерфейсом.

    msk-arbat-dsw1:

    msk-arbat-dsw1(config)#interface vlan 2
    msk-arbat-dsw1(config-if)#description Management
    msk-arbat-dsw1(config-if)#ip address 172.16.1.2 255.255.255.0
    

    msk-arbat-asw3:

    msk-arbat-asw3(config)#vlan 2
    msk-arbat-asw3(config)#interface vlan 2
    msk-arbat-asw3(config-if)#description Management
    msk-arbat-asw3(config-if)#ip address 172.16.1.5 255.255.255.0
    

    С msk-arbat-asw3 запускаем пинг до msk-arbat-dsw1:

    msk-arbat-asw3#ping 172.16.1.2
    
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 172.16.1.2, timeout is 2 seconds:
    ..!!!
    Success rate is 60 percent (3/5), round-trip min/avg/max = 4/4/4 ms
    

    Первые пару пакетов могут потеряться на работу протокола ARP: определение соответствия IP-адрес — MAC-адрес. При этом MAC-адрес, порт и номер влана добавляются в таблицу коммутатора.

    Самостоятельно настройте IP-адреса сети управления на остальных коммутаторах и проверьте их доступность

    Собственно вот и вся магия. Зачастую к подобного рода действиям и сводится вся настройка, если вы не работаете в провайдере. С другой стороны, если вы работаете в провайдере, то, наверняка, такие вещи вам объяснять не нужно.

    Если желаете знать больше об этом, читайте: VTP, QinQ, зарезервированные номера VLAN

    Ещё один небольшой инструмент, который может немного увеличить удобство работы: banner. Это объявление, которое циска покажет перед авторизацией на устройство.

    Switch(config)#banner motd q
    Enter TEXT message. End with the character 'q'.
    It is just banner.
    q
    
    Switch(config)#
    

    После motd вы указываете символ, который будет служить сигналом о том, что строка закончена. В это примере мы поставили “q”.

    Относительно содержания баннера. Существует такая легенда: хакер вломился в сеть, что-то там поломалукрал, его поймали, а на суде оправдали и отпустили. Почему? А потому, что на пограничном роутере(между интернет и внутренней сетью), в banner было написано слово “Welcome”. “Ну раз просят, я и зашел”)). Поэтому считается хорошей практикой в баннере писать что-то вроде “Доступ запрещен!”.

    Для упорядочивания знаний по пунктам разберём, что вам необходимо сделать:

    1. Настроить hostname. Это поможет вам в будущем на реальной сети быстро сориентироваться, где вы находитесь.
      Switch(config)#hostname HOSTNAME
      
    2. Создать все вланы и дать им название
      Switch(config)#vlan VLAN-NUMBER
      Switch(config-vlan)#name NAME-OF-VLAN
      
    3. Настроить все access-порты и задать им имя
      Switch(config-if)#description DESCRIPTION-OF-INTERFACE
      Switch(config-if)#switchport mode access
      Switch(config-if)#switchport access vlan VLAN-NUMBER
      

      Удобно иногда бывает настраивать интерфейсы пачками:

      msk-arbat-asw3(config)#interface range fastEthernet 0/6 — 10
      msk-arbat-asw3(config-if-range)#description FEO
      msk-arbat-asw3(config-if-range)#switchport mode access 
      msk-arbat-asw3(config-if-range)#switchport access vlan 102
      
    4. Настроить все транковые порты и задать им имя:
      Switch(config-if)#description DESCRIPTION-OF-INTERFACE
      Switch(config-if)#switchport mode trunk
      Switch(config-if)#switchport trunk allowed vlan VLAN-NUMBERS
      
    5. Не забывайте сохраняться:
      Switch#copy running-config startup-config 
      

    Итого: чего мы добились? Все устройства в одной подсети видят друг друга, но не видят устройства из другой. В следующем выпуске разбираемся с этим вопросом, а также обратимся к статической маршрутизации и L3-коммутаторам.

    В общем-то на этом данный урок можно закончить. В видео вы сможете ещё раз увидеть, как настраиваются вланы. В качестве домашнего задания настройте вланы на коммутаторах для серверов.

    Здесь вы можете скачать конфигурацию всех устройств:

    liftmeup_configuration.zip.

    P.S.

    Важное дополнение: в предыдущей части, говоря о native vlan мы вас немного дезинформировали. На оборудовании cisco такая схема работы невозможна.

    Напомним, что нами предлагалось передавать на коммутатор msk-rubl-asw1 нетегированными кадры 101-го влана и принимать их там в первый.

    Дело в том, что, как мы уже упомянули выше, с точки зрения cisco с обеих сторон на коммутаторах должен быть настроен одинаковый номер влана, иначе начинаются проблемы с протоколом STP и в логах можно увидеть предупреждения о неверной настройке. Поэтому 101-й влан мы передаём на устройство обычным образом, кадры будут тегированными и соответственно, 101-й влан тоже необходимо создавать на msk-rubl-asw1.

    Ещё раз хотим заметить, что при всём желании мы не сможем охватить все нюансы и тонкости, поэтому и не ставим перед собой такой задачи. Такие вещи, как принцип построения MAC-адреса, значения поля Ether Type или для чего нужен CRC в конце кадра, вам предстоит изучить самостоятельно.

    Благодарности

    Спасибо соавтору этого цикла, Максиму aka gluck.

    За предоставление дополнительных материалов хочу поблагодарить Наташу Самойленко.

    Читатели, не имеющие учётки на хабре, но имеющие вопросы, как и прежде, могут концентрировать их в ЖЖ.


    Автор
    eucariot — Марат Сибгатулин (inst, tg, in)


    Оставайтесь на связи

    Пишите нам: info@linkmeup.ru

    Канал в телеграме: t.me/linkmeup_podcast

    Канал на youtube: youtube.com/c/linkmeup-podcast

    Подкаст доступен в iTunes, Google Подкастах, Яндекс Музыке, Castbox

    Сообщество в вк: vk.com/linkmeup

    Группа в фб: www.facebook.com/linkmeup.sdsm

    Добавить RSS в подкаст-плеер.

    Пообщаться в общем чате в тг: https://t.me/linkmeup_chat

    Поддержите проект:

like

18
views
26671
message
118

118 коментариев

Ещё статьи

Анонс подкаста. Выпуск 36

Подкаст Linkmeup №36. 19-го февраля в 19:00 МСК. Гость: Антон Литвинов — начальник отдела ТП в ритейле Тема: сети в интерпрайзе. А если точнее: — Какие ветки развития бывают у …

like

0

5439


18

14 февраля 2016

Анонс подкаста linkmeup_sysadmins. Выпуск 14. Докер, Кубер два апдейта\ 23.07 20:00 Мск

Docker и Kubernetes, ну куда же без них. Не прошло и десятилетки, мы добрались до выпуска о Docker и Kubernetes. Хотите послушать, о чём нам расскажут гости Андрей и Михаил? …

Big Monitoring Meetup#3

18 дней осталось до того, как в третий раз случится Big Monitoring Meetup. Уже есть и опубликована полная программа мероприятия, пройдёт действо в Selectel, а денег за вход не возьмут. …

vlan-beginners-000.pngВиртуализацией сегодня уже никого не удивить. Эта технология прочно вошла в нашу жизнь и помогает более эффективно использовать имеющиеся ресурсы, а также обеспечивает достаточную гибкость в изменении существующей конфигурации, позволяя перераспределять ресурсы буквально налету. Не обошла виртуализация и локальные сети. Технология VLAN (Virtual Local Area Network) позволяет создавать и гибко конфигурировать виртуальные сети поверх физической. Это позволяет реализовывать достаточно сложные сетевые конфигурации без покупки дополнительного оборудования и прокладки дополнительных кабелей.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Прежде чем продолжить сделаем краткое отступление о работе локальных сетей. В данном контексте мы будем говорить об Ethernet-сетях описанных стандартом IEEE 802.3, куда входят всем привычные проводные сети на основе витой пары. Основой такой сети является коммутатор (свич, switch), который работает на втором уровне сетевой модели OSI (L2).

Второй уровень, он же канальный, работает в пределах одного сегмента сети и использует для адресации уникальные физические адреса оборудования – MAC-адреса. Передаваемая между узлами информация разделяется на специальные фрагменты – Ethernet-кадры (фреймы, frame), которые не следует путать с IP-пакетами, которые находятся на более высоком уровне модели OSI и передаются внутри Ethernet-кадров. Таким образом коммутатор ничего не знает об IP-адресах и никак эту информацию в работе не учитывает.

Коммутатор анализирует заголовки каждого входящего кадра и заносит соответствие MAC-адреса источника в специальную MAC-таблицу, после чего кадр, адресованный этому узлу, будет направляться сразу на определенный порт, если МАС-адрес получателя неизвестен, то кадр отправляется на все порты устройства. После получения ответа коммутатор привяжет MAC-адрес к порту и будет отправлять кадры только через него.

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

Коммутатор позволяет разделять домен коллизий на отдельные домены по числу портов, таким образом каждый порт коммутатора – это отдельный домен коллизий и в каждом из них данные могут передаваться одновременно, не мешая друг другу.

Совокупность доменов коллизии, соединенных на втором уровне, является широковещательным доменом, если говорить проще, то широковещательный домен – это совокупность всех портов коммутаторов соединенных в один сегмент.

Как мы уже говорили выше, к широковещанию прибегает сам коммутатор, когда получает кадр MAC-адрес которого отсутствует в MAC-таблице, а также узлы сети, отправляя кадры на адрес FF:FF:FF:FF:FF:FF, такие кадры будут доставлены всем узлам сети в широковещательном сегменте.

А теперь вернемся немного назад, к доменам коллизий и вспомним о том, что в нем может передаваться только один кадр одновременно. Появление широковещательных кадров снижает производительность сети, так как они доставляются и тем, кому надо и тем, кому не надо. Делая невозможным в это время передачу целевой информации. Кроме того, записи в MAC-таблице имеют определенное время жизни, по окончании которого они удаляются, что снова приводит к необходимости рассылки кадра на все порты устройства.

Чем больше в сети узлов, тем острее стоит проблема широковещания, поэтому широковещательные домены крупных сетей принято разделять. Это уменьшает количество паразитного трафика и увеличивает производительность, а также повышает безопасность, так как ограничивает передачу кадров только своим широковещательным доменом.

Как это можно сделать наиболее простым образом? Установить вместо одно коммутатора два и подключить каждый сегмент к своему коммутатору. Но это требует покупки нового оборудования и, возможно, прокладки новых кабельных сетей, поэтому нам на помощь приходит технология VLAN.

Данная технология описана стандартом 802.1Q и предусматривает добавление к заголовкам кадра дополнительного поля, которое содержит в том числе определенную метку (тег) с номером виртуальной сети – VLAN ID, всего можно создать 4094 сети, для большинства применений этого достаточно.

Давайте рассмотрим, как работает коммутатор с виртуальными сетями. В нашем примере мы возьмем условный 8-портовый коммутатор и настроим на нем три порта на работу с одним VLAN, а еще три порта с другим.

vlan-beginners-001.png

Каждый VLAN обозначается собственным номером, который является идентификатором виртуально сети. Порты, которые не настроены ни для какого VLAN считаются принадлежащими Native VLAN, по умолчанию он обычно имеет номер 1 (может отличаться у разных производителей), поэтому не следует использовать этот номер для собственных сетей. Порты, настроенные нами для работы с VLAN, образуют как-бы два отдельных виртуальных коммутатора, передавая кадры только между собой. Каким образом это достигается?

Как мы уже говорили выше, каждый кадр 802.1Q содержит дополнительное поле, в котором содержится тег – номер виртуальной сети. При входе Ethernet-кадра в коммутатор с поддержкой VLAN (такой трафик называется входящим – ingres) в его состав добавляется поле с тегом. При выходе из коммутатора (исходящий трафик – egress), данное поле из кадра удаляется, т.е. тег снимается. Все кадры внутри коммутатора являются тегированными. Если трафик пришел на порт, не принадлежащий ни одному VLAN, он получает тег с номером Native VLAN.

vlan-beginners-002.png

В порт, принадлежащий определенному VLAN, могут быть отправлены только пакеты с тегом, принадлежащим этому VLAN, остальные будут отброшены. Фактически мы только что разделили единый широковещательный домен на несколько меньших и трафик из одного VLAN никогда не попадет в другой, даже если эти подсети будут использовать один диапазон IP. Для конечных узлов сети такой коммутатор нечем ни отличается от обычного. Вся обработка виртуальных сетей происходит внутри.

Такие порты коммутатора называются портами доступа или нетегированными портами (access port, untagged). Обычно они используются для подключения конечных узлов сети, которые не должны ничего знать об иных VLAN и работать в собственном сегменте.

А теперь рассмотрим другую картину, у нас есть два коммутатора, каждый из которых должен работать с обоими VLAN, при этом соединены они единственным кабелем и проложить дополнительный кабель невозможно. В этом случае мы можем настроить один или несколько портов на передачу тегированного трафика, при этом можно передавать как трафик любых VLAN, так и только определенных. Такой порт называется магистральным (тегированным) или транком (trunk port, tagged).

vlan-beginners-003.pngМагистральные порты используются для соединения сетевого оборудования между собой, к конечным узлам сети тегированный трафик обычно не доставляется. Но это не является догмой, в ряде случаев тегированный трафик удобнее доставить именно конечному узлу, скажем, гипервизору, если он содержит виртуальные машины, принадлежащие разным участкам сети.

Так как кадр 802.1Q отличается от обычного Ehternet-кадра, то работать с ним могут только устройства с поддержкой данного протокола. Если на пути тегированного трафика попадется обычный коммутатор, то такие кадры будут им отброшены. В случае доставки 802.1Q кадров конечному узлу сети такая поддержка потребуется от сетевой карты устройства. Если на магистральный порт приходит нетегированный трафик, то ему обычно назначается Native VLAN.

Кроме указанных двух портов доступа существует еще одна разновидность – гибридный порт (hybrid port), его реализация и наименование у разных производителей сетевого оборудования может быть разным, но суть от этого не меняется. Такой порт передает как тегированный, так и нетегированный трафик. Для этого в его настройках указывается Default VLAN ID и для всех кадров этого VLAN данный порт работает как порт доступа, т.е для исходящего трафика указанного VLAN тег снимается, а входящему кадру без тега, наоборот, присваивается. Трафик остальных VLAN передается с тегами.

Для чего это нужно? Наиболее частое применение – это IP-телефоны со встроенным коммутатором, которые умеют работать с тегированным трафиком, но не умеют передавать его дальше. В этом случае в качестве VLAN ID по умолчанию устанавливается номер VLAN в котором расположены пользовательские ПК, а для телефона на этот же порт добавляется тегированный трафик VLAN для телефонии.

vlan-beginners-004.png

Все это время мы говорили только о VLAN, не поднимая вопроса: как попасть из одного VLAN в другой. Если продолжать рассматривать канальный уровень – то никак. Каждый VLAN мы можем рассматривать как отдельный физический коммутатор, а магистральный канал – как жгут кабелей между ними. Только все это сделано виртуально, на более высоком уровне абстракции, чем L1 – физический уровень, который как раз представлен кабелями и физическим оборудованием.

Если мы соединим два физических коммутатора кабелем – то получим расширение широковещательного домена на все порты этих устройств, а это совсем не то, что нам нужно. В тоже время сетевые устройства работают на более высоких уровнях модели ОSI, начиная с сетевого – L3. Здесь уже появляется понятие IP-адреса и IP-сетей. Если смотреть на VLAN с этого уровня, то они ничем не отличаются от физических сегментов сетей. А что мы делаем, когда нам нужно попасть из одной сети в другую? Ставим маршрутизатор.

Маршрутизатор или роутер – устройство, работающее на третьем уровне модели OSI и умеющее выполнять маршрутизацию трафика, т.е. поиск оптимального пути для доставки его получателю. И здесь мы говорим уже не о Ethernet-кадрах, а об IP-пакетах. Маршрутизация между VLAN называется межвлановой (межвланной) маршрутизацией (InterVLAN Routing), но, по сути, она ничем не отличается от обычной маршрутизации между IP-подсетями.

Для обеспечения связи между сетями в нашей схеме появляется новая сущность – маршрутизатор, как правило к нему от одного из коммутаторов идет магистральный канал (транк), содержащий все необходимые VLAN, эта схема называется роутер на палочке (леденец, Router-on-a-Stick).

vlan-beginners-005.pngКак работает эта схема? Допустим ПК из синей сети (VLAN ID 40), хочет обратиться к другому узлу синей сети. IP-адрес адресата ему известен, но для того, чтобы отправить кадр нужно знать физический адрес устройства. Для этого ПК источник делает широковещательный ARP-запрос, передавая в нем нужный ему IP-адрес, в ответ на него обладатель этого IP сообщит ему собственный MAC-адрес.

Все кадры, попадающие с порта доступа в коммутатор, получают тег с VLAN ID 40 и могут покинуть коммутатор только через порты, принадлежащие этому VLAN или транк. Таким образом любые широковещательные запросы не уйдут дальше своего VLAN. Получив ответ узел сети формирует кадр и отправляет его адресату. Далее в дело снова вступают коммутаторы, сверившись с MAC-таблицей они отправляют кадр в один из портов, который будет либо принадлежать своему VLAN, либо будет являться магистральным. В любом случае кадр будет доставлен по назначению без использования маршрутизатора, только через коммутаторы.

Совсем иное дело, если узел одного из VLAN хочет получить доступ к узлу другого VLAN. В нашем случае узел из красной сети (VLAN ID 30) хочет получить доступ к узлу синей сети (VLAN ID 40). Узел источник знает IP-адрес адресата и также знает, что этот адрес не принадлежит его сети. Поэтому он формирует IP-пакет на адрес основного шлюза сети (роутера), помещает его в Ethernet-кадр и отправляет на порт коммутатора. Коммутатор добавляет к кадру тег с VLAN ID 30 и доставляет его роутеру.

Роутер получает данный кадр, извлекает из него IP-пакет и анализирует заголовки. Обнаружив адрес назначения, он сверяется с таблицей маршрутизации и принимает решение куда отправить данный пакет дальше. После чего формируется новый Ethernet-кадр, который получает тег с новым VLAN ID сети-получателя в него помещается IP-пакет, и он отправляется по назначению.

Таким образом любой трафик внутри VLAN доставляется только с помощью коммутаторов, а трафик между VLAN всегда проходит через маршрутизатор, даже если узлы находятся в соседних физических портах коммутатора.

Говоря о межвлановой маршрутизации нельзя обойти вниманием такие устройства как L3 коммутаторы. Это устройства уровня L2 c некоторыми функциями L3, но, в отличие от маршрутизаторов, данные функции существенно ограничены и реализованы аппаратно. Этим достигается более высокое быстродействие, но пропадает гибкость применения. Как правило L3 коммутаторы предлагают только функции маршрутизации и не поддерживают технологии для выхода во внешнюю сеть (NAT) и не имеют брандмауэра. Но они позволяют быстро и эффективно осуществлять маршрутизацию между внутренними сегментами сети, в том числе и между VLAN.

Маршрутизаторы предлагают гораздо большее число функций, но многие из них реализуются программно и поэтому данный тип устройств имеет меньшую производительность, но гораздо более высокую гибкость применения и сетевые возможности.

При этом нельзя сказать, что какое-то из устройств хуже, каждое из них хорошо на своем месте. Если мы говорим о маршрутизации между внутренними сетями, в том числе и о межвлановой маршрутизации, то здесь предпочтительно использовать L3 коммутаторы с их высокой производительностью, а когда требуется выход во внешнюю сеть, то здесь нам потребуется именно маршрутизатор, с широкими сетевыми возможностями.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Virtual LANs give you the ability to sub-divide a LAN. Linux can accept VLAN tagged traffic and presents each VLAN ID as a different network interface (eg: eth0.100 for VLAN ID 100)

This article explains how to configure a VLAN using iproute2 and systemd-networkd or netctl.

Instant Configuration

Previously, Arch Linux used the vconfig command to setup VLANs. This command was superseded by the ip command. Make sure you have iproute2 installed.

In the following examples, let us assume the interface is eth0, the assigned name is eth0.100 and the vlan id is 100.

Create the VLAN device

Add the VLAN with the following command:

# ip link add link eth0 name eth0.100 type vlan id 100

Run ip link to confirm that it has been created.

This interface behaves like a normal interface. All traffic routed to it will go through the master interface (in this example, eth0) but with a VLAN tag. Only VLAN-aware devices can accept them if configured correctly, else the traffic is dropped.

Using a name like eth0.100 is just convention and not enforced; you can alternatively use eth0_100 or something descriptive like IPTV. To see the VLAN ID on an interface, in case you used an unconventional name:

# ip -d link show eth0.100

The -d flag shows full details of an interface:

# ip -d addr show
4: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
   link/ether 96:4a:9c:84:36:51 brd ff:ff:ff:ff:ff:ff promiscuity 0 
   vlan protocol 802.1Q id 100 <REORDER_HDR> 
   inet6 fe80::944a:9cff:fe84:3651/64 scope link 
      valid_lft forever preferred_lft forever

Add an IP

Now add an IPv4 address to the just created VLAN link, and activate the link:

# ip addr add 192.168.100.1/24 brd 192.168.100.255 dev eth0.100
# ip link set dev eth0.100 up

Turning down the device

To cleanly shut down the setting before you remove the link, you can do:

# ip link set dev eth0.100 down

Removing the device

Removing a VLAN interface is significantly less convoluted

# ip link delete eth0.100

Persistent Configuration

systemd-networkd

Single interface

Use the following number-prefixed configuration files (Remember the file contents are case sensitive and the number-prefix can be changed):

/etc/systemd/network/10-eth0.network
[Match]
Name=eth0

[Network]
DHCP=ipv4
;these are arbitrary names, but must match the *.netdev and *.network files
VLAN=eth0.100
VLAN=eth0.200
/etc/systemd/network/20-eth0.100.netdev
[NetDev]
Name=eth0.100
Kind=vlan

[VLAN]
Id=100
/etc/systemd/network/21-eth0.200.netdev
[NetDev]
Name=eth0.200
Kind=vlan

[VLAN]
Id=200

You will have to have associated .network files for each .netdev to handle addressing and routing. For example, to set the eth0.100 interface with a static IP and the eth0.200 interface with DHCP (but ignoring the supplied default route), use:

/etc/systemd/network/30-eth0.100.network
[Match]
Name=eth0.100

[Network]
DHCP=no

[Address]
Address=192.168.0.25/24
/etc/systemd/network/31-eth0.200.network
[Match]
Name=eth0.200

[Network]
DHCP=yes

[DHCP]
UseRoutes=false

Then enable systemd-networkd.service. See systemd-networkd for details.

Single interface with multiple VLANs each with its own gateway

Each vlan gets its own routing table and a RoutingPolicyRule that specifies which source ip addresses this routing applies to.

/etc/systemd/network/10-eth0.network
[Match]
Name=eth0

[Network]
VLAN=eth0.10
VLAN=eth0.11
DNS=192.168.100.101
DNS=192.168.100.102
/etc/systemd/network/20-eth0.10.netdev
[NetDev]
Name=eth0.10
Kind=vlan

[VLAN]
Id=10
/etc/systemd/network/30-eth0.10.network
[Match]
Name=eth0.10

[Network]
Address=192.168.1.14/24
Address=192.168.1.24/24

[Route]
Gateway=192.168.1.1
Table=10

[RoutingPolicyRule]
From=192.168.1.0/24
Table=10
/etc/systemd/network/21-eth0.11.netdev
[NetDev]
Name=eth0.11
Kind=vlan

[VLAN]
Id=11
/etc/systemd/network/31-eth0.11.network
[Match]
Name=eth0.11

[Network]
Address=192.168.100.54/24

[Route]
Gateway=192.168.100.1
Table=11

[RoutingPolicyRule]
From=192.168.100.0/24
Table=11
Checks
# ip rule
0:      from all lookup local
0:      from 192.168.1.0/24 lookup 10
0:      from 192.168.100.0/24 lookup 11
32766:  from all lookup main
32767:  from all lookup default

Use ip route list table. E.g.:

# ip route list table 10
default via 192.168.1.1 dev enp1.10 proto static
# ip route list table 11
default via 192.168.100.1 dev enp1.11 proto static

Bonded interface

Similar to above, you are just going to stack more of the concepts in place. You will want to ensure that you have got a bond set up in your switch and also make sure its a trunk with tagged vlans corresponding to what you create below. Convention would be to create a bond interface with the name bond0, however there is a known issue where the bonding module, when loaded, creates a bond device of the name bond0 which systemd then refuses to configure (as systemd tries to respectfully leave alone any device it did not create).

For the purposes of this write up, we are going to use bondname and you can make the choice yourself.

First, we create the bond device:

/etc/systemd/network/bondname.netdev
[NetDev]
Name=bondname
Kind=bond

[Bond]
Mode=802.3ad
LACPTransmitRate=fast

Now create a .network directive that references the vlans and interface carriers. In this case we will use the convention for a dual port fiber module:

/etc/systemd/network/bondname.network
[Match]
Name=bondname

[Network]
VLAN=vlan10
VLAN=vlan20
VLAN=vlan30
BindCarrier=enp3s0f0 enp3s0f1

We are using the vlan<number> naming convention here, you can use something else but realize that this is a named reference so you will have to have a corresponding set of files with the same name.

We will now set up the physical network interfaces:

/etc/systemd/network/enp3s0f0.network
[Match]
Name=enp3s0f0

[Network]
Bond=bondname
/etc/systemd/network/enp3s0f1.network
[Match]
Name=enp3s0f1

[Network]
Bond=bondname

At this time you could reboot, and likely should, because the bonded interface is created at boot time. Restarting systemd-networkd will consume changes from these files typically, but device creation seems to occur at startup.

We will now set up the VLANs. You should be aware that having multiple VLANs can result in a situation where your machine has multiple default routes, so you will need to specify a Destination directive in the network directives to ensure that only one VLAN is being used for a default route. In this case we will use the VLAN with an ID of 10 as our default route.

/etc/systemd/network/vlan10.netdev
[NetDev]
Name=vlan10
Kind=vlan

[VLAN]
Id=10

Now create the associated network directive to set an address:

/etc/systemd/network/vlan10.network
[Match]
Name=vlan10

[Network]
VLAN=vlan10

[Address]
Address=10.10.10.2/24

[Route]
Destination=0.0.0.0/0
Gateway=10.10.10.1

We will create a similar pair of files for the VLAN with an ID of 20:

/etc/systemd/network/vlan20.netdev
[NetDev]
Name=vlan20
Kind=vlan

[VLAN]
Id=20
/etc/systemd/network/vlan20.network
[Match]
Name=vlan20

[Network]
VLAN=vlan20

[Address]
Address=10.10.20.2/24

[Route]
Destination=10.10.20.0/24
Gateway=10.10.20.1

And again for the VLAN with an ID of 30:

/etc/systemd/network/vlan30.netdev
[NetDev]
Name=vlan30
Kind=vlan

[VLAN]
Id=30
/etc/systemd/network/vlan30.network
[Match]
Name=vlan30

[Network]
VLAN=vlan30

[Address]
Address=10.10.30.2/24

[Route]
Destination=10.10.30.0/24
Gateway=10.10.30.1

Note that the Destination on vlan10 is set to 0.0.0.0/0, which will match all outbound, becoming the default route.

netctl

You can use netctl for this purpose, see the self-explanatory example profiles in {{ic|/etc/netctl/examples/vlan-{dhcp,static} }}.

Setting bridge IP

Sometimes you might want to configure the bridge ip on which docker operates, for example when the default ip clashes with other ip addresses in the network. Docker has a straight forward way of setting the bip (bridge IP) via the /etc/docker/daemon.json. When this file does not exist yet you can create it.

/etc/docker/docker.json
{
    "bip": "<desired ip range>/24"
}

Troubleshooting

udev renames the virtual devices

An annoyance is that udev may try to rename virtual devices as they are added, thus ignoring the name configured for them (in this case eth0.100).

For instance, if the following commands are issued:

# ip link add link eth0 name eth0.100 type vlan id 100
# ip link show 

This could generate the following output:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
3: rename1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff

udev has ignored the configured virtual interface name eth0.100 and autonamed it rename1.

The solution is to edit /etc/udev/rules.d/network_persistent.rules and append DRIVERS==”?*” to the end of the physical interface’s configuration line.

For example, for the interface aa:bb:cc:dd:ee:ff (eth0):

/etc/udev/rules.d/network_persistent.rules
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0", DRIVERS=="?*"

A reboot should mean that VLANs configure correctly with the names assigned to them.

Добавить комментарий