O objetivo deste artigo é mostrar como o Linux pode ser usado em uma configuração
com VLANs, assumindo o papel de roteador e permitindo um melhor controle das redes
locais. O uso de VLANs é algo relativamente comum hoje em dia, sendo esta
característica suportada por vários switches existentes no mercado. Entretanto, o seu uso
associado a máquinas Linux ainda não é muito difundido e merece ser explicado em
detalhes.
Com VLANs, ele poderia resolver alguns problemas, como o tráfego excessivo entre
subnets e o aumento da segurança em algumas setores da empresa. Navegando no
Google ele descobre inclusive que é possível utilizar uma máquina rodando Linux e
evitar a compra de um roteador ou de um switch excessivamente caro. O problema é
que este tal Linux não é um sistema operacional muito fácil de usar e, apesar de ele já
ter instalado alguns "tipos de Linux", em geral ele não sabe muito bem o que fazer
depois do login no KDE ou Gnome. Pobre administrador!
h
Existem várias boas razões para se usar VLANs:
Imagem:vlan_linux_1.png
X
Os quadros enviados pelas estações em geral não possuem nenhum tipo de suporte a
VLANs e são rotulados ao passarem por switches com uma configuração de VLAN
ativa. Isto irá requerer um processamento do quadro, com a inclusão do tag, recálculo
do FCS (Frame Check Sequence, um CRC de 32 bits situado ao final do quadro
ethernet, usado para verificação da integridade do quadro) e do campo de
preenchimento (padding, bytes adicionados para que o tamanho mínimo do quadro
ethernet seja obedecido). O procedimento inverso terá que ser feito ao se entregar um
quadro para uma estação destino que não é capaz de entender o protocolo 802.1Q. Na
Figura 2 pode-se ver esta operações de inclusão e remoção de rótulos, representados em
vermelho.
Imagem:vlan_linux_2.png
O processo de inclusão do tag irá depender do tipo de equipamento que se possui, sendo
que nem todos possuem os mesmos métodos. De acordo com a complexidade do
equipamento e da camada do modelo OSI/ISO na qual ele opera, métodos diferentes
podem ser usados. Entre os métodos mais comuns, tem-se:
Obviamente, este método pode ser bastante enfadonho quando o número de endereços
for grande e requer bastante configuração manual.
Tipos menos usuais mas bastante interessantes e previstos na norma 802.1Q são VLANs
definidas por protocolos de aplicação (por exemplo, o tráfego de email poderia ser feito
em uma VLAN enquanto o de FTP em outra), endereços de multicasting e tipos de
protocolos presente no quadro Ethernet (IP e IPX poderiam estar em VLANs diferentes,
já que isto pode ser previsto diretamente através do quadro Ethernet, via consulta ao
campo Protocol Type.
Imagem:vlan_linux_3.png
Imagem:vlan_linux_4.png
Foi usada uma configuração baseada em portas (Figura 5). As portas 3 e 4 foram
associadas à VLAN ID 10, a 5 e 6 à VLAN ID 20 e a 7 e 8 à VLAN ID 30. Note que
estas portas também foram marcadas como não rotuladas, isto é, untagged. Isto significa
que elas estão ligadas a equipamentos que usam quadros ethernet normais. Assim, todo
tráfego que se originar delas deve receber o TAG da VLAN ao entrar no switch e todo
quadro que for direcionado para elas deve ter o TAG de VLAN removido. A porta 1 foi
configurada como uma porta rotulada (tagged). Note que está porta pertence a todas as
outras VLANs definidas. Por ser rotulada, todos os quadros ethernet que saem ou
entram pela porta 1 possuem o o TAG de VLAN. Nesta porta deverá estar ligado o
roteador, rodando um kernel Linux com suporte a VLAN. Como todos os quadros são
rotulados, é possível distinguir o tráfego proveniente de cada VLAN.
Para não se ter um problema de performance caso o tráfego seja muito alto, é
interessante usar um switch que possua pelo menos uma porta de um gigabit,
associando o tráfego da porta 1 a ela e colocando no servidor uma placa de um gigabit.
Use placas comuns caso o switch não possua portas de um gigabit.
o
As opções packet socket e socket filtering são necessárias caso se deseje rodar um
servidor DHCP ou aplicativos como tcpdump. Devido às mudanças no quadro ethernet,
estes programas não irão mais funcionar sem estas opções habilitadas, já que esperam
um quadro ethernet tradicional. Se preferir, compile o suporte a VLAN diretamente no
kernel e não como módulo.
Será necessário instalar também os programas de modo de usuário para uso com
VLANs. No Debian, este pacote se chama vlan e pode ser instalado com
.)
. Ou então, baixe os fontes do programa [2], compile e instale.
c
A criação de VLANs em Linux passa pelo comando vconfig. âasicamente ele irá criar
novas interfaces de redes virtuais à partir de uma interface de rede real, atribuindo
números de VLANs diferentes para cada rede criada. A sintaxe básica do comando para
adicionar e remover interfaces de redes virtuais associadas a VLANs está a seguir:
Para simplificar, o script em bash vlan.sh, dado a seguir, pode ser usado para
automatizar todo o processo. Considere a interface eth0 como sendo a da rede interna,
com IP 10.0.1.1 e a interface eth1 como sendo a da rede externa, com IP 10.0.2.1. O
gateway default será considerado como 10.0.2.2. Todo o processo de configuração das
interfaces e VLANs está descrito no arquivo a seguir:
ö ))
*
ö%-.&
*o
$
ö)
/
!!)
012+(3
)&
454
6
*40"&
4
7!
88
*!
888888
*!
888888
5012+(""*
*!
888888
5012+(
9 *
5012+(""*
*!
888888
5012+(
9 *
5012+(""*:
*::!
888888
5012+(
9 *:
"""
*
;
&<
9"
==
6
*4>!&"&
4
*
;
&<
9"
""
*"
5012+(!*
5012+(!*
5012+(!*:
*"
"
==
6
*4&
*o
$
4
-
==
-
*
.?*@A""..<:.:?.8.,
"".'
.888888
.888888
*
.B%C?0@A""..<:.:?.2.?
"".'
.888888
.888888
*
.?*@A""..<:.:?.8 .,
"".'
.888888
.888888
*
.?*@A""..<:.:?.8.,
"".'
.888888
.888888
*:
.?*@A""..<: .:?.8.,
"".:'
.888888
.888888
.
)
"".7
.88
Note que a interface eth0 e suas derivadas, eth0.10, eth0.20 e eth0.30 possuem o mesmo
endereço de hardware. Perceba também que o roteamento entre placas foi ativado,
através da opção do kernel IP Forward:
ö*
;
&<
9"
ch
Para um exemplo realmente completo, seria bem vindo habilitar a atribuição automática
de IPs para as estações via DHCP em todas as VLANs. Isto pode ser feito sem grandes
problemas, uma vez que as interfaces de rede já estão adequadamente configuradas.
Instale um DHCP server (apt-get install dhcp3-server, no Debian), e use a seguinte
configuração mínima para o arquivo /etc/dhcp3/dhcpd.conf (personalize de acordo com
as suas necessidades):
"! !4
!!)4=
"! !
&
!)D
!!) =
"
!E=
!-
!7=
*&=
" =
)!
888888F
8<=
)"
""
88=
=
G
) !
888888F
8<=
)"
""
88=
=
G
):!
888888F
::8<=
)"
""
:88=
:=
G
+H?>20?%34*** :4
c +
A implementação de VLANs é ainda um tópico pouco explorado em Linux, mas com
um potencial enorme de utilização. Uma melhoria que pode ser adicionada é a
associação do roteador com regras de firewall, agregando segurança e controle no
acesso às sub-redes. Entretanto, dependendo da natureza da sua rede e do volume de
dados, um roteador mais potente e com arquitetura dedicada pode ser necessário.