login
Sat 25 of Nov, 2017 (05:23 UTC)

[root@madeira.eng.br ~]#

Linux - It is now safe to turn on your computer

atualizar cache imprimir

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:

  • 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:
Exemplo de VLAN.png


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@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

Reply to this comment

por , Mon 11 of Dec, 2006 (22:49 UTC)
Bom eu acredito que a proposta do nosso amigo aqui foi justamente essa!
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é
Reply to this comment

Desculpe a franqueza...

por , Sat 02 of Dec, 2006 (00:53 UTC)
Amigo, não adianta nada você implementar VLANs no roteador. A maior vantagem de se ter VLAN é justamente isolar os domínios de broadcast a nível de camada 2, diretamente nos switches. Implementando no roteador não impede que quem esteja em VLANs distintas possam se comunicar. Basta todos que estiverem no mesmo switch configurarem o IP na mão que suas VLANs foram pro saco.
Reply to this comment

Re: Desculpe a franqueza...

por , Fri 19 of Jul, 2013 (14:15 UTC)
Existe vantagem sim e, agora sinceramente quem discorda não deve conhecer sobre a topologia típica de 'router-on-a-sticky' tipicamente abordada em treinamentos sobre vlans, tanto Cisco como outros fornecedores. O que um roteador faz é exatamente o que foi abordado aqui, aliás a segmentação de domínios de colisão e broadcast não anula a possibilidade de roteamento entre redes logicamente distintas. E agora mais uma vez sinceramente, sugiro aos que fazem comentários 'ignorantes' que busquem informações antes de criticar a iniciativa de colegas, como é o caso deste que nos apresentou este material.
Reply to this comment

Desculpe a franqueza...

por , Sat 02 of Dec, 2006 (00:37 UTC)
Amigo, não adianta nada você implementar VLANs no roteador. A maior vantagem de se ter VLAN é justamente isolar os domínios de broadcast a nível de camada 2, diretamente nos switches. Implementando no roteador não impede que quem esteja em VLANs distintas possam se comunicar. Basta todos que estiverem no mesmo switch configurarem o IP na mão que suas VLANs foram pro saco.
Reply to this comment

Vantagem ?

por , Tue 28 of Nov, 2006 (19:47 UTC)
Carlos, Nessa situação não vejo vantagem de se utilizar as VLans, vc poderia
simplesmente cadastrar os Alias na interface de rede do Firewall que iria funcinar.
Reply to this comment

Re: Vantagem ?

por , Tue 28 of Nov, 2006 (22:01 UTC)
E mais um detalhe! :p
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! ;)
Reply to this comment

Re: Vantagem ?

por , Wed 29 of Nov, 2006 (17:36 UTC)
Não confundam as coisas. Quando se tem VLANs, há sim a possibilidade de isolar as redes, diferentemente de "alias" nas interfaces.
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.
Reply to this comment

Re: Vantagem ?

por , Tue 28 of Nov, 2006 (21:53 UTC)
E mais um detalhe! :p
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! ;)
Reply to this comment

Re: Vantagem ?

por , Mon 04 of Dec, 2006 (13:51 UTC)
Vc esta certo, vc não vai conseguir trabalhar com o alias no IPTABLES, por isso existe
o -s ou -d :) Ainda não vi vantagem em utilizar VLAN no linux, sem ter um switch nivel
3.
Reply to this comment

Re: Vantagem ?

por , Tue 28 of Nov, 2006 (21:37 UTC)
E mais um detalhe! :p
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! ;)