VLAN no Juniper EX: access, trunk e interface IRB

Configurar VLAN no Juniper EX parece diferente de tudo que você viu no Cisco ou no Huawei, mas a lógica é a mesma: a VLAN existe com um nome e um número, cada porta entra nela como access ou trunk, e o gateway da sub-rede mora numa interface lógica. No Junos essa interface se chama IRB (integrated routing and bridging), o equivalente da SVI do Cisco e da Vlanif do Huawei.
Este guia usa a CLI ELS (Enhanced Layer 2 Software), que é a sintaxe dos switches EX atuais, como EX2300, EX3400 e EX4300, e também dos QFX. Os comandos foram conferidos na documentação da Juniper sobre bridging e VLANs e montados como cenário de laboratório, com as mesmas VLANs do post de VLAN e trunk no switch Cisco, para que os dois lados conversem.
Resposta rápida: VLAN no Juniper EX em cinco passos
- Crie as VLANs em
[edit vlans]com nome evlan-id. - Porta de cliente:
family ethernet-switching interface-mode accessevlan memberscom uma VLAN só. - Uplink:
interface-mode trunkevlan memberscom a lista entre colchetes. - VLAN sem tag no trunk:
native-vlan-idna interface física e a mesma VLAN emvlan members. - Gateway: endereço em
irb unit Nel3-interface irb.Nna VLAN. Aplique comcommit confirmede confira comshow vlans.
O cenário do laboratório
Um switch EX com quatro VLANs. A porta ge-0/0/5 atende um cliente na VLAN 20. A ge-0/0/47 é o trunk para um Catalyst e a xe-0/1/0 é o trunk para um switch Huawei. O próprio EX faz o roteamento entre as VLANs pelas interfaces IRB, uma por sub-rede.
| VLAN | ID | Gateway | Portas |
|---|---|---|---|
| GERENCIA | 10 | irb.10, 192.0.2.1/26 | trunk ge-0/0/47 e xe-0/1/0 |
| CLIENTES | 20 | irb.20, 198.51.100.1/24 | access ge-0/0/5 e os dois trunks |
| VOIP | 30 | irb.30, 203.0.113.1/26 | os dois trunks |
| NATIVA | 999 | sem IRB | native dos trunks, sem tráfego de usuário |

A VLAN 999 existe só para ser a nativa dos trunks. Deixar a VLAN 1 ou uma VLAN de produção como nativa é a receita para tráfego aparecer onde não devia quando alguém pluga um equipamento sem tag.
ELS ou CLI antiga: confira antes de copiar
A Juniper mudou a sintaxe de L2 dos switches EX. Os modelos e versões mais antigos usam a CLI anterior, que a documentação chama de non-ELS, e muito material na internet ainda mostra port-mode e a interface vlan.10 (chamada de RVI). Se o commit recusa os comandos deste guia, provavelmente o seu switch é dessa geração. A tabela resume as diferenças:
| Item | ELS (este guia) | CLI antiga |
|---|---|---|
| Modo da porta | interface-mode access|trunk | port-mode access|trunk |
| VLAN na porta | vlan members dentro da porta | vlan members ou vlans X interface |
| VLAN nativa | native-vlan-id na interface física | native-vlan-id dentro de ethernet-switching |
| Gateway L3 | irb.N e l3-interface | vlan.N e l3-interface |
O resto deste passo a passo de VLAN no Juniper assume ELS. Se o modo de configuração ainda é novidade, o guia de comandos Junos básicos explica configure, set, delete e o commit.
Criar cada VLAN no Juniper
No Junos a VLAN é um objeto com nome. O número 802.1Q é um atributo dele, o vlan-id. Em modo de configuração:
set vlans GERENCIA vlan-id 10 set vlans CLIENTES vlan-id 20 set vlans VOIP vlan-id 30 set vlans NATIVA vlan-id 999
Os nomes aparecem em toda saída de show, então escolha nomes que digam para que a VLAN serve. Um detalhe que pega quem vem do Huawei: vlan batch não existe aqui, cada VLAN no Juniper é criada com o próprio nome. Existe também a VLAN default, com ID 1, onde as portas de fábrica ficam.
Porta access: uma VLAN, quadros sem tag
A porta access recebe e envia quadros sem tag e coloca tudo numa VLAN só. É a porta de cliente, de servidor, de impressora:
set interfaces ge-0/0/5 description CLIENTE-LAB-05 set interfaces ge-0/0/5 unit 0 family ethernet-switching interface-mode access set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members CLIENTES
Linha a linha: a description registra o que está ligado ali. A family ethernet-switching na unit 0 transforma a porta em porta de switch; sem ela a porta é de roteamento. O interface-mode access deixa o modo explícito. Segundo a documentação, uma porta associada a uma única VLAN já funciona como access, mas escrever o modo evita dúvida para quem lê a configuração depois. O vlan members CLIENTES coloca a porta na VLAN 20; você pode usar o nome ou o número.
Porta que já estava em outra VLAN
Uma porta access aceita uma VLAN só. Se ela já tinha outro membro, o commit falha. Veja o que existe e apague a lista antes de definir a nova:
show configuration interfaces ge-0/0/5 | display set delete interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members
O | display set mostra a configuração da porta no formato de comandos set, pronto para comparar. Depois do delete, aplique de novo o vlan members.
Porta trunk: várias VLANs marcadas
O trunk leva várias VLANs no mesmo cabo, cada quadro com a tag 802.1Q. É o uplink entre switches, a ligação com o roteador de borda e a subida da OLT. A configuração da VLAN no Juniper em trunk fica assim:
set interfaces ge-0/0/47 description TRUNK-SW-CISCO set interfaces ge-0/0/47 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/47 unit 0 family ethernet-switching vlan members [ GERENCIA CLIENTES VOIP ]
A lista entre colchetes aceita nomes ou IDs. Só passam as VLANs listadas: ao contrário do Cisco, o trunk não libera tudo por padrão. Existe vlan members all, mas listar as VLANs deixa o trunk sob controle. Para acrescentar uma VLAN depois, rode outro set com o nome dela: o Junos soma ao que já existe, sem apagar os outros membros.
native-vlan-id: a VLAN sem tag no trunk
No ELS, o trunk aceita quadros de controle sem tag, mas descarta quadros de dados sem tag. Para receber tráfego sem tag numa VLAN, a documentação pede duas coisas: o native-vlan-id na interface física e a porta como membro dessa VLAN.
set interfaces ge-0/0/47 native-vlan-id 999 set interfaces ge-0/0/47 unit 0 family ethernet-switching vlan members NATIVA
Repare que o native-vlan-id fica em set interfaces ge-0/0/47, fora da unit 0. Esquecer a segunda linha é o erro mais comum: a VLAN nativa fica configurada, mas a porta não pertence a ela e o tráfego sem tag continua sendo descartado.
Para o Huawei, o trunk xe-0/1/0 segue o mesmo modelo, agora com IDs no lugar dos nomes:
set interfaces xe-0/1/0 description TRUNK-SW-HUAWEI set interfaces xe-0/1/0 native-vlan-id 999 set interfaces xe-0/1/0 unit 0 family ethernet-switching interface-mode trunk set interfaces xe-0/1/0 unit 0 family ethernet-switching vlan members [ 10 20 30 999 ]
Interface IRB: o gateway da VLAN no Juniper
A IRB é uma interface lógica com uma unidade por VLAN. Cada unidade recebe o endereço do gateway, e o l3-interface amarra a VLAN à unidade:
set interfaces irb unit 10 family inet address 192.0.2.1/26 set interfaces irb unit 20 family inet address 198.51.100.1/24 set interfaces irb unit 30 family inet address 203.0.113.1/26 set vlans GERENCIA l3-interface irb.10 set vlans CLIENTES l3-interface irb.20 set vlans VOIP l3-interface irb.30
O número da unidade não precisa ser igual ao ID da VLAN, mas usar o mesmo número poupa muito tempo na hora de ler a configuração: irb.10 é o gateway da VLAN 10, e pronto. Com as três IRB configuradas, cada VLAN no Juniper ganha seu gateway e o switch roteia entre as sub-redes sem precisar de roteador externo. Os hosts da VLAN 20 usam 198.51.100.1 como gateway padrão.
A IRB só fica up quando a VLAN tem pelo menos uma porta ativa. Se o show interfaces irb terse mostra a unidade em down, olhe primeiro as portas da VLAN, não a IRB.
Aplicar sem perder o acesso
Se você acessa o switch pela VLAN de gerência e mexe no trunk que a transporta, um erro corta a sessão. Revise, valide e aplique com retorno automático:
show | compare commit check commit confirmed 5 commit
O show | compare mostra só o que mudou. O commit check valida sem aplicar. O commit confirmed 5 aplica e desfaz sozinho em 5 minutos se você não confirmar com outro commit. O post de commit confirmed e rollback no Junos detalha esse mecanismo.
Verificação: show vlans e tabela de MAC
Depois do commit, os comandos de conferência da VLAN no Juniper, todos no modo operacional:
show vlans show ethernet-switching interfaces show ethernet-switching table show interfaces irb terse show arp
O show vlans lista cada VLAN com o ID e as portas. O asterisco indica porta ativa. Saída de exemplo do laboratório:
Routing instance VLAN name Tag Interfaces
default-switch CLIENTES 20
ge-0/0/5.0*
ge-0/0/47.0*
default-switch GERENCIA 10
ge-0/0/47.0*
default-switch NATIVA 999
ge-0/0/47.0*
default-switch VOIP 30
ge-0/0/47.0*
default-switch default 1O show ethernet-switching interfaces mostra, por porta lógica, as VLANs, o estado do STP e a coluna Tagging: untagged na porta access e tagged nas VLANs do trunk. O show ethernet-switching table é a tabela de MAC aprendidos (D indica MAC dinâmico; omiti a legenda e as últimas colunas):
Ethernet switching table : 3 entries, 3 learned Routing instance : default-switch Vlan MAC MAC Age Logical name address flags interface CLIENTES 00:00:5e:00:53:05 D - ge-0/0/5.0 CLIENTES 00:00:5e:00:53:21 D - ge-0/0/47.0 GERENCIA 00:00:5e:00:53:0a D - ge-0/0/47.0
Se o MAC do cliente aparece na VLAN certa e na porta certa, o L2 está bom. Daí para cima é IRB e roteamento: show interfaces irb terse mostra as unidades com endereço e estado, e show arp confirma que o switch resolveu o endereço dos hosts.
Trunk do Juniper com Cisco e Huawei
Um trunk só funciona quando os dois lados concordam em três coisas: quais VLANs passam, qual VLAN vai sem tag e o tipo de porta. Do lado Cisco, o Gi1/0/48 fica assim:
SW1# configure terminal SW1(config)# interface GigabitEthernet1/0/48 SW1(config-if)# switchport mode trunk SW1(config-if)# switchport nonegotiate SW1(config-if)# switchport trunk native vlan 999 SW1(config-if)# switchport trunk allowed vlan 10,20,30,999 SW1(config-if)# end SW1# show interfaces trunk
O switchport nonegotiate desliga o DTP, que o Junos não fala. A native 999 casa com o native-vlan-id 999 do EX. Do lado Huawei, o equivalente é o pvid do trunk, e a VLAN 1 sai da lista:
system-view vlan batch 10 20 30 999 interface XGigabitEthernet0/0/1 port link-type trunk port trunk pvid vlan 999 undo port trunk allow-pass vlan 1 port trunk allow-pass vlan 10 20 30 999 quit display port vlan XGigabitEthernet0/0/1
A tabela de equivalência ajuda quando você alterna entre os três fabricantes no mesmo dia:
| Item | Junos (ELS) | Cisco IOS | Huawei VRP |
|---|---|---|---|
| Criar VLAN | set vlans NOME vlan-id 20 | vlan 20 | vlan batch 20 |
| Porta access | interface-mode access | switchport mode access | port link-type access |
| VLAN da access | vlan members | switchport access vlan | port default vlan |
| Trunk | interface-mode trunk | switchport mode trunk | port link-type trunk |
| VLANs do trunk | vlan members [ ... ] | switchport trunk allowed vlan | port trunk allow-pass vlan |
| VLAN nativa | native-vlan-id + membro | switchport trunk native vlan | port trunk pvid vlan |
| Gateway | irb.N | interface Vlan N | interface Vlanif N |
Se o uplink tiver mais de um cabo, monte primeiro o agregado (veja LACP no Juniper) e aplique o trunk na interface ae, não nas portas membro. Quando as VLANs de dois clientes colidem no mesmo trunk, a saída é encapsular ou traduzir, assunto do post de QinQ e VLAN translation.
Erros comuns com VLAN no Juniper
- Commit recusado na porta access: a porta já tem outra VLAN em
vlan members. Apague a lista e defina de novo. - Tráfego sem tag some no trunk: o
native-vlan-idfoi configurado, mas a porta não é membro da VLAN nativa. - Comandos não existem: o switch usa a CLI antiga. Procure
port-modeevlan.Nna documentação do modelo. - irb.20 down: nenhuma porta ativa na VLAN 20, ou faltou o
l3-interfacena VLAN. - MAC aparece, ping no gateway falha: host com máscara ou gateway errados, ou a IRB com endereço de outra sub-rede.
- Native diferente nos dois lados: o quadro sem tag cai em VLANs diferentes em cada switch. Confira
native vlanno Cisco epvidno Huawei. - VLAN some do trunk depois de editar: alguém usou
deleteemvlan membersinteiro. Para tirar uma VLAN, apague só aquele membro.
Perguntas frequentes
Qual a diferença entre IRB e Vlanif?
Nenhuma na função: as duas são a interface L3 de uma VLAN, onde fica o gateway. No Junos ela se chama irb.N e é ligada à VLAN pelo l3-interface; no Huawei é a Vlanif N, e no Cisco, a interface Vlan N.
Posso usar o ID em vez do nome em vlan members?
Pode. A documentação mostra os dois formatos, inclusive listas entre colchetes. O show vlans sempre exibe o nome, então nomes claros facilitam a leitura.
O trunk do Juniper passa todas as VLANs por padrão?
Não. Só passam as VLANs listadas em vlan members. Isso é diferente do Cisco, onde o trunk libera todas até você restringir com allowed vlan.
Preciso de native VLAN no trunk?
Só se o equipamento do outro lado manda tráfego sem tag que precisa ser aceito. Entre switches de provedor, o normal é cada VLAN passar marcada no trunk, com uma nativa vazia, como a 999 deste guia.
Como configurar VLAN no Juniper que ainda usa a CLI antiga?
A lógica é a mesma, mas a sintaxe muda: port-mode no lugar de interface-mode e vlan.N no lugar de irb.N. Consulte o guia do seu modelo antes de aplicar.
Conclusão
Montar VLAN no Juniper EX com ELS segue sempre a mesma ordem: criar a VLAN com nome e ID, colocar as portas como access ou trunk em family ethernet-switching, tratar a nativa com native-vlan-id e membro, e subir o gateway numa unidade da IRB. A conferência cabe em dois comandos: show vlans e show ethernet-switching table.
Na integração com Cisco e Huawei, o que mais quebra é a VLAN nativa diferente entre os lados e a VLAN esquecida na lista do trunk. Feche esses dois pontos e a VLAN no Juniper conversa com qualquer switch 802.1Q.
