Introduction

If you've got more than a couple of VMs and one flat network, you've probably felt the itch to split things up — put your NAS traffic on one segment, your guest Wi-Fi VMs on another, and keep your management interface away from everything else. That's what VLANs are for, and Proxmox VE has solid built-in support for them once you know where to look.

The tricky part isn't really VLANs themselves — it's the Proxmox-specific piece: the "VLAN aware" checkbox on your bridge, and how that interacts with the VLAN tag field you'll see when configuring a VM's network card. Get those two things straight and the rest is simple.

This guide explains what a VLAN actually is, how Proxmox's VLAN-aware bridge works, and walks through setting one up so different VMs on the same physical network card end up on separate, isolated network segments.

What You Will Learn

  • What a VLAN is, in plain terms, and why homelabs and small businesses use them
  • How a VLAN-aware bridge differs from creating a separate interface per VLAN
  • How to enable VLAN awareness on a Proxmox bridge, through the GUI and by editing the config file directly
  • How to assign a VLAN tag to an individual VM's network device
  • The switch-side setting that trips up almost everyone the first time
  • How to troubleshoot a VM that can't reach anything after you've tagged it

What Is This Feature?

A VLAN, short for Virtual Local Area Network, is a way to split one physical network into several logically separate ones, using the same cables and switches. Normally, "separate networks" means separate physical wiring. VLANs let you fake that separation with a small numeric tag added to network traffic, so devices on VLAN 10 can't see devices on VLAN 20 even though they're plugged into the exact same switch.

Proxmox VE handles this through its network bridge — the software component (called vmbr0 by default) that connects your VMs to the physical network card. A regular bridge just passes traffic through untouched. A VLAN-aware bridge can read and add VLAN tags on the fly, which means one single bridge can serve VMs on several different VLANs at once — you just tell each VM's network device which VLAN tag to use, and the bridge handles the rest.

The alternative — and the older approach still documented for reference — is creating a completely separate virtual interface for each VLAN, like vmbr0.5 for VLAN 5 and vmbr0.10 for VLAN 10. It works, but it means a new bridge definition every time you add a VLAN. VLAN-aware bridges avoid that: add the tag on the VM side, done.

Why Would You Use It?

The obvious reason is isolation. Maybe you run a VM that's exposed to the internet and you don't want it able to see your internal file server if it's ever compromised. Putting it on its own VLAN, with firewall rules controlling what can cross between VLANs, gives you a real boundary instead of just hoping nothing goes wrong.

The second reason is organization. If you're running a small business network with a Proxmox host in the mix, you might already have VLANs set up on your switch for things like voice traffic, guest Wi-Fi, or a security camera system. Proxmox needs to fit into that scheme rather than working around it, and VLAN-aware bridges are how it does that cleanly.

The third reason, and probably the most common for homelab users, is just wanting to replicate a "real" network setup for learning purposes — running a router VM, a few VLANs, and practicing the kind of segmentation you'd see in an actual office network, all inside one physical box.

If you've only got one VM and no particular reason to isolate it, none of this matters much. VLANs solve a specific problem — don't set them up just because they sound like a good practice if you don't actually have multiple network segments to separate.

Prerequisites

  • A Proxmox VE node with at least one physical network interface already working (this guide assumes basic connectivity already exists)
  • A managed switch that supports VLAN tagging — an unmanaged home switch won't preserve VLAN tags between devices
  • Knowledge of which VLAN IDs you plan to use (a number from 1 to 4094, with 1 often reserved as the default/native VLAN on many switches)
  • Root or administrator access to the Proxmox web GUI, or SSH access for editing config files directly
  • A basic idea of your intended layout — which VMs go on which VLAN — before you start clicking around

Step-by-Step Tutorial

Step 1: Enable VLAN awareness on the bridge

In the Proxmox web GUI, click your node in the left-hand tree, then go to System > Network. Select your existing bridge (usually vmbr0) and click Edit.

Tick the VLAN aware checkbox. Below it you can optionally set a VLAN ID range under VLAN Tag/VLAN IDs — leaving it as the default range (2-4094) is fine unless you have a specific reason to restrict it. Click OK, then click Apply Configuration at the top of the Network section to actually push the change.

If you'd rather edit the configuration file directly, the same result looks like this in /etc/network/interfaces:

auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

Here, bridge-vlan-aware yes is the setting that actually turns on VLAN handling, and bridge-vids defines which VLAN IDs the bridge is willing to pass. After editing this file by hand, run ifreload -a to apply it without a full reboot.

Step 2: Assign a VLAN tag to a VM's network device

Click on the VM you want to place on a specific VLAN, go to Hardware, and double-click its network device (usually listed as Network Device (net0)).

You'll see a VLAN Tag field, left blank by default. Enter the VLAN ID you want this VM's traffic tagged with — for example, 20. Click OK. No reboot of the Proxmox host is needed for this part; the change applies as soon as you save it (though the VM itself may need its network interface restarted or the VM rebooted to pick up a fresh IP if you're also changing subnets).

Repeat this for every VM you want to place on a VLAN. VMs with no VLAN tag set stay on whatever the "native" or untagged VLAN is configured to be on your switch port — usually VLAN 1, but check your switch configuration to be sure.

Step 3: Match the switch port configuration

This is the step people skip and then spend an hour confused about. The physical switch port that your Proxmox node's network cable plugs into needs to be configured as a trunk port (sometimes labeled "tagged" port, depending on your switch vendor), allowing the VLANs you're using to pass through tagged.

If the switch port is set to access mode instead — which strips VLAN tags and assumes everything belongs to one VLAN — your tagged VM traffic either gets dropped or silently reassigned, and nothing will work the way you expect. Check your switch's port configuration and make sure it's set to trunk, allowing the specific VLAN IDs you're using.

Step 4: Test connectivity

Boot the VM (or reboot it if it was already running) and check that it picks up an IP address appropriate for its VLAN — assuming DHCP is running on that VLAN, or configure a static IP that matches the subnet you've assigned to it. Try pinging another device you know is on the same VLAN, and confirm you can't reach a device on a different VLAN unless you've explicitly allowed routing between them.

Commands Explained

Command / SettingWhat it does
bridge-vlan-aware yesTurns on VLAN tag handling for a bridge, allowing it to serve multiple VLANs through a single interface.
bridge-vids 2-4094Defines which VLAN IDs the bridge will accept and pass through. Narrow this if you only ever use a handful of specific VLANs.
ifreload -aReloads all network interface configuration from /etc/network/interfaces without requiring a full reboot of the host.
VLAN Tag (VM network device)Tags all traffic from that specific VM's virtual network card with the given VLAN ID before it reaches the bridge.
ip -d link show vmbr0Shows detailed bridge information, useful for confirming VLAN filtering is actually active on the interface.

Common Errors

VM has no network connectivity at all after adding a VLAN tag — by far the most common cause is the switch port still being set to access mode instead of trunk. The bridge and VM configuration can be perfect and it still won't work if the physical switch strips the tag on the way out.

"VLAN aware" checkbox is missing or grayed out — this usually means you're looking at a bond or a different interface type than expected. VLAN awareness applies to the bridge itself, not to the underlying physical NIC or bond directly.

VM can reach some devices but not others on the same VLAN — check whether those other devices are actually configured for the same VLAN ID, and not just "on the same switch." It's an easy mix-up: physical proximity on a switch means nothing once VLANs are involved.

Changes to /etc/network/interfaces don't seem to apply — confirm you ran ifreload -a (or rebooted) after editing the file. Simply saving the file doesn't push the change to the live network stack.

Troubleshooting

  1. Confirm the bridge shows VLAN filtering enabled: run ip -d link show vmbr0 and look for a mention of vlan filtering in the output.
  2. Double check the VLAN Tag field on the VM's network device — a blank field means untagged, not "no VLAN," which is a common point of confusion.
  3. Log into your switch's management interface and verify the port Proxmox is plugged into is set to trunk mode and explicitly allows the VLAN ID you're testing.
  4. From inside the VM, check what IP address and subnet it actually received — a VM stuck with an address from the wrong VLAN's DHCP scope is a strong sign the tag isn't reaching the switch correctly.
  5. As a sanity check, temporarily remove the VLAN tag from the VM's network device and confirm it gets connectivity again on the native VLAN. If it does, the problem is specifically in the VLAN path, not general networking.

Best Practices

Plan your VLAN numbering scheme before you start clicking through the GUI. Something simple works fine — VLAN 10 for management, VLAN 20 for servers, VLAN 30 for guest devices — as long as it's consistent across your switches and your Proxmox configuration.

Keep the Proxmox management interface itself (the one you use to reach the web GUI) on a VLAN you can always get to, ideally the native/untagged one. Nothing ruins your afternoon quite like locking yourself out of the only interface that lets you fix a VLAN misconfiguration.

Use one VLAN-aware bridge rather than a separate bridge per VLAN unless you have a specific reason not to. It's simpler to manage, and adding a new VLAN later just means typing a new tag number into a VM's settings rather than creating an entirely new bridge.

Document which VLAN each VM is on somewhere outside of Proxmox itself — a simple spreadsheet is fine. Six months from now you won't remember why VM 114 is tagged VLAN 40.

Frequently Asked Questions

Do I need a managed switch to use VLANs in Proxmox?

Yes. An unmanaged switch has no concept of VLAN tags and will either drop tagged traffic or pass it through without honoring the isolation, which defeats the purpose entirely.

Can one VM have interfaces on multiple VLANs?

Yes, by adding a second (or third) network device to the VM and assigning each one a different VLAN tag. The guest OS then sees them as separate network interfaces, same as if it had two physical network cards.

What happens if I leave the VLAN Tag field blank?

The VM's traffic stays untagged and follows whatever the native VLAN is configured to be on the switch port — commonly VLAN 1, but this depends entirely on your switch's configuration.

Is a VLAN-aware bridge slower than a regular bridge?

No, the performance difference is negligible. VLAN tagging and filtering happen in the kernel's networking stack and add essentially no measurable overhead for typical homelab or small business traffic levels.

Can I use VLANs without any managed switch, just between VMs on the same Proxmox host?

Yes, if all the VMs you want to isolate live on the same Proxmox host and never need to reach a physical device, a VLAN-aware bridge alone will separate their traffic without touching your physical switch configuration at all.

Conclusion

Once the switch-side trunk port is set correctly, the Proxmox half of VLAN configuration is genuinely simple: tick "VLAN aware" on the bridge once, then type a VLAN ID into each VM's network device as needed. Most of the frustration people run into traces back to that trunk port setting rather than anything inside Proxmox itself. From here, pairing VLANs with Proxmox's built-in firewall is a natural next step if you want actual rules governing what can cross between segments, rather than just isolation by default.