Маршрутизация на L2: коммутация, VLAN и MAC-адресация. Практическое руководство | AdminWiki

Маршрутизация на L2: коммутация, VLAN и MAC-адресация. Практическое руководство

20 сентября 2026 12 мин. чтения

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

Граница между L2 и L3 проходит по адресу, который видит устройство. Коммутатор смотрит на MAC-адрес в заголовке кадра и работает внутри одного широковещательного домена. Маршрутизатор читает IP-адрес в заголовке пакета и передаёт трафик между подсетями, VLAN и внешними сетями. Пока трафик не покидает широковещательный домен, работает коммутация; как только нужен соседний сегмент или интернет, подключается маршрутизация и шлюз.

Дальше разобраны практические шаги: построение таблицы MAC-адресов, изоляция трафика через VLAN, настройка access- и trunk-портов, связка L2 с L3 через шлюз, диагностика петель, STP и агрегация каналов. Примеры даны в синтаксисе Cisco IOS: он удобен как эталон при разборе, а на оборудовании других вендоров отличаются команды, логика остаётся той же. Полную картину уровней полезно держать перед глазами вместе с разбором уровней маршрутизации от L2 до L7.

Коммутация и маршрутизация: в чем разница и где проходит граница

Коммутатор пересылает кадры внутри локальной сети, маршрутизатор принимает решение о следующем хопе по IP-адресу. Это два разных набора таблиц и два разных уровня ответственности.

ПризнакКоммутация (L2)Маршрутизация (L3)
АдресацияMAC-адресIP-адрес
Единица данныхКадрПакет
УстройствоКоммутаторМаршрутизатор, L3-коммутатор
Граница работыШироковещательный домен, то есть VLANIP-подсеть
Таблица решенийТаблица MAC-адресов (CAM)Таблица маршрутов
Типовая задачаПодключение хостов внутри сегментаСвязь сегментов и выход в интернет

Почему MAC-адрес не работает за пределами локальной сети

MAC-адрес занимает 48 бит и записывается шестью байтами в шестнадцатеричном виде: AA:BB:CC:DD:EE:FF или aabb.ccdd.eeff в нотации Cisco. Первые три байта отводятся под идентификатор производителя (OUI), остальные выдаёт сам производитель. Коммутатор использует этот адрес для доставки кадров внутри одного широковещательного домена и не умеет пересылать кадры между подсетями.

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

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

Как коммутатор строит таблицу MAC-адресов

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

  • Известный unicast: MAC-адрес получателя есть в таблице, кадр уходит только в этот порт.
  • Неизвестный unicast: записи нет, кадр флудится во все порты, кроме того, откуда пришёл.
  • Broadcast и multicast: кадр с адресом FF:FF:FF:FF:FF:FF или с групповым адресом отправляется во все порты домена, кроме исходного.
  • Фильтрация: когда MAC-адреса источника и получателя ведут в один и тот же порт, кадр отбрасывается.

Записи стареют: если устройство молчит дольше времени жизни (aging time), запись удаляется, и следующий кадр снова вызовет флудинг. В документации Cisco для коммутаторов Cisco 7600 команда mac-address-table aging-time задаёт время старения в секундах, отсчёт ведётся с последнего момента, когда коммутатор обнаружил MAC-адрес, а значение по умолчанию — 300 секунд. В CLI коммутаторов Cisco 220 Series параметр seconds той же команды определяет время в секундах, в течение которого запись остаётся в таблице MAC-адресов; допустимый диапазон — от 10 до 1000000 секунд, значение 0 означает отсутствие старения. Посмотреть содержимое таблицы можно командой show mac address-table; точный набор поддерживаемых show-команд зависит от модели и версии ПО.

VLANMAC-адресТипПорт
10aaaa.aaaa.aaaaDYNAMICGi0/1
10bbbb.bbbb.bbbbDYNAMICGi0/2
100050.56aa.bbccSTATICGi0/24
20cccc.cccc.ccccDYNAMICGi0/3

Практический пример: как коммутатор пересылает кадр между двумя устройствами

  1. Компьютер A с MAC AA:AA:AA:AA:AA:AA подключён к порту Gi0/1, компьютер B с MAC BB:BB:BB:BB:BB:BB к порту Gi0/2. Таблица пуста.
  2. A отправляет кадр на B. Коммутатор принимает кадр на Gi0/1 и записывает: AA:AA:AA:AA:AA:AA в Gi0/1.
  3. MAC-адреса B в таблице ещё нет, поэтому кадр флудится во все порты, кроме Gi0/1. B получает кадр, остальные хосты его отбрасывают.
  4. B отвечает. Коммутатор принимает ответ на Gi0/2 и записывает: BB:BB:BB:BB:BB:BB в Gi0/2.
  5. Следующий кадр от A к B уходит только в Gi0/2, флудинга больше нет.
Switch# show mac address-table dynamic
Switch# show mac address-table interface gigabitEthernet0/1
Switch# clear mac address-table dynamic

Если один и тот же MAC-адрес начинает прыгать между портами, это признак петли или дублирования адреса в сегменте: разбирайтесь с топологией до того, как менять настройки VLAN.

VLAN: логическая изоляция трафика на канальном уровне

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

Передача нескольких VLAN по одному линку идёт через тегирование 802.1Q: в кадр добавляется 4-байтовый тег VLAN между полями MAC-адресов источника/назначения и Length/Type кадра Ethernet, чтобы идентифицировать VLAN, к которой принадлежит кадр. Поле VID занимает 12 бит и теоретически может принимать значения от 0 до 4095, но значения 0 и 4095 зарезервированы, поэтому практический доступный диапазон идентификаторов VLAN — от 1 до 4094. VID 0 зарезервирован для случая передачи только PCP/CoS без принадлежности к VLAN, VID 1 — VLAN по умолчанию, VID 4095 не конфигурируется. VLAN 1 обычно используется по умолчанию и служит native VLAN на trunk-портах, хотя для пользовательского трафика её лучше не применять.

Портов два типа. Access-порт принимает нетегированные кадры и помещает их в один VLAN. Trunk-порт передаёт трафик нескольких VLAN с тегами, а кадры native VLAN идут без тега: коммутатор, отправляющий трафик native VLAN, полностью опускает тег 802.1Q, а принимающий коммутатор помещает любой нетегированный кадр в свою настроенную native VLAN. Поэтому native VLAN должна совпадать на обоих концах транка. Межвлановую маршрутизацию на разных платформах, включая Linux и оборудование разных вендоров, разбирает руководство по маршрутизации между VLAN на Linux и сетевом оборудовании.

Настройка access-порта: пошаговый пример

Задача: подключить рабочую станцию в VLAN 10. Сначала создаём VLAN, затем переводим порт в режим access и назначаем ему VLAN.

Switch(config)# vlan 10
Switch(config-vlan)# name USERS
Switch(config-vlan)# exit
Switch(config)# interface gigabitEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
Switch(config-if)# spanning-tree portfast
Switch(config-if)# spanning-tree bpduguard enable
Switch(config-if)# end
Switch# show vlan brief
Switch# show interfaces gigabitEthernet0/1 switchport

Команда show interfaces switchport выводит административный и рабочий режимы порта, access VLAN и данные о native VLAN. Эти строки читают первыми, когда устройство не получает адрес от DHCP или попадает не в свою подсеть.

Настройка trunk-порта между коммутаторами

Switch(config)# interface gigabitEthernet0/24
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20,99
Switch(config-if)# switchport trunk native vlan 99
Switch(config-if)# end
Switch# show interfaces trunk

Команда switchport trunk encapsulation dot1q есть не на всех платформах Cisco IOS: часть моделей поддерживает только 802.1Q, и такая строка в конфигурации просто отсутствует. Настройки на обоих концах линка должны совпадать по списку разрешённых VLAN и по native VLAN. Рассинхрон приводит к тому, что часть VLAN молча теряет трафик, а в логах появляются сообщения о несовпадении native VLAN.

Связь L2 и L3: шлюзы и маршрутизация между VLAN

Хост отправляет трафик по MAC-адресу получателя, только если получатель в его подсети. Когда адресат в другой подсети, хост узнаёт MAC-адрес шлюза через ARP и отправляет кадр ему. Шлюз, маршрутизатор или L3-коммутатор с интерфейсом в этом VLAN, снимает кадр, читает IP-заголовок и передаёт пакет дальше. Здесь MAC-адресация заканчивается и начинается маршрутизация.

Router-on-a-stick: настройка суб-интерфейсов

Один физический интерфейс маршрутизатора делят на суб-интерфейсы по числу VLAN, а со стороны коммутатора этот линк настраивается как транк.

Router(config)# interface gigabitEthernet0/0
Router(config-if)# no shutdown
Router(config-if)# interface gigabitEthernet0/0.10
Router(config-subif)# encapsulation dot1Q 10
Router(config-subif)# ip address 192.168.10.1 255.255.255.0
Router(config-subif)# interface gigabitEthernet0/0.20
Router(config-subif)# encapsulation dot1Q 20
Router(config-subif)# ip address 192.168.20.1 255.255.255.0
Router(config-subif)# end
Router# show ip interface brief

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

SVI на L3-коммутаторе

Более производительный вариант: виртуальные интерфейсы VLAN (SVI) на самом коммутаторе. Для этого нужна поддержка L3 и включённая маршрутизация.

Switch(config)# ip routing
Switch(config)# interface vlan 10
Switch(config-if)# ip address 192.168.10.1 255.255.255.0
Switch(config-if)# no shutdown
Switch(config)# interface vlan 20
Switch(config-if)# ip address 192.168.20.1 255.255.255.0
Switch(config-if)# no shutdown
Switch(config)# interface gigabitEthernet0/24
Switch(config-if)# switchport mode trunk
Switch(config)# ip route 0.0.0.0 0.0.0.0 192.168.99.1
Switch# show ip route

IP-адрес SVI становится шлюзом по умолчанию для хостов соответствующего VLAN. Выбор между SVI и routed port зависит от топологии и платформы, подробности в практическом разборе SVI и routed ports на Cisco Catalyst. Как маршрутизатор выбирает путь и какие записи хранит таблица маршрутов, описано в материале о системе маршрутизации, её компонентах и принципах работы.

Для выхода в интернет нужен ещё один шаг: адреса из диапазонов 10.0.0.0/8 (10.0.0.0 — 10.255.255.255), 172.16.0.0/12 (172.16.0.0 — 172.31.255.255) и 192.168.0.0/16 (192.168.0.0 — 192.168.255.255) используются внутри локальных сетей и не маршрутизируются напрямую в интернете, поэтому на границе применяют NAT. Пакеты с внутренних IP-адресов или на них магистральные маршрутизаторы не пропускают, то есть внутрисетевые машины без дополнительных мер изолированы от интернета; NAT позволяет маршрутизатору, пропуская пакет из локальной сети, заменять адрес отправителя своим, а при получении ответа восстанавливать адресата по таблице открытых соединений. Разбор частных адресов и роли NAT объясняет, почему без этого шага выход во внешнюю сеть не работает. На домашнем оборудовании картина проще: у роутера Keenetic кабель провайдера подключается в порт 0 (WAN), а компьютер - в LAN-порт Ethernet-кабелем, как описано в инструкции по настройке роутера.

Типовые проблемы L2: петли, STP и агрегация каналов

Петля появляется, когда между коммутаторами есть несколько путей и ни один из них не заблокирован. Широковещательный кадр начинает ходить по кругу, копии множатся, и возникает широковещательный шторм: процессор коммутаторов загружается, таблица MAC-адресов теряет стабильность, связь пропадает. Признаки петли: мигание индикаторов портов в одном ритме, высокая загрузка CPU, ошибки на интерфейсах, записи о MAC flapping в логах.

Протокол STP (802.1D) строит дерево без петель: выбирается корневой мост (root bridge) с наименьшим bridge ID, где приоритет по умолчанию 32768 и добавляется MAC-адрес. Приоритет должен быть кратен 4096 (например, 32768, 28672, 24576), а при равных приоритетах корневым становится коммутатор с наименьшим MAC-адресом. Избыточные порты блокируются. Классический STP и PVST+ требуют времени на сходимость, поэтому на практике применяют и другие протоколы предотвращения петель: RSTP и MSTP. Состояние дерева проверяют командами show spanning-tree и show spanning-tree vlan 10.

Диагностика петель: признаки и команды

Switch# show spanning-tree
Switch# show spanning-tree vlan 10
Switch# show interfaces counters errors
Switch# show mac address-table | include aaaa.aaaa.aaaa
Switch# show logging | include FLAPPING

Полезный приём: найти MAC-адрес, который встречается на нескольких портах. Если один и тот же адрес появляется то на Gi0/1, то на Gi0/2, ищите избыточный линк или ошибку в топологии. Второй шаг: проверьте, не отключена ли защита от петель на портах. Команды spanning-tree bpdufilter enable и spanning-tree portfast, выставленные на транках и uplink-портах, ломают дерево. На access-портах связка portfast с bpduguard безопасна: при получении BPDU порт возвращается в обычный режим.

Настройка агрегации каналов (LACP) на примере Cisco

Switch(config)# interface range gigabitEthernet0/1-2
Switch(config-if-range)# channel-group 1 mode active
Switch(config-if-range)# interface port-channel 1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20
Switch(config-if)# end
Switch# show etherchannel summary
Switch# show etherchannel port-channel

Агрегация каналов (EtherChannel, LACP) складывает несколько физических линков в один логический: растёт пропускная способность и появляется резерв при отказе кабеля. LACP определён в IEEE 802.3ad и позволяет устройствам Cisco управлять каналами Ethernet между устройствами, соответствующими этому протоколу. На практике для работоспособности агрегации параметры портов должны быть согласованы; при расхождении настроек порты не объединяются, и в show etherchannel summary они видны со статусом suspended или с флагом independent. Точные требования к совпадению скорости, duplex, режима порта и списка VLAN зависят от платформы и версии ПО, поэтому сверяйте их с документацией производителя для вашей модели.

Синтаксис команд, таймеры протоколов и набор поддерживаемых функций (RSTP, MSTP, LACP) зависят от вендора, платформы и версии ПО. Перед применением конфигурации на рабочем оборудовании сверяйте её с документацией производителя для вашей модели.

Частые ошибки при настройке L2 и как их избежать

  • Разные native VLAN на концах транка. Трафик одной подсети попадает в чужой VLAN, в логах появляются сообщения о mismatch. Задайте одинаковую native VLAN командой switchport trunk native vlan X или отведите эту роль служебному VLAN и не используйте её для пользователей.
  • Неправильный режим порта. Uplink, оставленный в режиме access, несёт трафик только одного VLAN. Проверка: show interfaces switchport, строка Administrative Mode.
  • Урезанный список разрешённых VLAN. Если нужного VLAN нет в switchport trunk allowed vlan, трафик молча отбрасывается. Список должен совпадать на обоих концах линка.
  • Петля при отключённом STP. Избыточный линк без работающего дерева даёт шторм за секунды. Не отключайте STP на транках, а на access-портах используйте portfast вместе с bpduguard.
  • Агрегация с разными параметрами портов. Несогласованные параметры оставляют часть линков вне bundle. Проверка: show etherchannel summary.
  • Неверный шлюз у хоста. Внутри VLAN устройство работает, а в другие сети и интернет не ходит. Смотрите с хоста маршрут по умолчанию и ARP-таблицу, со стороны сети - SVI и записи в таблице маршрутов.
  • Отсутствие документации по VLAN. Схема «какой VLAN для чего и где шлюз» экономит часы при разборе инцидентов. Фиксируйте ID, назначение и адрес шлюза в одном месте.

Заключение: где заканчивается коммутация и начинается маршрутизация

Коммутация работает внутри VLAN и опирается на MAC-адреса и таблицу коммутатора. Маршрутизация начинается там, где нужен переход между VLAN, подсетями или выход в интернет, и опирается на IP-адреса и таблицу маршрутов. Точка перехода - шлюз: для хоста это MAC-адрес интерфейса маршрутизатора или SVI, для сети - NAT на границе.

Минимальный чек-лист для рабочей сети:

  • Каждому сегменту назначены VLAN и подсеть, шлюз задокументирован.
  • Access-порты переведены в нужный VLAN, на них включены portfast и bpduguard.
  • Транки согласованы по native VLAN и списку разрешённых VLAN.
  • STP или RSTP включён на всех коммутаторах, избыточные линки объединены в LACP.
  • Под рукой show-команды: show mac address-table, show interfaces trunk, show spanning-tree, show etherchannel summary.

Отдельные сценарии проверяйте на своей платформе: если часть инфраструктуры работает на Windows Server, роли маршрутизации и правила брандмауэра настраиваются иначе, настройка маршрутизации между VLAN и подсетями в Windows отличается от конфигурации коммутатора, но принцип шлюза остаётся тем же.

Поделиться:
Сохранить гайд? В закладки браузера