Implementando Vlans em Linux
Criada por: Frederico Madeira, última modificação em: Mon 26 of Oct, 2009 (02:38 UTC)
Neste artigo, veremos como podemos desfrutar as vantagens de uma VLAN em sistemas operacionais Linux. Recomendamos a leitura de um artigo anterior, onde definimos e caracterizamos as VLANS. Ele pode ser encontrado em http://www.madeira.eng.br/wiki/index.php?page=VLAN
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:
É 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:
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.
Depois de aplicadas essas configurações, vamos checar se as interfaces subiram:
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.
Referências:
http://linux.about.com/library/cmd/blcmdl8_vconfig.htm
http://www.candelatech.com/~greear/vlan.html
http://www.linuxhorizon.ro/vlans.html
http://www.pop-pr.rnp.br/tiki-index.php?page=Roteadores+Vlans
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.
[root@madeira fred]#
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
; 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@oracleccenter 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.
Referências:
http://linux.about.com/library/cmd/blcmdl8_vconfig.htm
http://www.candelatech.com/~greear/vlan.html
http://www.linuxhorizon.ro/vlans.html
http://www.pop-pr.rnp.br/tiki-index.php?page=Roteadores+Vlans
Comentários
O que vai adiantar ter um roteador com Tags em sua interface em um switch
que não suporta VLANs e estações de trabalho que também não suportam VLANs!?
Nenhuma vantagem! A grande sacada dessa implementação é ter um switch que seja
capaz de criar vlans (interfaces em modo access e trunk) para poder separar as
redes! E ai sim ter um linux com uma interface Trunk como foi citado acima!
Acho que o exemplo do nosso amigo aqui foi muito válido! ;)
E eu também acho que deveriamos apoiar as pessoas que se esforçam para
colocar algum material na internet que seja útil, como o nosso amigo aqui fez
e não ficar criticando de forma a não cooperar e agregar ao trabalho disponibilizado!
Abraços,
André
Desculpe a franqueza...
Re: Desculpe a franqueza...
Desculpe a franqueza...
Vantagem ?
simplesmente cadastrar os Alias na interface de rede do Firewall que iria funcinar.
Re: Vantagem ?
Um alias não é interface!
Somente serve para que o host linux responda a ping ou coisas assim!
Você pode fazer um teste! Tenta fazer alguma regra de iptables utilizando
uma "interface" alias! "iptables -t filter -A INPUT -i eth0:1 -p tcp -j ACCEPT"!
Não vai funcionar! ;)
Re: Vantagem ?
E como foi muito bem explicado abaixo E acima, o broadcast consequentemente vai pro saco, isolado, coitado, hehehe..
Pelo menos em produção (o principal), as VLANs estão funcionando perfeitamente, e completamente isoladas.
Repito: alias é difernte de VLAN.
Carlos, bem simplificado e direto o artigo.Parabéns.
Abraços,
Adriano.
Re: Vantagem ?
Um alias não é interface!
Somente serve para que o host linux responda a ping ou coisas assim!
Você pode fazer um teste! Tenta fazer alguma regra de iptables utilizando
uma "interface" alias! "iptables -t filter -A INPUT -i eth0:1 -p tcp -j ACCEPT"!
Não vai funcionar! ;)
Re: Vantagem ?
o -s ou -d :) Ainda não vi vantagem em utilizar VLAN no linux, sem ter um switch nivel
3.
Re: Vantagem ?
Um alias não é interface!
Somente serve para que o host linux responda a ping ou coisas assim!
Você pode fazer um teste! Tenta fazer alguma regra de iptables utilizando
uma "interface" alias! "iptables -t filter -A INPUT -i eth0:1 -p tcp -j ACCEPT"!
Não vai funcionar! ;)