While there is no built-in way to configure VLANs for VMs in VMware Workstation, you can use a workaround to create VLAN-backed interfaces on the Host OS and use bridged networking and custom virtual networks in VMware Workstation to configure vlans for the VM network interfaces.

I have workstation running on Ubuntu. The following steps will be for Ubuntu 22.04.

  1. Install the vlan package and load the 8021q module
sudo apt install vlan
sudo modprobe 8021q
sudo su -c 'echo "8021q" >> /etc/modules'
  1. Add the vlan backed interface. Here, enp37s0 is the physical network interface. enp37s0.300 is the name of the vlan backed interface. 300 is the vlan id.
sudo ip link add link enp37s0 name enp37s0.300 type vlan id 300
  1. Bring up the interface
sudo ip link set up enp37s0.300 up
  1. Enable DHCP or set a static ip address
sudo dhclient enp37s0.300
sudo ip addr add 192.168.1.2/24 dev enp37s0.300
  1. Persist changes using netplan(ubnuntu specific)(or edit the /etc/network/interfaces file)
Create a yaml file under /etc/netplan with the below config
For eg. /etc/netplan/99-vlan200.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp37s0.200:
      dhcp4: true
  1. Apply the netplan
sudo netplan apply
  1. Use the virtual network editor that comes with VMware Workstation to adda new bridged network.
  2. Select an unused vmnet adapter and set it to bridged.
  3. In VMware Workstation, edit the virtual machine settings and choose Custom:Specific virtual network and choose the vmnet adapter you created previously.

To automate creating the vlan everytime ubuntu boots up:

  1. Create a binary file that will create the vlan interface: /usr/bin/vlanconfig
sudo nano /usr/bin/vlanconfig
ip link add link enp37s0 name enp37s0.300 type vlan id 300
ip link set up enp37s0.300 up
  1. Create the vlan service: /etc/systemd/system/vlan.service
sudo nano etc/systemd/system/vlan.service

[Unit]
Description=Configure vlan for VMware Workstation

[Service]
Type=oneshot
ExecStart=/usr/bin/vlanconfig

[Install]
WantedBy=multi-user.target
  1. Enable the service
systemctl enable vlan.service