Trunk-порт — режим работы порта коммутатора, при котором через одно физическое соединение передаётся трафик нескольких VLAN одновременно. Каждый Ethernet-фрейм на trunk-порту содержит 802.1Q-тег (VLAN tag) — 4 байта, добавляемых в заголовок, которые содержат VLAN ID (1-4094). Принимающее устройство читает тег и направляет фрейм в нужный VLAN-сегмент.
Как работает
Стандарт IEEE 802.1Q определяет формат тегирования: в заголовок Ethernet-фрейма между полями Source MAC и EtherType вставляется 4-байтный тег, содержащий:
- TPID (Tag Protocol Identifier) — всегда
0x8100, обозначает 802.1Q-тег. - PCP (Priority Code Point) — 3 бита приоритета QoS (802.1p).
- DEI (Drop Eligible Indicator) — 1 бит.
- VID (VLAN Identifier) — 12 бит, значения 1-4094.
Trunk-порт передаёт тегированные фреймы для всех настроенных VLAN. Access-порт (обычный порт для конечного устройства) работает в одном VLAN и не добавляет тег — это делает коммутатор при приёме фрейма. Соединение между двумя коммутаторами, серверным NIC и коммутатором, или между коммутатором и маршрутизатором/файрволом — типичные места применения trunk.
В серверной инфраструктуре trunk-порты используются, когда сервер сам управляет VLAN-трафиком — например, гипервизор KVM или Proxmox создаёт виртуальные сети для VM в разных VLAN, и физический NIC работает в trunk-режиме. На Linux это реализуется через vlan-модуль и ip link add link eth0 name eth0.100 type vlan id 100.
История
До стандартизации 802.1Q (1998) каждый производитель имел проприетарный протокол тегирования: Cisco использовала ISL (Inter-Switch Link, 1996). IEEE 802.1Q унифицировал подход, и ISL был постепенно вытеснен. В 2014 году Cisco полностью отказалась от поддержки ISL в новых устройствах. 802.1Q остаётся действующим стандартом; в 2011 году принят 802.1ad (Q-in-Q) для двойного тегирования в провайдерских сетях.
Trunk vs Access
| Параметр | Trunk-порт | Access-порт |
|---|---|---|
| Количество VLAN | Множество (1-4094) | Один |
| Тегирование | 802.1Q теги в каждом фрейме | Без тегов (coммутатор снимает/добавляет) |
| Применение | Связь коммутаторов, uplink к гипервизору | Подключение серверов, ПК, IP-телефонов |
| Native VLAN | Один VLAN без тега (обычно VLAN 1) | Весь трафик без тега |
На что обращать внимание
Trunk-порт без явного ограничения разрешённых VLAN передаёт трафик всех VLAN — это угроза VLAN hopping (атака переключения VLAN). Рекомендация: явно указывать allowed VLANs на trunk-порту и отключать неиспользуемые VLAN. Native VLAN на trunk-портах следует менять с VLAN 1 на нестандартный ID — VLAN 1 нередко становится вектором атаки в устаревших конфигурациях. В хостинговой среде trunk-порты критичны для изоляции клиентских сегментов на гипервизорах.
Типичные ошибки при настройке trunk-портов
Первая ошибка — не задавать native VLAN явно: по умолчанию native VLAN = 1 на большинстве коммутаторов. Нетегированный трафик попадает в VLAN 1, что является потенциальным вектором атаки (VLAN hopping). Меняйте native VLAN на нестандартный ID командой switchport trunk native vlan 999 (Cisco). Вторая ошибка — открывать все VLAN на trunk: ограничивайте разрешённые VLAN командой switchport trunk allowed vlan 10,20,30. В Proxmox trunk-порт настраивается в bridge-конфигурации: интерфейс без указания VLAN в bridge-vlan-interfaces — trunk. В KVM/libvirt trunk-порт создаётся через <vlan trunk='yes'> в XML-конфигурации сети.