Resumo
# Criar uma VLAN 10 na interface eth0
ip link add link eth0 name eth0.10 type vlan id 10
# Atribuir um IP à VLAN
ip addr add 192.168.10.1/24 dev eth0.10
# Ativar a interface VLAN
ip link set dev eth0.10 up
Com esses três comandos, criamos uma VLAN 10 na interface eth0, atribuímos um IP e ativamos a interface.
Explicação detalhada sobre VLAN e o comando ip.
Se tem um comando extremamente útil em Linux referente a networking, esse é o comando IP. Ele é tão útil, e possui tantas opções, que a parte difícil deste post será focar apenas na criação de VLANs. Mas vamos lá.
Vimos acima o comando para criar a VLAN, vamos avaliar cada parâmetro individualmente:
ip link -
A palavra link informa ao comando ip que trabalharemos com link, que pode ser uma VLAN, um túnel.- add – Com add informamos ao comando ip que adicionaremos um link
- link eth0 – Aqui especificamos em qual interface vamos adicionar o link que estamos criando
- name eth0.10 – Aqui damos um nome ao link que estamos criando, no caso estamos criando um link chamado eth0.10. Poderia ser V10, vlan10, CAMERAS.
- type vlan – O tipo de link que estamos criando. O post não é sobre VLAN?
- id 10 – Seguindo a lógica, associamos o ID, ou tag, com a VLAN que estamos criando
Lendo o comando, estamos criando um novo link, associado ao link existente eth0, de nome eth0.10, do tipo VLAN e com ID 10, ou tag se preferir.
Os outros comandos são para atribuir um IP e subir a interface. Caso a sua interface não seja a eth0, altere de acordo ou, se estiver usando aquele padrão esquisito (ens33, enp4s3), siga as instruções deste post.
Para conferir se a VLAN foi criada corretamente, utilize um dos comandos abaixo:
# Exibir todas as interfaces VLAN criadas
ip link show
# Exibir detalhes sobre a VLAN criada
ip -d link show eth0.10
Se a VLAN foi criada corretamente, os comandos acima exibirão informações sobre a interface e seu estado atual.
Até agora vimos como criar uma interface VLAN, caso você queira removê-la, utilize os comandos abaixo:
# Desative a interface com:ip link set dev eth0.10 down
# Exclua a interface com:ip link delete eth0.10
⚠️ Importante
“As configurações feitas com o comando ip
são temporárias e serão perdidas após o reinício do sistema. Para tornar as VLANs permanentes, podemos configurar os arquivos do sistema, utilizando o arquivos interfaces ou netplan, mas antes temos que instalar o pacote vlan.
### /etc/network/interfaces ###
# Instale o pacote vlan
apt-get install vlan
# Edite o arquivo interfacesvim /etc/network/interfaces
# Acrescente as informações relativas a VLAN
auto vlan10
allow-hotplug vlan10
iface vlan10 inet static
vlan-raw-device eth1
address 192.168.10.1
netmask 255.255.255.0
### /etc/netplan/default.yaml
# Edite o arquivo correspondente do netplan
vim /etc/netplan/default.yaml
# Acrescente as informações abaixo, eth1 esta apenas como exemplo da identação
eth1:
dhcp4: no
dhcp6: no
addresses: [192.168.1.2/24]
vlans:
vlan10:
id: 10
link: eth1
addresses: [192.168.10.2/24]
# Reinicie o netplan com:
netplan generate
netplan apply
Para testar, rode um tcpdump com a opção -e na interface física onde a VLAN foi criada e confirme que o tráfego entra e sai com o ID de VLAN correto.
tcpdump -i eth1 -ne
tcpdump: verbose output suppressed, use -v[v]… for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes
23:31:42.646460 00:0c:29:44:d8:a2 > 00:0c:29:62:11:0a, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4 (0x0800), 192.168.10.2 > 192.168.10.1: ICMP echo request, id 760, seq 1, length 64
23:31:42.646485 00:0c:29:62:11:0a > 00:0c:29:44:d8:a2, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4 (0x0800), 192.168.10.1 > 192.168.10.2: ICMP echo reply, id 760, seq 1, length 64
23:31:46.116960 00:0c:29:44:d8:a2 > 00:0c:29:62:11:0a, ethertype IPv4 (0x0800), length 98: 192.168.1.2 > 192.168.1.1: ICMP echo request, id 761, seq 1, length 64
23:31:46.116981 00:0c:29:62:11:0a > 00:0c:29:44:d8:a2, ethertype IPv4 (0x0800), length 98: 192.168.1.1 > 192.168.1.2: ICMP echo reply, id 761, seq 1, length 64
O comando tcpdump -i eth1 -ne
permite visualizar o tráfego VLAN diretamente na interface física. Se a VLAN estiver configurada corretamente, os pacotes capturados exibirão a tag VLAN correspondente.
Caso você não tenha uma máquina Linux para testar, pode montar um laboratório utilizando o PNETLAB para isso, como o exemplo abaixo:

Finalizando
Existem outras formas de configurar VLAN, usando vconfig ou nmcli, por exemplo,e mesmo outras formas de persistência, no caso de sistemas baseados em Red Hat, mas este post é específico para o comando ip.
E aí? O que achou? Qual ferramenta você costuma usar para trabalhar com VLAN no Linux? Tem alguma dúvida ou sugestão? Deixe seu comentário!
Referências