The information is outdated and is not suitable for systems using Ifupdown-ng. Installing the vlan package may prevent your network from being configured correctly
(Discuss)
This article shows how to configure a network interface as an IEEE 802.1q VLAN trunk.
Installation
First, install the vlan package. This will give you support for VLANs in the /etc/network/interfaces file.
Warning: Installing the vlan package may result in Ifupdown-ng being replaced by busybox-ifupdown. If you use ifupdown-ng specific config, this may prevent your network from being configured properly.
A static IP address was used in the examples shown above, but DHCP can be used as well.
Example with bridges associated with VLANs over bonding with differing MTUs on the various VLANs
This serves as an example of some of the more complicated networking possible. Particularly, this would work well for a hypervisor attached to a dedicated storage VLAN. Less complicated implementations can be achieved by merely removing the non-applicable parts as follows:
Contents of /etc/network/interfaces
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet manual
bond_slaves eth0 eth1
bond_mode 802.3ad
bond_miimon 100
bond_xmit_hash_policy layer2+3
post-up ip link set dev bondi0 mtu 9000
iface bond0.1
auto br1
iface br1
address 192.168.1.196/24
gateway 192.168.1.1
bridge_ports bond0.1
bridge_stp off
bridge_fd 0.0
post-up ip link set dev bond0.1 mtu 1500
iface bond0.10 inet manual
auto br10
iface br10 inet static
address 192.168.10.1/24
bridge_ports bond0.10
bridge_stp off
bridge_fd 0.0
Example with two interfaces on the same adapter. One with VLAN and one without
Since Linux doesn't allow multiple default gateways we need to use a second routing table using iproute2:
Now we need to edit the file /etc/network/interfaces as follows
Contents of /etc/network/interfaces
auto lo
iface lo inet loopback
# the native interface without a VLAN (also called untagged)
auto eth0
iface eth0
address 192.168.1.100/24
gateway 192.168.1.1
post-up ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table rt1
post-up ip route add default via 192.168.1.1 dev eth0 table rt1 # actual gateway for this interface
post-up ip rule add from 192.168.1.100/32 table rt1
post-up ip rule add to 192.168.1.100/32 table rt1
# second interface with the vlan tag 5
auto eth0.5
iface eth0.5
address 192.168.5.100/24
post-up ip route add 192.168.5.0/24 dev eth0.5 src 192.168.5.100 table rt2
post-up ip route add default via 192.168.5.1 dev eth0.5 table rt2 # actual gateway for this interface
post-up ip rule add from 192.168.5.100/32 table rt2
post-up ip rule add to 192.168.5.100/32 table rt2
Note that if you want to add a third interface this way, you'll have to add another routing table.