Настройка VLAN для виртуальной машины в Proxmox VE

Пошаговая настройка VLAN для виртуальной машины в Proxmox VE: VLAN-aware bridge, тег на сетевом интерфейсе, проверка trunk-порта и диагностика связи.

VLAN позволяет разделить одну физическую сеть на несколько логических сегментов. В Proxmox VE VLAN обычно настраивается через VLAN-aware bridge и тег на сетевом интерфейсе виртуальной машины.

В этой инструкции рассматривается только подключение одной VM к tagged VLAN через vmbr0.

Подходит для: Proxmox VE 8 и 9
Уровень сложности: средний
Время выполнения: около 20 минут
Требуемый доступ: права управления сетью Proxmox VE и доступ к коммутатору

Важное предупреждение

Ошибка в настройке VLAN может привести к потере сетевого доступа к VM или самому узлу Proxmox VE.

Перед изменениями необходимо иметь:

  • резервный доступ к консоли;
  • подтверждённый VLAN ID;
  • настроенный trunk-порт на коммутаторе;
  • понимание, в каком VLAN находится management-сеть Proxmox VE;
  • резервную копию /etc/network/interfaces.

Что будет настроено

После выполнения инструкции:

  • vmbr0 будет переведён в VLAN-aware режим;
  • VM получит VLAN Tag;
  • будет проверена конфигурация trunk-порта;
  • будет настроен IP внутри гостевой ОС;
  • будет выполнена проверка gateway, DNS и межсетевой связи.

Исходная схема

Пример:

Proxmox host: 192.0.2.10
Bridge: vmbr0
Physical interface: eno1
VLAN ID: 100
VM address: 198.51.100.20/24
VLAN gateway: 198.51.100.1

Используйте параметры своей сети.

Как работает VLAN в Proxmox VE

Схема:

Коммутатор trunk
        │
       eno1
        │
      vmbr0
        │
  VLAN Tag 100
        │
       VM

Физический порт коммутатора передаёт несколько VLAN в tagged-режиме.

Proxmox VE добавляет или снимает VLAN Tag для сетевого интерфейса VM.

Проверка физического интерфейса

ip -br link

Проверьте адреса:

ip -br addr

Проверьте bridge:

bridge link

В примерах физический интерфейс:

eno1

Проверка текущей конфигурации vmbr0

cat /etc/network/interfaces

Пример до включения VLAN-aware:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 192.0.2.10/24
    gateway 192.0.2.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

source /etc/network/interfaces.d/*

Создание резервной копии

cp /etc/network/interfaces   /etc/network/interfaces.backup-$(date +%F-%H%M%S)

Проверьте:

ls -l /etc/network/interfaces*

Включение VLAN-aware

Откройте:

nano /etc/network/interfaces

Добавьте:

bridge-vlan-aware yes
bridge-vids 2-4094

Итог:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 192.0.2.10/24
    gateway 192.0.2.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

source /etc/network/interfaces.d/*

Ограничение списка VLAN

Вместо всех VLAN:

bridge-vids 2-4094

можно разрешить только нужные:

bridge-vids 10 20 100 200

Это более строгий и контролируемый вариант.

Настройка через веб-интерфейс

Откройте:

Node → System → Network

Выберите:

vmbr0

Нажмите:

Edit

Включите:

VLAN aware

При необходимости укажите список VLAN.

Сначала сохраните конфигурацию, затем применяйте.

Проверка синтаксиса

ifquery --check vmbr0

Покажите рассчитанную конфигурацию:

ifquery vmbr0

Проверьте bridge:

bridge vlan show

Применение конфигурации

Предпочтительный способ:

ifreload -a

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

Проверка после применения

ip addr show vmbr0
ip route
bridge vlan show

Проверьте доступность management gateway:

ping -c 3 192.0.2.1

Проверка trunk-порта на коммутаторе

Порт, к которому подключён Proxmox VE, должен работать как trunk.

На нём должны быть разрешены:

  • management VLAN;
  • VLAN для VM;
  • другие необходимые VLAN.

Пример логики настройки:

Native/Untagged VLAN: management
Tagged VLANs: 100, 200

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

Management VLAN

Если IP узла Proxmox VE передаётся untagged, vmbr0 может оставаться с обычным IP.

Если management-сеть тоже tagged, требуется отдельная VLAN-интерфейсная схема, например:

vmbr0.10

Такая конфигурация требует отдельного планирования и резервного доступа.

Добавление VLAN Tag к VM

Откройте:

VM → Hardware → Network Device

Нажмите:

Edit

Укажите:

Bridge: vmbr0
VLAN Tag: 100
Model: VirtIO

Сохраните.

Настройка через CLI

Проверьте текущий интерфейс:

qm config VM_ID |
grep '^net'

Пример:

net0: virtio=AA:BB:CC:DD:EE:FF,bridge=vmbr0

Добавьте VLAN Tag:

qm set VM_ID   --net0 virtio=AA:BB:CC:DD:EE:FF,bridge=vmbr0,tag=100

Сохраните текущий MAC-адрес.

Проверьте:

qm config VM_ID |
grep '^net0'

Изменение только VLAN через веб-интерфейс

Безопаснее всего изменить VLAN Tag через GUI, чтобы не потерять:

  • MAC-адрес;
  • firewall flag;
  • rate limit;
  • queues;
  • link_down;
  • mtu.

CLI-команду используйте только после просмотра полной строки net0.

Перезапуск сетевого интерфейса VM

После изменения VLAN перезапустите VM или сетевой интерфейс гостя.

Корректная перезагрузка:

qm reboot VM_ID

Либо внутри гостевой ОС:

sudo reboot

Настройка статического IP внутри Ubuntu

Проверьте имя интерфейса:

ip -br link

Откройте Netplan:

sudo nano /etc/netplan/CONFIG_FILE.yaml

Пример:

network:
  version: 2
  ethernets:
    ens18:
      addresses:
        - 198.51.100.20/24
      routes:
        - to: default
          via: 198.51.100.1
      nameservers:
        addresses:
          - 198.51.100.53
          - 1.1.1.1

Проверьте:

sudo netplan generate

Примените:

sudo netplan apply

DHCP внутри VLAN

Если в VLAN работает DHCP, можно использовать:

network:
  version: 2
  ethernets:
    ens18:
      dhcp4: true

Проверьте адрес:

ip -br addr

Проверка связи внутри VM

Проверьте адрес:

ip addr

Проверьте маршрут:

ip route

Проверьте gateway:

ping -c 3 198.51.100.1

Проверьте DNS:

getent hosts example.com

Проверьте внешний адрес:

ping -c 3 1.1.1.1

Проверка ARP

ip neigh

Если gateway остаётся в состоянии:

INCOMPLETE

или:

FAILED

проблема обычно находится на L2-уровне:

  • trunk;
  • VLAN Tag;
  • bridge;
  • switch port;
  • VLAN membership.

Проверка VLAN на узле Proxmox

bridge vlan show

Найдите интерфейс VM:

ip -br link |
grep tap

Для конкретной VM tap-интерфейс обычно содержит VM ID.

Проверьте:

bridge vlan show dev tapVM_IDi0

Пример:

bridge vlan show dev tap100i0

Проверка tagged-трафика через tcpdump

На физическом интерфейсе:

tcpdump -eni eno1 vlan 100

На bridge:

tcpdump -eni vmbr0 vlan 100

На tap-интерфейсе VM трафик может уже отображаться без VLAN Tag, поскольку Proxmox снимает тег перед передачей в гостя.

Остановить:

Ctrl+C

Проверка DHCP через tcpdump

tcpdump -eni eno1   'vlan 100 and (port 67 or port 68)'

Если DHCP Discover выходит, но Offer не приходит, проверьте:

  • DHCP-сервер;
  • relay;
  • trunk;
  • firewall;
  • VLAN routing.

VLAN Tag и гостевая ОС

При использовании поля:

VLAN Tag: 100

гостевая ОС обычно видит обычный untagged-интерфейс.

Внутри VM не нужно создавать:

ens18.100

Тегирование выполняет Proxmox VE.

VLAN trunk внутри VM

Если сама VM должна получать несколько VLAN, поле VLAN Tag оставляют пустым, а физический trunk передают в гостя.

Внутри VM создаются интерфейсы:

ens18.100
ens18.200

Такой режим используется для:

  • firewall VM;
  • router VM;
  • virtual switch;
  • network appliance.

Это отдельный сценарий и требует настройки VLAN внутри гостевой ОС.

Firewall и VLAN

Проверьте:

  • Proxmox Firewall;
  • firewall внутри VM;
  • ACL на коммутаторе;
  • routing между VLAN;
  • gateway firewall;
  • DHCP snooping;
  • port security.

VLAN разделяет broadcast domain, но сам по себе не является полноценным firewall.

MTU

При использовании обычного Ethernet оставьте:

1500

Если используются jumbo frames, одинаковый MTU должен быть настроен на:

  • VM;
  • tap;
  • bridge;
  • физическом интерфейсе;
  • коммутаторе;
  • маршрутизаторе;
  • storage-сети.

Проверка:

ip link show eno1
ip link show vmbr0

Проверка маршрутизации между VLAN

Если VM должна обращаться в другую VLAN, требуется маршрутизатор или L3-коммутатор.

Проверьте:

traceroute DESTINATION_IP

Если traceroute отсутствует:

sudo apt install -y traceroute

Отсутствие межвлановой связи не всегда означает ошибку Proxmox VE.

Типичные проблемы

VM не получает IP по DHCP

Проверьте:

  • VLAN Tag;
  • trunk-порт;
  • разрешён ли VLAN на коммутаторе;
  • DHCP scope;
  • DHCP relay;
  • firewall;
  • bridge-vlan-aware.

Команды:

bridge vlan show
tcpdump -eni eno1 'vlan 100 and (port 67 or port 68)'

Gateway не отвечает

Проверьте:

ip addr
ip route
ip neigh

Если ARP не разрешается, проблема находится на L2-уровне.

После включения VLAN-aware пропал доступ к Proxmox

Используйте резервную консоль.

Проверьте:

cat /etc/network/interfaces
ip -br addr
ip route
bridge vlan show

Восстановите резервную копию:

cp /etc/network/interfaces.backup-DATE   /etc/network/interfaces

Примените:

ifreload -a

VLAN работает на одном узле, но не работает после миграции VM

На целевом узле проверьте:

  • наличие vmbr0;
  • VLAN-aware;
  • разрешённый VLAN ID;
  • trunk-порт;
  • конфигурацию коммутатора;
  • firewall.

Трафик приходит без VLAN Tag

Проверьте, не настроен ли порт коммутатора как access вместо trunk.

Также проверьте native VLAN.

Внутри VM создан ens18.100 и одновременно задан VLAN Tag

Это двойное тегирование.

Используйте один из вариантов:

  • VLAN Tag в Proxmox;
  • VLAN subinterface внутри VM.

Не используйте оба одновременно без специальной схемы QinQ.

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

  1. Подтвердить VLAN ID.
  2. Проверить trunk на коммутаторе.
  3. Сделать backup сетевой конфигурации.
  4. Включить VLAN-aware на vmbr0.
  5. Проверить ifquery.
  6. Применить через ifreload -a.
  7. Проверить management-доступ.
  8. Добавить VLAN Tag к VM.
  9. Настроить IP внутри VM.
  10. Проверить gateway, DNS и маршрутизацию.
  11. Проверить firewall.
  12. Проверить миграцию VM на другой узел при наличии кластера.

Быстрый набор команд

Проверить bridge:

bridge vlan show

Проверить VM:

qm config VM_ID |
grep '^net'

Добавить VLAN Tag:

qm set VM_ID   --net0 virtio=MAC_ADDRESS,bridge=vmbr0,tag=100

Проверить трафик:

tcpdump -eni eno1 vlan 100

Проверить сеть внутри VM:

ip addr
ip route
ping -c 3 VLAN_GATEWAY

Итог

После выполнения инструкции:

  • vmbr0 переведён в VLAN-aware режим;
  • VLAN разрешён на bridge;
  • VM получила VLAN Tag;
  • настроен IP внутри гостевой ОС;
  • проверены ARP, gateway, DNS и routing;
  • рассмотрена диагностика через bridge и tcpdump;
  • разобраны типичные ошибки trunk и двойного тегирования.

Для стабильной работы VLAN конфигурация Proxmox VE, физического коммутатора и маршрутизатора должна быть согласована.

← Предыдущая статья Миграция виртуальной машины между узлами Proxmox VE Следующая статья → Настройка автозапуска VM и LXC в Proxmox VE