Por quero usar VLAN em meu servidor Linux ?
A implementação de Vlans nas redes comerciais vem se tornando uma prática adotada cada vez mais pelos administradores de redes em função dos benefícios que essa tecnologia nos proporciona.
Listo abaixo alguns exemplos de utilização dessa tecnologia em servidores Linux:
Como Roteador: Em uma topologia de VLAN existe dois elementos chaves: o switch e o roteador, o último garante a conectividade entre as vlans. Equipamentos com suporte aos protocolos 802.1q ou ISL custam caro, principalmente roteadores. Dessa forma, você pode configurar seu servidor Linux, como um roteador de VLAN's, usando apenas uma placa de rede que suporte o protocolo 802.1q, dessa forma você pode segmentar sua rede por setor, por áreas de produção, desenvolvimento, DMZ, etc...
Como Firewall: Com seu servidor atua como roteador, você pode implementar regras para a conectividade entre as redes montadas, permitindo tráfego entra a rede A e B e negado o tráfego entre a rede A e C
Como Proxy de Internet: Usando duas interfaces de rede, disponibilizando na primeira um link de internet e na segunda suas redes internas, onde o proxy faria o roteamento para a internet.
É muito comum, a implementação dos três exemplos acima em um mesmo servidor.
Configuração
Usaremos o aplicativo vconfig, disponível nas distribuições Linux atuais.
Vamos dar uma olhada em seu help:
[root@madeira fred]# /sbin/vconfig
Expecting argc to be 3-5, inclusive. Was: 1
Usage: add [interface-name] [vlan_id]
rem [vlan-name]
set_flag [interface-name] [flag-num] [0 | 1]
set_egress_map [vlan-name] [skb_priority] [vlan_qos]
set_ingress_map [vlan-name] [skb_priority] [vlan_qos]
set_name_type [name-type]
* The [interface-name] is the name of the ethernet card that hosts the VLAN you are talking about.
* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
* skb_priority is the priority in the socket buffer (sk_buff).
* vlan_qos is the 3 bit priority in the VLAN header
* name-type: VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
* bind-type: PER_DEVICE # Allows vlan 5 on eth0 and eth1 to be unique.
PER_KERNEL # Forces vlan 5 to be unique across all devices.
* FLAGS: 1 REORDER_HDR When this is set, the VLAN device will move the ethernet header around to make it look exactly like a real ethernet device. This may help programs such as DHCPd which read the raw ethernet packet and make assumptions about the location of bytes. If you don't need it, don't turn it on, because there will be at least a small performance degradation. Default is OFF.
Vamos fazer a implementação da rede abaixo:

Os endereços usados são:
VLAN 10 – 192.168.20.32/27
IP Gateway: 192.168.20.33 / Netmask: 255.255.255.224
IP Estação A: 192.168.20.34 / Netmask: 255.255.255.224
IP Estação B: 192.168.20.35 / Netmask: 255.255.255.224
VLAN 20 – 192.168.20.64/27
IP Gateway: 192.168.20.65 / Netmask: 255.255.255.224
IP Estação C: 192.168.20.66 / Netmask: 255.255.255.224
IP Estação D: 192.168.20.67 / Netmask: 255.255.255.224
VLAN 30 – 192.168.20.96/27
IP Gateway: 192.168.20.97 / Netmask: 255.255.255.224
IP Estação E: 192.168.20.98 / Netmask: 255.255.255.224
IP Estação F: 192.168.20.99 / Netmask: 255.255.255.224
Usando a máscara /27 obtemos 30 hosts por sub-rede.
Crie o script abaixo em seu roteador Linux e coloque ele para ser iniciando junto com o sistema operacional. Pode ser inserido /etc/rc.d/rc.local.
# Para que seu linux possa encaminhar os pacotes, é necessário habilitar o IP Forward
# Habilita Forward IP - Roteamento entre VLANS
echo 1 > /proc/sys/net/ipv4/ip_forward
# Carregando as VLANS na interface local eth0
# VLAN 10 - Vendas
/usr/bin/vconfig add eth0 10
/sbin/ifconfig eth0.10 192.168.20.33 up
# VLAN 20 - Compras
/usr/bin/vconfig add eth0 20
/sbin/ifconfig eth0.20 192.168.20.65 up
# VLAN 30 - Diretoria
/usr/bin/vconfig add eth0 30
/sbin/ifconfig eth0.30 192.168.20.97 up
# Definicao das rotas
# Vendas
route add -net 192.168.20.32 netmask 255.255.255.224 dev eth0.10
# Compras
route add -net 192.168.20.64 netmask 255.255.255.224 dev eth0.20
# Diretoria
route add -net 192.168.20.96 netmask 255.255.255.224 dev eth0.30
Depois de aplicadas essas configurações, vamos checar se as interfaces subiram:
[root@madeira fred]# /sbin/ifconfig
eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:0F:1F:FA:00:C4
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:1254527248 errors:81 dropped:0 overruns:0 frame:43
TX packets:1267477099 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:3132849804 (2987.7 Mb) TX bytes:2543778019 (2425.9 Mb)
Endereço de E/S:0xdcc0 Memória:dfbe0000-dfc00000
eth0.10 Encapsulamento do Link: Ethernet Endereço de HW 00:0F:1F:FA:00:C4
inet end.: 192.168.20.33 Bcast: 192.168.20.63 Masc:255.255.255.224
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:588138526 errors:0 dropped:0 overruns:0 frame:0
TX packets:587229970 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:3120340779 (2975.7 Mb) TX bytes:3298743016 (3145.9 Mb)
eth0.20 Encapsulamento do Link: Ethernet Endereço de HW 00:0F:1F:FA:00:C4
inet end.: 192.168.20.65 Bcast: 192.168.20.95 Masc:255.255.255.224
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:663736143 errors:0 dropped:0 overruns:0 frame:0
TX packets:677691818 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:1647603378 (1571.2 Mb) TX bytes:380649883 (363.0 Mb)
eth0.30 Encapsulamento do Link: Ethernet Endereço de HW 00:0F:1F:FA:00:C4
inet end.: 192.168.20.97 Bcast: 192.168.20.127 Masc:255.255.255.224
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:2652516 errors:0 dropped:0 overruns:0 frame:0
TX packets:2555271 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:830177192 (791.7 Mb) TX bytes:1521845585 (1451.3 Mb)
lo Encapsulamento do Link: Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
UP LOOPBACKRUNNING MTU:16436 Métrica:1
RX packets:33426876 errors:0 dropped:0 overruns:0 frame:0
TX packets:33426876 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:2459776553 (2345.8 Mb) TX bytes:2459776553 (2345.8 Mb)
Faça testes de ping conforme os exemplos abaixo.
Do Host A tente pingar no Host C e depois no HOST E
Do Host C tente pingar no Host A e depois no HOST E
Do Host E tente pingar no Host A e depois no HOST B
Concluímos a configuração das VLANS em nossa rede. Desse ponto em diante podemos iniciar a configuração do firewall e/ou do proxy, esses últimos não serão abordados pois não fazem parte do scopo desse artigo.