FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD - Configurando Interfaces VLAN no FreBSD
Configurando Interfaces VLAN no FreBSD
Por Marcelo Lima   
16/12/2006

Vamos começar com um pouco de teoria sobre VLANS 

Uma rede local virtual, normalmente denominada de VLAN, é uma rede logicamente independente. Várias VLAN's podem co-existir em um mesmo comutador (switch). O protocolo predominante é o IEEE 802.1Q. Antes da introdução do 802.1q, o protocolo ISL da Cisco, uma variante do IEEE 802.10, foi um dos vários protocolos proprietários. O ISL é desaprovado em favor do 802.1q.

As primeiras VLAN's geralmente eram configuradas para reduzir o tamanho do domínio de colisão em um segmento Ethernet muito extenso para melhorar o desempenho. Quando os switch's descartaram este problema (porque eles não têm um domínio de colisão), as atenções se voltaram para a redução do domínio de broadcast na camada MAC. Dependendo do tipo de configuração, os usuários ganham mobilidade física dentro da rede. Um outro propósito de uma rede virtual é restringir acesso a recursos de rede sem considerar a topologia da rede, porém este método é questionável.

Redes virtuais operam na camada 2 do modelo OSI. No entanto, uma VLAN geralmente é configurada para mapear diretamente uma rede ou sub-rede IP, o que dá a impressão que a camada 3 está envolvida.

Enlaces switch-a-switch e switch-a-roteador são chamados de troncos. Um roteador ou switch de camada 3 serve como o backbone entre o tráfego que passa através de VLAN's diferentes.

Redes virtuais podem ser configuradas de várias formas;

  • Nível do protocolo, IP, IPX, LAT, etc.
  • Baseada no endereço MAC.
  • Baseada na sub-rede IP.
  • Baseada na porta, e portanto, baseada no mundo real, como em departamento de marketing versus finanças.

VLAN's podem ser estáticas, dinâmicas ou dependente da porta. Existem dois métodos de estabelecer uma VLAN: por marcação de quadro (frame-tagging) e por filtragem de quadro (frame-filtering). A marcação de quadro modifica a informação que está contida dentro do quadro da camada 2, de tal modo que os switch's podem encaminhar o tráfego da VLAN para as suas VLAN's de destino e voltar o quadro ao seu formato normal. A filtragem de quadro faz o switch procurar por um certo critério no quadro da camada 2 e usar este sistema de comparação para encaminhar o tráfego para sua VLAN e destino corretos.

Um dispositivo de camada 2 pode implementar VLAN's de três maneiras diferentes;

  • VLAN's abertas (Open VLANs) têm um banco de dados de endereço MAC único para todas as VLAN's.
  • VLAN's fechadas (Closed VLANs) têm um banco de dados de endereço MAC separado para cada VLAN.
  • VLAN's de modo mixado (Mixed Mode VLANs) podem ser configuradas como aberta ou fechada por VLAN.

VLAN's fechadas geralmente são consideradas mais seguras que VLAN's abertas.

Em equipamentos da Cisco, o VTP (VLAN Trunking Protocol) possibilita domínios de VLAN, os quais podem ajudar em tarefas administrativas. o VTP também permite "expurgo", assim, o tráfego de uma VLAN específica é direcionado apenas aos switch's que têm portas naquela VLAN.

Fonte: Wikipedia

 

Resumindo: Quando trabalhamos com vlans, podemos segmentar a rede para diminuir o tráfego broadcast compartilhado e segmentar de forma que por exemplo tenhamos uma vlan por serviço/aplicação. A vantagem de ter um Freebsd com interfaces vlans seria, utilizar a mesma interface física para transportar varios tags (vlan id), excluindo a necessidade de uma placa de rede para cada rede.

 

Configurando FreeBSD

 Primeiramente necessitamos levantar o módulo if_vlan ou para quem queira deixar este suporte nativamente no kernel.

Para habilitar o suporte a vlans sem ter q recompilar o kernel utilizaremos o comando abaixo:

 # kldload if_vlan

 Não podemos esquecer de adicionar a entrada if_vlan_load=”YES” no arquivo /boot/loader.conf

 Caso você queira compilar o suporte nativamente, adicione a entrada abaixo no seu arquivo de configuração e recompile o seu kernel:

 device vlan

 Depois do suporte a int vlans estar habilitado, vamos começar a configuração no Freebsd.

 Vamos utilizar 4 tags para a nossa configuração, 5, 10, 15 e 20, para facilitar vamos associar o tag ao nome da interface vlan, tag 5 (vlan5), tag 10 (vlan10), tag 15 (vlan15), tag 20 (vlan20).

Criando as interfaces:

# ifconfig vlan5 create
            # ifconfig vlan10 create
            # ifconfig vlan15 create
            # ifconfig vlan20 create

 Apenas para conferir se as interfaces foram criadas

 # ifconfig

A saída deverá ser algo como mostrado abaixo:

 vlan5: flags=8002<BROADCAST,MULTICAST> mtu 1500
                ether 00:00:00:00:00:00
                vlan: 0 parent interface: <none>

 vlan10: flags=8002<BROADCAST,MULTICAST> mtu 1500
                ether 00:00:00:00:00:00
                vlan: 0 parent interface: <none>

 vlan15: flags=8002<BROADCAST,MULTICAST> mtu 1500
                ether 00:00:00:00:00:00
                vlan: 0 parent interface: <none>

  vlan20: flags=8002<BROADCAST,MULTICAST> mtu 1500
                ether 00:00:00:00:00:00
                vlan: 0 parent interface: <none>

 Nossas interfaces ja estão criadas, agora vamos associa-las ao devido tag e a interface física.

 OBS: não é necessario a nome da int vlan ter o mesmo tag, por exemplo, pode ser criado a interface vlan0 e associado qualquer tag, criamos a vlan5 associada ao tag 5 para ficar facil de coomprender.

 Associando os tags:
 
            # ifconfig vlan5 vlan 5 vlandev fxp0
            # ifconfig vlan10 vlan 10 vlandev fxp0
            # ifconfig vlan15 vlan 15 vlandev fxp0
            # ifconfig vlan20 vlan 20 vlandev fxp0

 Pronto, os tags ja estao devidamente configurados e associados a interface física fxp0.

Agora, atribua os endereços ips nas interfaces vlans.

 # ifconfig vlan5 192.168.5.1 netmask 255.255.255.0 up
            # ifconfig vlan10 192.168.10.1 netmask 255.255.255.0 up
            # ifconfig vlan15 192.168.15.1 netmask 255.255.255.0 up

            # ifconfig vlan20 192.168.20.1 netmask 255.255.255.0 up

 A saída do ifconfig ficará como mostrado abaixo:

                vlan5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                    inet 192.168.5.1 netmask 0xffffff00 broadcast 192.168.5.255
                    inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
                    ether 00:0a:5e:53:f8:ec
                    media: Ethernet autoselect (100baseTX <full-duplex>)
                   
status: active
                    vlan: 5 parent interface: fxp0

    vlan10: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                    inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
                    inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
                    ether 00:0a:5e:53:f8:ec
                    media: Ethernet autoselect (100baseTX <full-duplex>)
                   
status: active
                    vlan: 10 parent interface: fxp0

    vlan15: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                    inet 192.168.15.1 netmask 0xffffff00 broadcast 192.168.15.255
                    inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
                    ether 00:0a:5e:53:f8:ec
                    media: Ethernet autoselect (100baseTX <full-duplex>)
                   
status: active
                    vlan: 15 parent interface: fxp0

     vlan20: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                    inet 192.168.20.1 netmask 0xffffff00 broadcast 192.168.20.255
                    inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
                    ether 00:0a:5e:53:f8:ec
                    media: Ethernet autoselect (100baseTX <full-duplex>)
                   
status: active
                    vlan: 20 parent interface: fxp0

             Nossas configurações já estão prontas, todas as int vlans configuradas com as tags associadas e com a interface física fxp0 devinida.

             Agora vamos colocar nossas configurações no rc.conf para nao perde-las quando o FreeBSD for rebootado.

            Adicionar no arquivo /etc/rc.conf as entradas abaixo:

            cloned_interfaces="vlan5 vlan10 vlan15 vlan20"
            ifconfig_vlan5="inet 192.168.5.1 netmask 255.255.255.0 vlan 5 vlandev fxp0"
            ifconfig_vlan10="inet 192.168.10.1 netmask 255.255.255.0 vlan 10 vlandev fxp0"
            ifconfig_vlan15="inet 192.168.15.1 netmask 255.255.255.0 vlan 15 vlandev fxp0"
            ifconfig_vlan20="inet 192.168.20.1 netmask 255.255.255.0 vlan 20 vlandev fxp0"

             Nossa configuração está concluída no lado do FreeBSD, vou colocar a configuração que deve ser realizada switchs cisco catalyst com o IOS mensionado abaixo:

Cisco Catalyst – IOS 12.2(25)SEE2

             Logue no switch com seu usuário e senha, entre em modo enable:

             Switch# enable

             Defina uma porta onde será conectado o FreeBSD com as nossas interfaces vlans, no nosso exemplo vamos escolher a porta FastEthernet 1.

            Entre em como de configuração

            Switch# configure terminal
            Switch (config)# interface FastEthernet 1/0/1

            Lembrando que a interface pode variar conforme o modelo do switch.

            Switch (config-if)# switchport trunk encapsulation dot1q
            Switch (config-if)# switchport mode trunk
            Switch (config-if)# switchport trunk allowed vlan 5,10,15,20
            Switch (config-if)# description “DESCRIÇÃO DA PORTA”

             Com estas configurações na porta estamos deixando apenas trafegar as vlans 5, 10, 15 e 20, caso queira adicionar mais uma vlan no trunk do switch, utilize o comando abaixo:

             Switch (config-if)# switchport trunk allowed vlan add 25

             Adicionamos a vlan 25 na porta do switch.

             Configure o restante das portas do switch em mode access conforme mensionado abaixo:

            Switch (config-if)# interface FastEthernet 1/0/2
            Switch (config-if)# switchport mode access
            Switch (config-if)# switchport access vlan 5

             Com isso a porta dois consequirá conversar com a interface vlan 5 do FreeBSD através da porta 1 do switch que esta configurada em mode trunk. Faça o mesmo com as outras portas definindo a vlan que deve ser acessada pela porta.

              Com isto finalizamos nosso how-to, espero ter ajudado, este tipo de configuração normalmente é utilizado em firewalls e roteadores, faça um calculo de tráfego para nao ter gargalo físico na placa de rede, se o tráfego for grande em cada vlan utilize uma placa gigabit de boa qualidade.

Dúvidas por favor entrem em contato:

Nome: Marcelo Lima

Email: Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo
MSN: Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo
CCNP – Cisco Certified Network Processional
NCDE – Nortel Certification Design Exper

Comentrios
Problemas com TAG
Por Sandro em 20/12/2006 10:27:14
Marcelo, estou tentando configurar as VLANs no FreeBSD 5.1 RELEASE, porm estou tendo problemas com os 4 bytes adicionais inserido na interface REALTECK. Sei que no uma placa de qualidade mas o que disponho neste momento. Haveria a possibilidade do driver da REALTECK suportar mais de 1500 bytes? Caso contrrio observei no seu tutorial que est utilizando uma placa da Intel, seria este o nico caminho? Muito obrigado pela ateno! Abraos! Sandro.
Por snap em 20/12/2006 16:17:15
cara, valor do mtu a interface fsica que vai setar na int vlan para voce, nao tem como setar mtu na mao, na interface fisica sim, na interface vlan nao.
Por Felipe em 20/04/2007 01:26:19
Problema: Amigos contrataram a digiweb ou localweb no lembro o nome agora. Para deixar um servidor de jogo numa maquina possante com windows 2003 server. 
 
Atravs do ip server do jogo e da porta. O Usurio se loga no programa do jogo que emulado em pol [uma aplicao server qtraves da porta 5003] 
 
O problema que 24h por dia maquinas zumbis quase 200 ips aleatrios pacotam este ip atraves da porta 5003 e o shard de jogo trava ou cai. 
 
O DC da digiweb ou localweb diz que nao pode fazer nada quanto a isso... 
 
A equipe que contratou os servidos de host da Digiweb ou Localweb para ser a empresa de hospedagem do servidor e do site possui um servico que o usuario pode ter acesso a sua conta dentro do shard de jogo[pol] atraves da porta 5002 ou seja, ele digita logim e senha e muda configuracoes de sua conta dendo do servidor de jogo pelo site. 
 
Pergunta: existe algum programa de servidor de proxy que a equipe responsavel pelo servidor de jogo, [no a empresa de hospedagem] possa instalar e configurar no servidor para que o usuario tivesse que entrar com logim e senha no site do jogo para que seu ip fosse liberado para logar no shard de jogo[pol] evitando assim os ataques?
Verso do IOS do Switch
Por Felipe em 29/05/2007 12:02:48
Caros amigos, 
 
Estou tendo alguns problemas no que se refere ao encapsulamento dot1q, estou configurando uma rede que ir prover os servios de dados e voz e tenho que configurar a porta trunk utilizando dot1q. O problema est que o modelo dos switch's de acesso o Catalyst 2950-24 Portas, utilizando a verso de IOS 12.1 (13) e ele no aceita os parametros de configurao de encapsulamento dot1q (Como se o equipamento no desse suporte a essa configurao) e no switch concentrador (3750) ele aceita (IOS 12.2...). A pergunta ... Essa verso de IOS d suporte a esse tipo de encapsulamento? A partir de qual verso que funciona? 
 
Desde j agradeo a ateno.
RE: Verso do IOS do Switch
Por Marcelo Lima em 05/06/2007 12:48:05
Felipe, a versao 12.1 nao tem o comando trunk encapsulation dot1q, por default ele encapsula isso, usa o comando show int trunk e veja qual o tipo de encapsulamento. 
2950 fala 802.1q :) 
 
Grato
insero de ip no swithc
Por Cesar Daldosso em 21/08/2007 09:36:05
Marcelo, preciso inserir um ip no meu switch 3750 para que o pessoal qualificado nos EUA configure o mesmo. os nmeros de IP eu j tenho na mo. 
Voc sabe qual a forma mais simples de se fazer isso? 
Att, 
Cesar
CISCO CATALYST CE-500
Por Carlos Flix em 21/09/2007 08:14:42
Adiquiri recentemente o equipamento acima mencionado mas, no como configura-lo. Pode me dar uma dica de onde encontrar? Ah, tenho outro problema, meu Ingles bsico.....


Comente!*
Nome:
E-mail
Homepage
Ttulo:
Comentrio:

Cdigo:* Code

ltima Atualizao ( 18/12/2006 )