VLANs Privadas (PVLANs)

No Curso CCNP Switch, um dos tópicos que levanta mais dúvidas ainda é Private VLANs (ou PVLANs). O problema é que o material disponível sobre o assunto deixa um pouco a desejar em termos de objetividade. O objetivo deste post é tentar explicar o assunto de forma clara e concisa (será que vai dar?).

Comecemos pela RFC5517, que define as PVLANs. Notem que, apesar de existir uma RFC sobre o assunto, o protocolo é proprietário Cisco, ou seja, PVLANs criadas em switches Cisco não enxergam PVLANs em switches não-Cisco (se é que existe algum outro fabricante que trabalhe com este recurso – eu, sinceramente, desconheço).

A idéia por trás de PVLANs é relativamente simples. Como explica a RFC5517, em uma rede Ethernet comutada, temos um único domínio de broadcast, o que pode gerar problemas de segurança (usuários não autorizados acessando informações de usuários autorizados). Uma forma de resolver o problema é isolar em camada 2 os usuários preocupados com a segurança de seus dados associando a cada um destes usuários uma VLAN distinta. O problema é que o campo VLAN ID do cabeçalho de um frame Ethernet possui apenas 12 bits de extensão, o que é suficiente para a criação de um máximo (teórico) de 4094 VLANs, ou seja, apenas 4094 usuários poderiam, em tese, se beneficiar desta separação.

Private VLANs é uma solução Cisco que endereça este problema de escalabilidade no que se refere à resolver o problema acima mencionado. Basicamente, PVLANs são VLANs dentro de VLANs, ou VLANs “aninhadas”. Lembrem-se que VLANs são domínios de broadcast. PVLANs são a quebra destes domínios de broadcast em múltiplos sub-domínios (“sub-VLANs”) isolados. Por definição, membros de uma VLAN não podem se comunicar em L2 com membros de outra VLAN, ou seja, um elemento L3 (como um router) se faz necessário para permitir esta comunicação. Com PVLAns este conceito permanece.

PVLANs possuem 3 tipos de portas:

  • Promiscuous (P): Normalmente usadas para conexão de um elemento L3 (router). Este tipo de porta pode enviar e receber frames de qualquer outra porta da VLAN primária.
  • Isolated (I): Este tipo de porta pode se comunicar apenas com portas (P), ou seja, são portas “stub”.
  • Community (C): Este tipo de porta pode trocar frames com outras portas (C) na mesma sub-VLAN e com portas (P).

E podemos ainda ter 2 tipos distintos de PVLANs:

  • Isolated VLAN: Encaminha frames de portas (I) para portas (P). Como portas (I) não podem trocar frames umas com as outras, apenas UMA VLAN do tipo Isolated pode existir para conexão de todas as portas (I) com portas (P).
  • Community VLANs: Transportam frames entre portas (C) dentro de uma mesma sub-VLAN e de portas (C) para portas (P) da VLAN Primária.

Neste ponto, imagino que a pergunta que vocês devem estar se fazendo – ainda – é: “Por que diacho alguém vai precisar de PVLANs, quando existem tantas outras formas de prover segurança em termos de rede?”

PVLANs fazem muito sentido quando falamos de ambientes compartilhados, como um datacenter por exemplo, onde servidores de diversos clientes operam no mesmo ambiente físico em modo “co-location”. Existem outros usos, mas aí é de cada um identificar a necessidade de utilizar ou não o recurso 😉 .

Vamos fazer um exercício para verificar os conceitos e testar nosso entendimento. Observem o diagrama abaixo.

pvlan.jpg

Temos uma VLAN primária 100 e três VLANs secundárias (sub-VLANs) 101, 102 e 103, sendo que as duas primeiras são do tipo Community, e a 103 do tipo Isolated. Observem que a subrede IP usada é a mesma para todas as sub-VLANs. Na verdade, a associação de uma subrede ocorre por VLAN primária (no caso, a 100). Por isso, as sub-VLANs sempre usarão esta mesma subrede.

Máquinas associadas à sub-VLAN 101 podem se comunicar com outras máquinas associadas à mesma sub-VLAN e com o router. O mesmo vale para máquinas associadas à sub-VLAN 102. Máquinas associadas à sub-VLAN 103 apenas enxergam o router. Nada mais.

E como configuramos este cenário? Abaixo, o script:

Passo 1:

Vamos criar a VLAN primária 100 e as sub-VLANs (ou VLANs secundárias) 101, 102 e 103:

! Criando a VLAN primaria, que sera dividida para dar origem as outras 3
!
vlan 100
private-vlan primary
!
! Criando as VLANs secundarias Community 101 e 102
!
vlan 101
private-vlan community
!
vlan 102
private-vlan community
!
! Criando a VLAN secundaria Isolated 103
!
vlan 103
private-vlan isolated
!
! Associacao das VLANs secundarias 101, 102 e 103 a VLAN primaria 100
!
vlan 100
private-vlan assoc 101,102,103
!
end

Passo 2:

Agora, vamos associar as portas do switch às VLANs secundárias criadas. Observe que as portas pertencem à duas VLANs simultaneamente: VLAN primária (100) e VLAN Secundária (101, 102 ou 103).

!
! Community ports: community VLAN
!
interface range FastEthernet 0/2 - 3
switchport mode private-vlan host
switchport private-vlan host-association 100 101
!
interface range FastEthernet 0/4 - 5
switchport mode private-vlan host
switchport private-vlan host-association 100 102
!
! Isolated port: isolated VLAN
!
interface range FastEthernet 0/6 - 7
switchport mode private-vlan host
switchport private-vlan host-association 100 103
!
end

Passo 3:

Falta agora criar a porta Promiscuous (P), e fazer o mapeamento do downstream de acordo com o planejado. Lembrem-se que a VLAN Primária (100 no caso) é usada para enviar frames no sentido downstream para todas as portas (C) ou (I).

! Porta conectada ao router
!
interface FastEthernet 0/1
switchport mode private-vlan promisc
switchport private-vlan mapping 100 add 101,102,103
!
end

NOTA: É importante ressaltar que se você precisar configurar uma interface SVI neste switch (se ele for L3, claro), isso apenas pode ser feito na VLAN primária. Isso pelo simples motivo que todas as VLANs secundárias são “subordinadas” à VLAN primária e não funcionam sem ela. No nosso caso, a config ficaria algo assim:

interface Vlan 100
ip address 172.16.0.1 255.255.0.0

Espero que tenham gostado 😉 !

Abraço,

Marco Filippetti

Fontes consultadas:

http://blog.ine.com/2008/01/31/understanding-private-vlans/
http://tools.ietf.org/html/rfc5517
http://isc.sans.org/diary.html?storyid=8785

23 comentários

Pular para o formulário de comentário

  1. Mais uma aula do mestre!!!

    Esse blog é sensacional!!!!

  2. Muito pertinente. Estou estudando para a prova 642-813. Quando chegar neste capítulo, a compreensão será mais fácil. 😀
    Curiosamente este tema é pouco discutido por aqui, mas pode ser muito útil em determinados ambientes.

    Muito bom.

  3. Excelente!!!

  4. Poxa, já não basta a vlan ainda tem a pvlan(private vlan) kramba!!!
    Tirando isso, ótima explicação.

  5. Muito bom o artigo Marco, podiamos ter um falando de any-to-any VPN
    Abraços!

  6. Post interessante.

    Private VLANs, eu nunca tinha visto e nem lido sobre, só sabia que existia.

    Agora já tenho o conceito básico.

    Valeu Marco.

  7. Extreme tem PVLANs.
    Obrigado Marco por compartilhar mais essa aula de conhecimento. Como atualmente trabalho basicamente com Extreme e raramente com Cisco vou usar os conceitos e futuramente em meus estudos para o CCNP, vai ajudar muito esse post/aula. Muito obrigado.

    Abraços.

  8. Precisei pesquisar sobre isso há um bom tempo e na época me foi muito útil esse post: http://under-linux.org/blogs/vladrac/implementando-private-vlans-em-um-switch-cisco-373

    Abraços

  9. Excelente Post!

    Assim como o Sérgio F.S, não sabia que existia, mas já dá pra ter uma noção do assunto…
    Com certeza, irá facilitar quando estiver estudando pro CCNP.
    Valeu Marco!
    []’s

  10. @Fernando Avelino, tem um post sobre DMVPN, se ajudar 😉
    http://blog.ccna.com.br/2008/10/28/dmvpn/

  11. Excelente explicação!!

  12. show de bola demais…

  13. Vou dar uma olhada nesse artigo, mas na verdade eu quis dizer Group Encrypted Transport VPN / GETVPN, que a cisco diz ser um conceito revolucionário, mas pelo que eu andei vendo ele pode ser usado em conjunto com o DMVPN, eu achei esse paper abaixo falando do GETVPN, é que eu tinha buscado por esse termo no blog, vou dar uma lida com mais cuidado, valeu pela dica Marco 🙂

    http://www.cisco.com/en/US/prod/collateral/vpndevc/ps6525/ps9370/ps7180/GETVPN_DIG_version_1_0_External.pdf

    http://www.cisco.com/assets/cdc_content_elements/flash/cisco_ios_software/get_vpn_demo/demo.html

  14. SIm, o FORCE10 trabalha com esse protocolo.

  15. otimo post marco so agrega mais conhecimento abraço

  16. Bom !!!!!

  17. Marco, muito bom o artigo.
    Fabricantes como Extreme, Datacom, Keymile implementam o Double_Tagging (http://en.wikipedia.org/wiki/IEEE_802.1Q#Double_tagging) ou QinQ (http://en.wikipedia.org/wiki/IEEE_802.1ad) recentemente em uso por ISP’s em topologias de acesso metroethernet. A técnica é semelhante a essa versão proprietária Cisco pelo que observei.
    Abs.,

  18. Marco,parabéns.Demais este post.
    Karl Frederick BH-MG

  19. Excelente post…. o problema é encontrar LABS para por este assunto em prática… 🙁

  20. Fulvio, dá uma olhada no Packet life (http://packetlife.net/lab/)…

    Dê uma pesquisada sobre labs aqui no Fórum que tem boas discussões sobre o assunto também!

    Abs e bons estudos,
    Felipe Ferrugem!

    “Juntos somos ainda melhores!!!”

  21. Excelente, Marco! Fundamental para o CCNP Switch! =)

  22. Jóia! Mto massa!

  23. Olá Marcos! Gostaria de saber a diferença entre pvlan e qinq.

Deixe um comentário