Коммутатор соединяет устройства внутри одной локальной сети и передаёт данные нужному устройству по его MAC-адресу, а маршрутизатор соединяет разные сети и выбирает маршрут передачи данных, например между домашней сетью и интернетом. Сами данные идут пакетами: сообщение разбивается на небольшие части, они передаются по сети, а на компьютере получателя собираются в исходное сообщение. Базовые отличия коммутатора, маршрутизатора и пакетной передачи удобно держать в голове как отправную точку.
Граница между L2 и L3 проходит по адресу, который видит устройство. Коммутатор смотрит на MAC-адрес в заголовке кадра и работает внутри одного широковещательного домена. Маршрутизатор читает IP-адрес в заголовке пакета и передаёт трафик между подсетями, VLAN и внешними сетями. Пока трафик не покидает широковещательный домен, работает коммутация; как только нужен соседний сегмент или интернет, подключается маршрутизация и шлюз.
Дальше разобраны практические шаги: построение таблицы MAC-адресов, изоляция трафика через VLAN, настройка access- и trunk-портов, связка L2 с L3 через шлюз, диагностика петель, STP и агрегация каналов. Примеры даны в синтаксисе Cisco IOS: он удобен как эталон при разборе, а на оборудовании других вендоров отличаются команды, логика остаётся той же. Полную картину уровней полезно держать перед глазами вместе с разбором уровней маршрутизации от L2 до L7.
Коммутация и маршрутизация: в чем разница и где проходит граница
Коммутатор пересылает кадры внутри локальной сети, маршрутизатор принимает решение о следующем хопе по IP-адресу. Это два разных набора таблиц и два разных уровня ответственности.
| Признак | Коммутация (L2) | Маршрутизация (L3) |
|---|---|---|
| Адресация | MAC-адрес | IP-адрес |
| Единица данных | Кадр | Пакет |
| Устройство | Коммутатор | Маршрутизатор, L3-коммутатор |
| Граница работы | Широковещательный домен, то есть VLAN | IP-подсеть |
| Таблица решений | Таблица 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-команд зависит от модели и версии ПО.
| VLAN | MAC-адрес | Тип | Порт |
|---|---|---|---|
| 10 | aaaa.aaaa.aaaa | DYNAMIC | Gi0/1 |
| 10 | bbbb.bbbb.bbbb | DYNAMIC | Gi0/2 |
| 10 | 0050.56aa.bbcc | STATIC | Gi0/24 |
| 20 | cccc.cccc.cccc | DYNAMIC | Gi0/3 |
Практический пример: как коммутатор пересылает кадр между двумя устройствами
- Компьютер A с MAC AA:AA:AA:AA:AA:AA подключён к порту Gi0/1, компьютер B с MAC BB:BB:BB:BB:BB:BB к порту Gi0/2. Таблица пуста.
- A отправляет кадр на B. Коммутатор принимает кадр на Gi0/1 и записывает: AA:AA:AA:AA:AA:AA в Gi0/1.
- MAC-адреса B в таблице ещё нет, поэтому кадр флудится во все порты, кроме Gi0/1. B получает кадр, остальные хосты его отбрасывают.
- B отвечает. Коммутатор принимает ответ на Gi0/2 и записывает: BB:BB:BB:BB:BB:BB в Gi0/2.
- Следующий кадр от 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 отличается от конфигурации коммутатора, но принцип шлюза остаётся тем же.