Usando o Linux para Interligar VLANs
por
em 22-11-2009 às 09:58 (16384 Visualizações)
O uso de VLANs permite ao administrador isolar redes, separar usuários e facilita a isolação de problemas (se ocorrer algo em uma VLAN, não afeta as demais). No entanto as VLANs também criam ilhas isoladas que - de alguma forma - necessitam de um roteador para se interligarem.
Os switchs L3 permitem essa interconexão, porém possuem alto custo (apesar de ótima performance). Muitas vezes não é necessário algo de alta performance, principalmente quando se trata de acesso à Internet (que não necessita de muita banda, pois o backbone de Internet é normalmente o gargalo).
Sendo assim este texto explica como transformar um servidor Linux em um roteador capaz de interconectar multiplas VLANs e rotea-las para a Internet.
VLAN e 802.1Q
Se você não está familiarizado com VLANs e 802.1Q, recomendo que você leia antes os dois artigos abaixo:
http://under-linux.org/b1447-os-page...tras-das-vlans
http://under-linux.org/b1538-o-que-e...-e-quando-usar
Eles dão algumas dicas sobre quando as VLANs são uteis e explica o que é o 802.1Q e porque ele é importante para um roteador de VLANs.
Cenário do Exemplo
Para facilitar as explicações, vou utilizar o exemplo da figura abaixo. O switch da parte superior chamaremos de switch 1 e o de baixo será o switch 2. Vamos considerar que o administrador configurou o switch 1 conforme o Exemplo 2 do artigo de 802.1Q.
Neste caso a porta 24 seria conectada ao switch 2 e a porta 20 ao Linux roteador. Repare também que não existe nenhum computador da VLAN 55 no switch 2, afinal a porta 24 do switch 1 não está enviando a VLAN 55 para ele.
Todas as VLANs serão enviadas ao Linux através do VLAN tagging (802.1Q). Além disso ele será o default gateway de todas essas redes para que ele possa interligar todas e conecta-las à Internet.
Vamos então utilizar os seguintes endereços no Linux:
VLAN 1: IP 10.0.0.1 Máscara 255.255.255.0
VLAN 50: IP 192.168.1.1 Máscara 255.255.255.0
VLAN 55: IP 192.168.2.1 Máscara 255.255.255.0
Assim os equipamento da VLAN 1 tem IP 10.0.0.x com default gateway 10.0.0.1. Os da VLAN 50 usam IP 192.168.1.x com gateway 192.168.1.1 e os da VLAN 55 usam IP 192.168.2.x com gateway 255.255.255.0. Se for o caso, o Linux pode ser o servidor de DHCP dessas redes, mas isso já foge do escopo deste artigo.
A porta Eth0 do Linux será conectada ao switch e a Eth1 será a porta de saída para a Internet (ligada ao roteador que sai para a Internet).
A figura abaixo exemplifica essa rede. Repare que não desenhei todos os computadores (até porque só iria fazer o desenho ficar confuso), mas seriam dois switchs de 24 portas cada, aonde cada porta está em uma das 3 VLANs: 1, 50 ou 55.
http://under-linux.org/wiki/images/t...1q_exemplo.png
Configurando o Linux como Roteador das VLANs
Configurar o Linux para essa aplicação é relativamente simples, porém não é apenas uma tarefa, mas sim várias pequenas tarefas simples.
Em primeiro lugar, vamos considerar que o Linux já está conectado à Internet e navegando e teremos então apenas que habilitar o roteamento no Linux e configurar o VLAN Tag na Ethernet. Ou seja, não vamos neste exemplo detalhar a configuração da Eth1, apenas da Eth0.
Habilitando o Roteamento
O roteamento do Linux é chamado packet forwarding, para habilita-lo (se já não estiver habilitado) basta configurar o arquivo /etc/sysctl.conf com a seguinte linha:
net.ipv4.ip_forward = 1
Para habilitar o roteamento sem precisar reiniciar o Linux basta usar o comando:
echo 1 > /proc/sys/net/ipv4/ip_forward
Para verificar se o roteamento está habilitado, utilize o comando:
cat /proc/sys/net/ipv4/ip_forward
Se o resultado for "1" é porque o roteamento está habilitado.
Configurando a Eth0
Agora precisamos criar sub-interfaces na Eth0 para as VLANs. Para as VLANs 1, 50 e 55 iremos criar as sub-interfaces eth0.1, eth0.50 e eth0.55 (percebeu que a sub-interface é o número da VLAN?).
Então basta criar essas sub-interfaces e habilitar a VLAN nelas, algo muito simples. Vamos ao diretório /etc/sysconfig/network-scripts/ e copiar o arquivo ifcfg-eth0 três vezes, cada um com um nome diferente. Vamos chama-los ifcfg-eth0.1, ifcfg-eth0.50 e ifcfg-eth0.55 (novamente, reparou que o nome do arquivo é o nome da VLAN?).
O seu arquivo ifcfg-eth0 deve conter algo assim:
DEVICE=eth0
IPADDR=192.168.50.2
NETMASK=255.255.255.0
NETWORK=192.168.50.0
BROADCAST=192.168.50.255
GATEWAY=200.88.100.27
ONBOOT=yes
Não se preocupe se o conteúdo não for exatamente o mesmo. Na verdade, é bem capaz que seu arquivo tenha muito mais linhas, o importante é que o IPADDR não conflite com nenhum dos IPs das VLANs citados acima. O gateway tem que ser o IP do roteador de saída para a Internet, que deve estar na eth1 (não é o IP da eth1, é o IP do roteador conectado na eth1).
Basta agora editar os arquivos criados. O ifcfg-eth0.1 deve ficar assim:
DEVICE=eth0.1
IPADDR=10.0.0.1
NETMASK=255.255.255.0
NETWORK=10.0.0.0
BROADCAST=10.0.0.255
GATEWAY=200.88.100.27
ONBOOT=yes
VLAN=yes
O ifcfg-eth0.50 deve ficar assim:
DEVICE=eth0.50
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=200.88.100.27
ONBOOT=yes
VLAN=yes
O ifcfg-eth0.55 deve ficar assim:
DEVICE=eth0.55
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
GATEWAY=200.88.100.27
ONBOOT=yes
VLAN=yes
Pronto, para ativar as novas configurações basta digitar service network restart e a interface Eth0 já vai estar aceitando VLAN Tagging.
Testando
Para testar, primeiro conecte um cabo Ethernet da porta 20 do switch no Linux.
VLAN 1
Coloque um computador com IP 10.0.0.2 e default gateway 10.0.0.1 em uma porta do switch da VLAN1 (por exemplo porta 5). Esse PC deve ser capaz de acessar o Linux (IP 10.0.0.1) e navegar na Internet.
VLAN 50
Coloque um computador com IP 192.168.1.2 e default gateway 192.168.1.1 em uma porta do switch da VLAN1 (por exemplo porta 12). Esse PC deve ser capaz de acessar o Linux (IP 192.168.1.1) e navegar na Internet.
VLAN 55
Coloque um computador com IP 192.168.2.2 e default gateway 192.168.2.1 em uma porta do switch da VLAN1 (por exemplo porta 18). Esse PC deve ser capaz de acessar o Linux (IP 192.168.2.1) e navegar na Internet.
Como Funciona o Roteamento
Vamos ver alguns exemplos de como irão caminhar os pacotes. Para isso vamos escolher e dar nomes a 4 computadores. Vamos chama-los de 1, 2, 3 e 4 conforme a figura abaixo.
http://under-linux.org/wiki/images/2..._exemploii.png
O 1, 2 e 3 estão na VLAN 50 e o 4 está na VLAN 1. Eles estão configurados assim:
1: IP 192.168.1.10 máscara 255.255.255.0 e gateway 192.168.1.1
2: IP 192.168.1.220 máscara 255.255.255.0 e gateway 192.168.1.1
3: IP 192.168.1.52 máscara 255.255.255.0 e gateway 192.168.1.1
4: IP 10.0.0.80 máscara 255.255.255.0 e gateway 10.0.0.1
Vamos ver o primeiro caso: computador 1 falando com o 2. Até ai tranqüilo, tudo dentro do mesmo switch.
http://under-linux.org/wiki/images/t..._exemplo12.png
A seta indica que o tráfego vai direto do 1 para o 2.
Quando o 1 se comunica com o 3, é necessário passar pelo link entre os switchs. O switch de cima marca o pacote como sendo da VLAN 50, envia ao switch de baixo que permite então que ele chegue ao 3.
http://under-linux.org/wiki/images/t..._exemplo13.png
A coisa fica começa a ficar complexa quando o 1 tenta se comunicar com o 4 que está em outra VLAN. O 1 envia o pacote para seu default gateway (Linux), chega até ele taggeado como VLAN 50, o Linux roteia para a interface da VLAN 1, devolve ao switch (agora com tag VLAN 1) e é encaminhado para o switch de baixo, aonde chega ao computador 4.
http://under-linux.org/wiki/images/7..._exemplo14.png
E agora vamos ver a comunicação do computador 3 com o 4. Repare que ele passa duas vezes pelo link entre os switchs e isso é totalmente normal.
http://under-linux.org/wiki/images/t..._exemplo34.png
No entanto o tráfego tem que ser bem dimensionado para não sobrecarregar a interconexão entre os switchs. Quanto de tráfego será gerado entre o computador 3 e o 4? Se o tráfego for grande, podemos pensar em instalar um Linux no switch de baixo para fazer esse roteamento, no entanto repare que neste caso teremos dois roteadores para a VLAN 1 e VLAN 50 agregando mais complexidade. Uma configuração recomendada apenas para os bravos que gostem de emoções fortes e que compreendem **muito** bem os conceitos de roteamento.
Uma evolução futura dessa redes seria o uso de switchs L3 que iriam fazer o trabalho de roteamento. No entanto isso só seria indicado caso houvesse um tráfego muito grande (centenas de Mbps) entre as VLANs. O switch L3 nada mais é um roteador instalado dentro do switch (é como se o Linux viesse dentro do switch), no entanto a topologia seria rigorosamente a mesma.
Continuando
Agora você pode pensar em configurar o Linux como DHCP server para cada uma dessas sub-interfaces e talvez habilitar o firewall (iptables) para garantir a segurança entre elas. A partir de agora as interfaces ifcfg-eth0.1, ifcfg-eth0.50 e ifcfg-eth0.55 são praticamente iguais às interfaces eth0 ou eth1 que você usaria nessas configurações.
Comentários
+ Enviar Comentário