Может ли гостевая машина самостоятельно ставить VLAN‑теги на пакеты, которые она отправляет через Hyper‑V?

Устанавливаю CHR на Hyper‑V и не могу понять: делаю ли я что‑то не так, или это нормальное поведение гипервизора?
  • 20 марта 2026 г. 15:03
Ответы на вопрос 2
Коротко — может, но не «по‑умолчанию». По умолчанию Hyper‑V виртуальный коммутатор либо сам навешивает/снимает один VLAN (access mode), либо блокирует/не пропускает теги, которые виртуальная машина пытается поставить. Чтобы гость (например CHR) мог самостоятельно работать с 802.1Q‑тегами (trunking), нужно явно разрешить это в настройках виртуального адаптера.

Что важно знать и проверить
- Если виртуальный адаптер настроен как «Access VLAN» (обычная настройка «VLAN ID» в Hyper‑V), Hyper‑V будет ставить/снимать этот тег на границе и гостю «не передаёт» управление тегами. Поэтому CHR внутри VM увидит только не‑тегированные пакеты или пакеты одного VLAN.
- Чтобы гостевая система сама ставила/принимала теги, адаптер должен быть в режиме trunk (разрешён список VLAN). В этом режиме Hyper‑V пропускает 802.1Q‑теги к/от гостя.
- Также убедитесь, что физический порт коммутатора, к которому подключён хост, настроен как trunk и разрешает те же VLAN’ы.
- В старых версиях Hyper‑V функционал trunk мог быть ограничен; в современных Windows Server / Hyper‑V есть поддержка trunk через GUI/PowerShell.
- Иногда функции аппаратного offload на сетевой карте или SR‑IOV меняют видимость тегов — но для типичных случаев достаточно режима trunk.

Примеры (PowerShell)
- Установить trunk и разрешить VLANы 2–100, native VLAN 1:
  Set-VMNetworkAdapterVlan -VMName "CHR-VM" -VMNetworkAdapterName "Network Adapter" -Trunk -NativeVlanId 1 -AllowedVlanIdList "1-100"
- Сделать access VLAN (гипервизор будет сам ставить тег):
  Set-VMNetworkAdapterVlan -VMName "CHR-VM" -VMNetworkAdapterName "Network Adapter" -Access -VlanId 10

GUI
- VM -> Settings -> Network Adapter -> VLAN Identification -> выбрать Trunk и задать Native/Allowed VLANs.

Итого: если вы не включили trunk/разрешили нужные VLANы, то поведение, которое вы видите (гость не ставит/не видит теги), — нормальное для Hyper‑V. Чтобы CHR управлял VLAN’ами самостоятельно, переключите виртуальный NIC в trunk и проверьте конфигурацию физического коммутатора. Если надо, помогу шаг за шагом с командами/скриншотами вашей версии Windows Server.
Может, но по дефолту Hyper-V работает в access-режиме и режет теги от гостя. Чтоб CHR мог сам тегировать трафик, переключи адаптер в trunk через PowerShell: <pre><code>Set-VMNetworkAdapterVlan -VMName "CHR" -Trunk -AllowedVlanIdList "1-4094" -NativeVlanId 0</code></pre> . Ну и MAC Address Spoofing на этом адаптере тоже включи, для CHR как роутера скорее всего пригодится.
Похожие вопросы