Обычный способ дать VM сеть на отдельном VLAN — завести его на физическом свитче и прописать тегирование на бридже каждой ноды. Работает, но требует доступа к сетевому оборудованию и синхронной правки конфигурации на всех свитчах сразу. Встроенный SDN (Software-Defined Networking) в Proxmox VE решает это иначе: VXLAN-зона инкапсулирует трафик в UDP-пакеты и гоняет его поверх уже существующей IP-сети между нодами, свитч при этом видит обычный IP-трафик и ничего не знает про виртуальные сети внутри.
Зона создаётся в Datacenter → SDN → Zones с типом VXLAN и списком Peers Address List — IP-адресами всех нод, которые должны участвовать в зоне:
ID: myvxlanzone
Peers Address List: 192.168.0.1,192.168.0.2,192.168.0.3
Вместо ручного перечисления пиров можно завязать зону на Fabric — тогда список узлов подтягивается автоматически. Поверх зоны создаётся VNet с тегом, который в данном случае играет роль VXLAN ID (VNI), а не обычного VLAN-тега:
ID: vxvnet1
Zone: myvxlanzone
Tag: 100000
После Apply на каждой ноде, где используется VNet, Proxmox сам поднимает интерфейсы vxlan* и бриджи — руками ничего создавать не нужно. VM с vNIC на этом VNet, запущенные на разных физических нодах, видят друг друга в одном L2-сегменте, как будто стоят в одной стойке за одним свитчем.
Отдельный нюанс — MTU: VXLAN-инкапсуляция добавляет 50 байт заголовков, поэтому физический линк должен держать MTU как минимум на 50 байт больше, чем MTU внутри VM (дефолт для зоны — 1450, что рассчитано под обычный Ethernet MTU 1500 снаружи). Если забыть про эту разницу и выставить одинаковый MTU внутри и снаружи — поймаешь фрагментацию и труднообъяснимые зависания больших пакетов при абсолютно живом пинге мелкими.
#proxmox #sdn
