I don't use 802.3q (QnQ) on the host server to transmit vlans to guest virtual machines. Simply use bridge interface on real network interface or link aggregation group of them (bonding). Bridge inteface mustn't have any ip configuration. All vlans will be present on bridge inteface and available for guest machines. Don't forget to change switch port (ports) to vlan tagged mode (trunk mode) and allow needed vlans access on it (them).
You must create vlan interface on the host server to have access to it via network. By example br0.12, where 12 is your management vlan. Configure ip address and other network properties on this interface.
I usually disable NetworkManager service on host server, because it's comfortable for dynamic configuration of network Interfaces, not for static config.
Example: eth0 - management interface, eth1 - for all VM's, br0 - will be assigned to VM with all vlans, br31 - will be assigned to Windows VM's, witch can't use vlans, but needed to access to vlan 31 untagged. On the switch all vlans must be tagged.
To disable NetworkManager in Centos 6 and less:
chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
service network restart
To disable NetworkManager in Centos 7 and less:
systemctl disable NetworkManager
systemctl enable network
systemctl stop NetworkManager
systemctl resart network
Add to /etc/sysctl.conf next several lines and apply by command
sysctl -p /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Check your firewall (iptables) that it allows forwarding.