Настройка 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.
Безопасный порядок настройки
- Подтвердить VLAN ID.
- Проверить trunk на коммутаторе.
- Сделать backup сетевой конфигурации.
- Включить VLAN-aware на
vmbr0. - Проверить
ifquery. - Применить через
ifreload -a. - Проверить management-доступ.
- Добавить VLAN Tag к VM.
- Настроить IP внутри VM.
- Проверить gateway, DNS и маршрутизацию.
- Проверить firewall.
- Проверить миграцию 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, физического коммутатора и маршрутизатора должна быть согласована.