IPv6 na ONU Huawei: WAN PPPoE dual stack e prefixo delegado

O concentrador já entrega prefixo, o trânsito já fala IPv6, e mesmo assim o cliente abre um site de teste e vê só IPv4. Na maioria das vezes o problema está na última peça: o IPv6 na ONU Huawei não foi ligado. Quando a ONU trabalha em modo roteador, ela é quem disca o PPPoE, recebe o prefixo e anuncia a rede para os aparelhos da casa. Se a WAN dela estiver configurada só para IPv4, o resto da rede pode estar perfeito que o IPv6 não chega no celular do cliente.
Na minha rede, o IPv6 das ONUs é ligado pelo ACS, sem ninguém entrar em ONU por ONU. Este guia mostra os dois caminhos: a interface web, para entender cada campo e resolver um caso isolado, e os parâmetros TR-069 no GenieACS, para aplicar em toda a base. No fim, como conferir pela OLT e no computador do cliente. Se precisar revisar os conceitos antes, o post sobre o que é IPv6 cobre a base. Os exemplos usam o prefixo de documentação 2001:db8::/32.
Resposta rápida: como ligar o IPv6 na ONU Huawei
- Na WAN de internet (PPPoE, modo Route WAN), mude o Protocol Type para IPv4/IPv6.
- Em Prefix Acquisition Mode, escolha DHCPv6-PD: é por ele que o BNG entrega o prefixo do cliente.
- Em IP Acquisition Mode, escolha Automatic se o BNG entrega endereço global na WAN, ou None se a WAN fica só com link-local.
- Na LAN (DHCPv6 Server Configuration), confira o Parent prefix apontando para a WAN de internet e use SLAAC para os aparelhos.
- Habilite a rota padrão IPv6 pela WAN de internet.
- Pelo GenieACS, o mesmo resultado sai de
X_HW_IPv6Enablee dos objetosX_HW_IPv6.IPv6AddresseX_HW_IPv6.IPv6Prefixda WANPPPConnection. - Confira na OLT com
display ont wan-info: IPv6 switch: Enable e o Prefix preenchido.
O que a ONU precisa para entregar IPv6
Com IPv4, a ONU recebe um endereço na WAN e faz NAT para a casa inteira. Com IPv6 a conta muda: não há NAT, e cada aparelho do cliente precisa de endereço global próprio. Por isso a ONU precisa de um bloco inteiro para distribuir, e não só de um endereço. Esse bloco é o prefixo delegado, entregue pelo BNG por DHCPv6-PD dentro da sessão PPPoE.
Ligar o IPv6 na ONU Huawei é, na prática, acertar cinco peças. Se faltar uma, o cliente fica sem IPv6 ou com um IPv6 que não navega.
| Peça | O que faz | Onde fica na ONU |
|---|---|---|
| WAN IPv6 ligada | A sessão PPPoE negocia IPv6 além do IPv4 | Protocol Type IPv4/IPv6 |
| Prefixo delegado (PD) | O BNG entrega um bloco, como um /56, para a rede do cliente | Prefix Acquisition Mode DHCPv6-PD |
| Endereço da WAN | Opcional: endereço global na própria WAN (numbered) ou só link-local (unnumbered) | IP Acquisition Mode |
| RA na LAN | A ONU anuncia um /64 do prefixo e se coloca como gateway | DHCPv6 Server Configuration |
| Rota padrão IPv6 | Tráfego IPv6 sai pela WAN de internet | Default IPv6 Route Configuration |

O lado do BNG fica fora deste post. A configuração do concentrador, com pool de PD e o tamanho do prefixo por cliente, está no guia de IPv6 no PPPoE com prefixo delegado. Aqui eu parto do princípio de que o BNG já entrega prefixo para uma sessão de teste.
Configuração do IPv6 na ONU Huawei pela interface web
Os nomes abaixo são os da referência da Huawei para a linha HG8145V5 e EG8145V5. Firmwares mais antigos, como os da HS8546 v2, mudam a posição dos menus e alguns rótulos, mas os campos costumam ser os mesmos. Faça o teste numa ONU de bancada ou num cliente que aceite uma queda rápida: salvar a WAN derruba e refaz a sessão PPPoE.
WAN: dual stack e DHCPv6-PD
Em Advanced Configuration > WAN Configuration, abra a WAN de internet que já funciona em IPv4 e altere os campos:
| Campo | Valor | Por quê |
|---|---|---|
| Encapsulation Mode | PPPoE | O mesmo da WAN IPv4 atual |
| Protocol Type | IPv4/IPv6 | Liga o dual stack na mesma sessão |
| Mode | Route WAN | Em Bridge WAN, quem faz IPv6 é o roteador do cliente |
| Service List | INTERNET (ou TR069_INTERNET) | Mantenha o que a WAN já usa |
| Prefix Acquisition Mode | DHCPv6-PD | Pede o prefixo ao BNG |
| IP Acquisition Mode | Automatic ou None | Automatic para WAN numbered, None para unnumbered |
Um detalhe de firmware: versões antigas ofereciam RA ou Auto em Prefix Acquisition Mode. Segundo a Huawei, a partir da V300R019C00/V500R019C00 esses valores viram DHCPv6-PD na atualização. Se você achar uma ONU antiga com RA, é por isso.
Numbered ou unnumbered
O IP Acquisition Mode decide se a WAN da ONU ganha endereço global próprio. Em numbered, a WAN recebe um endereço global, por DHCPv6 ou SLAAC, conforme o flag M do RA que o BNG manda. A Huawei recomenda Automatic nos dois casos. Em unnumbered, a WAN fica só com link-local e todo o endereço global da casa sai do prefixo delegado. Nesse caso o modo é None.
A documentação da Huawei recomenda numbered, porque o endereço global na WAN facilita gerência e diagnóstico. Na minha rede a WAN é unnumbered, e funciona: o cliente navega pelo prefixo delegado, e a gerência da ONU continua pelo TR-069 na WAN de gestão. O que se perde é poder pingar a WAN IPv6 da ONU de fora. Escolha conforme o que o seu BNG entrega.
LAN: prefixo, RA e DNS
Em LAN Configuration > DHCPv6 Server Configuration fica o que a ONU anuncia para dentro de casa. O endereço de gerência IPv6 da ONU na LAN é fe80::1 por padrão, e é ele que aparece como gateway nos aparelhos.
| Campo | Valor | Observação |
|---|---|---|
| Parent prefix | A WAN de internet | Vazio = a LAN fica sem prefixo |
| Child prefix mask | Qual /64 do /56 vai para a LAN | Necessário quando o prefixo recebido é mais curto que /64, como um /56 |
| Address/Prefix assignment mode | SLAAC | Os aparelhos montam o endereço pelo RA |
| Other information assignment mode | DHCPv6 ou SLAAC | Por onde vai o DNS IPv6 |
| ULA Mode | Prohibit | A própria Huawei recomenda desligar |
Prefiro SLAAC para endereço porque o Android não pega endereço por DHCPv6, só por SLAAC. Com DHCPv6 puro no endereço, o celular do cliente fica sem IPv6 global. Se o BNG entrega um /56, a ONU usa um /64 dele na LAN e o Child prefix mask escolhe qual. Os outros /64 ficam livres para uma segunda rede, se o modelo suportar.
Rota padrão IPv6
Em Route > Default IPv6 Route Configuration, habilite a rota padrão e aponte para a WAN de internet. Se a ONU tiver mais de uma WAN com IPv6, como TR-069 ou VoIP, sem isso o tráfego pode tentar sair pela WAN errada. A própria Huawei lembra que a WAN precisa ter obtido endereço antes de a rota padrão funcionar.
Parâmetros IPv6 via TR-069 no GenieACS
Entrar ONU por ONU não escala. Com as ONUs falando com o ACS, o IPv6 na ONU Huawei vira três parâmetros na WAN PPPoE. São parâmetros proprietários da Huawei, com prefixo X_HW_, dentro de WANPPPConnection. Se o seu GenieACS ainda não está no ar, o guia de GenieACS e TR-069 na ONU Huawei mostra a instalação e a lógica de presets e provisions.
| Equivalente provável na web | Parâmetro TR-069 | Valor que eu uso |
|---|---|---|
| Protocol Type IPv4/IPv6 | ...WANPPPConnection.N.X_HW_IPv6Enable | true |
| IP Acquisition Mode None | ...X_HW_IPv6.IPv6Address.1.Origin | None |
| Prefix Acquisition Mode DHCPv6-PD | ...X_HW_IPv6.IPv6Prefix.1.Origin | PrefixDelegation |
Os parâmetros e os valores da coluna do meio são os do provision que roda no meu ACS. A coluna da web é uma correspondência deduzida pelo comportamento, não um mapeamento publicado pela Huawei, e os nomes mudam entre modelos e firmwares. Confirme no seu firmware/ACS: configure uma ONU pela web, leia a árvore dela no GenieACS e compare antes de aplicar em massa.
O provision que liga o IPv6 na ONU Huawei em toda a base
Eu coloquei a regra no provision default, o que vem de fábrica no GenieACS e roda em todo inform. Este é o trecho de IPv6:
const now = Date.now();
const PPP = "InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*" +
".WANPPPConnection.*";
// liga o IPv6 em toda WAN PPPoE da ONU
declare(PPP + ".X_HW_IPv6Enable", {value: now}, {value: true});
// exatamente um objeto de endereço e um de prefixo por WAN
declare(PPP + ".X_HW_IPv6.IPv6Address.*", null, {path: 1});
declare(PPP + ".X_HW_IPv6.IPv6Address.*", {path: now});
declare(PPP + ".X_HW_IPv6.IPv6Prefix.*", null, {path: 1});
declare(PPP + ".X_HW_IPv6.IPv6Prefix.*", {path: now});
// WAN sem endereço global; o prefixo vem por DHCPv6-PD
declare(PPP + ".X_HW_IPv6.IPv6Address.*.Origin", {value: 1},
{value: "None"});
declare(PPP + ".X_HW_IPv6.IPv6Prefix.*.Origin", {value: 1},
{value: "PrefixDelegation"});Linha a linha. O PPP usa curingas em WANDevice, WANConnectionDevice e WANPPPConnection, porque o índice da WAN de internet muda de modelo para modelo e de provisionamento para provisionamento. O primeiro declare lê o X_HW_IPv6Enable a cada inform e grava true se a ONU disser outra coisa.
Os pares com {path: 1} garantem que exista exatamente uma instância de IPv6Address e uma de IPv6Prefix: o GenieACS cria a que faltar e apaga as que sobrarem. A linha seguinte, com {path: now}, atualiza a árvore para o ACS saber o índice. As duas últimas gravam a origem do endereço (None, WAN unnumbered) e do prefixo (PrefixDelegation, DHCPv6-PD).
Duas lições de produção. Primeiro, o {value: 1} nas origens faz o ACS ler o valor só uma vez e não a cada inform, o que economiza tráfego numa base grande. Segundo, ONU recém-instalada precisa informar com frequência no primeiro dia: com o intervalo em 300 segundos, o IPv6 liga poucos minutos depois de a WAN aparecer. Com uma hora de intervalo, o técnico vai embora e o cliente fica sem IPv6 até o próximo inform.
WANIPConnection, e o provision precisa de uma variação para ela. Confirme no seu firmware/ACS se a árvore X_HW_IPv6 existe nesse objeto.Ligar o IPv6 em uma ONU pela NBI
Para um caso isolado, sem esperar o inform, dá para mandar a tarefa direto pela NBI. Primeiro as variáveis e uma atualização da árvore de WAN, para descobrir o índice da WAN PPPoE:
ACS=http://127.0.0.1:7557 ONU=00259E-EG8145V5-48575443A1B2C3D4 W=InternetGatewayDevice.WANDevice.1.WANConnectionDevice
curl -i "$ACS/devices/$ONU/tasks?connection_request" -X POST --data '{"name": "refreshObject", "objectName": "'$W'"}'Com o índice em mãos, aqui o WANConnectionDevice 2, o setParameterValues liga o IPv6. O connection_request pede à ONU que se conecte ao ACS na hora:
P=$W.2.WANPPPConnection.1
curl -i "$ACS/devices/$ONU/tasks?connection_request" -X POST --data "{\"name\": \"setParameterValues\", \"parameterValues\": [[\"$P.X_HW_IPv6Enable\", true]]}"Uma nota de segurança: com IPv6 ligado, confira se a página web da ONU ficou acessível pela WAN. O post sobre acesso remoto à ONU Huawei mostra como testar e bloquear esse acesso.
Verificar o IPv6 na ONU Huawei pela OLT
A OLT não configura o IPv6 da ONU neste cenário, mas mostra o que a ONU reporta da WAN. O comando roda no modo config, fora da interface gpon:
enable config display ont wan-info 0/1 0 1
A saída traz um bloco por WAN. Este é o trecho da WAN de internet, resumido, com valores de exemplo. Os nomes dos campos são os do MA5800; o formato dos valores, como o do Prefix, pode mudar com a versão da OLT e da ONU:
Index : 2 Name : 2_INTERNET_R_VID_100 Service type : Internet Connection type : IP routed IPv4 Connection status : Connected IPv4 access type : PPPoE IPv4 address : 203.0.113.25 IPv6 switch : Enable Prefix : 2001:db8:a10:4500::/56 IPv6 Connection status : Connected IPv6 address : -
Os campos que eu leio, nesta ordem. IPv6 switch diz se o IPv6 está ligado na WAN; Disable significa que a configuração não pegou. Prefix mostra o prefixo delegado recebido; com -, a ONU pediu e o BNG não entregou. IPv6 Connection status é o estado da parte IPv6 da sessão. IPv6 address com - é o esperado numa WAN unnumbered.
A saída tem ainda Prefix access mode e IPv6 address access mode, que dizem como cada um foi obtido, e os DNS IPv6. A WAN de TR-069 aparece em outro bloco, normalmente com o IPv6 desligado, e não precisa de IPv6.
Testes do IPv6 na ONU Huawei no cliente
Com a ONU mostrando o prefixo, o teste final é num aparelho da casa. No Windows:
ipconfig /all ping -6 www.google.com tracert -6 www.google.com
O ipconfig /all precisa mostrar um endereço IPv6 global, começando pelo prefixo da LAN, e o gateway padrão em fe80::1. O ping -6 e o tracert -6 forçam IPv6: se o ping resolve o nome e responde, a navegação está ok. No Linux:
ip -6 addr show ip -6 route show default ping -6 -c 4 www.google.com
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 2001:db8:a10:4500:5a1e:22ff:fe33:4455/64 scope global dynamic
inet6 fe80::5a1e:22ff:fe33:4455/64 scope link
default via fe80::1 dev eth0 proto ra metric 1024O endereço com scope global saiu do /64 da LAN, montado por SLAAC. A rota padrão vem por RA (proto ra) apontando para o link-local da ONU. Se aparecer só o scope link, o aparelho não recebeu o RA com prefixo e o problema está na LAN da ONU.
Para o cliente leigo, um site de teste de IPv6 aberto no celular resolve. Peça o print da tela, que mostra se há IPv6 e qual endereço apareceu.
Erros comuns com IPv6 na ONU Huawei
| Sintoma | Causa provável | O que conferir |
|---|---|---|
| IPv6 switch: Disable na OLT | WAN só IPv4 ou configuração não aplicada | Protocol Type na web; X_HW_IPv6Enable e faults no ACS |
| Prefix: – na OLT | BNG não entregou PD | Prefix Acquisition Mode DHCPv6-PD; pool de PD no BNG |
| ONU com prefixo, aparelho sem IPv6 global | LAN sem prefixo ou sem RA | Parent prefix vazio; modo de atribuição na LAN |
| Notebook com IPv6, celular sem | Endereço só por DHCPv6 na LAN | Trocar para SLAAC |
| IPv6 global, mas não navega | Rota padrão IPv6 pela WAN errada | Default IPv6 Route Configuration |
| Liga e desliga sozinho | Provision e configuração manual brigando | Quem é a fonte da verdade: ACS ou técnico |
O último caso merece atenção. Com o provision rodando em todo inform, qualquer mudança manual na web é desfeita no próximo contato da ONU com o ACS. Se um técnico desligar o IPv6 de um cliente para testar alguma coisa, ele volta sozinho. Isso é o comportamento esperado, e o time de campo precisa saber.
Outro ponto que confunde: com a WAN em Bridge não existe IPv6 na ONU Huawei para configurar. Quem disca o PPPoE e pede o prefixo é o roteador do cliente, e a configuração passa a ser dele.
Perguntas frequentes
Preciso configurar algo na OLT para o IPv6 na ONU Huawei funcionar?
Com a WAN PPPoE configurada na ONU, não. A OLT transporta a sessão na VLAN de serviço sem olhar se dentro vai IPv4 ou IPv6. Ela só ajuda a conferir, com o display ont wan-info.
Qual tamanho de prefixo entregar para cada cliente?
A prática comum em provedor é /56 por cliente residencial, o que dá 256 redes /64. A ONU usa um /64 na LAN. O dimensionamento do pool fica no BNG, explicado no guia de IPv6 no PPPoE com prefixo delegado.
Ligar o IPv6 na ONU derruba a internet do cliente?
Pela web, salvar a WAN refaz a sessão PPPoE, então há uma queda de alguns segundos. Pelo ACS, no meu parque, gravar o X_HW_IPv6Enable não derrubou o cliente, mas isso pode mudar com o modelo e o firmware. Teste numa ONU antes de levar para a base e, na dúvida, faça fora do horário de pico.
Por que o celular não pega IPv6 e o notebook pega?
Quase sempre é a LAN em DHCPv6 para endereço. O Android só monta endereço por SLAAC. Troque o Address/Prefix assignment mode para SLAAC e reconecte o Wi-Fi.
O IPv6 na ONU Huawei deixa a ONU exposta na internet?
Sem NAT, os aparelhos da LAN passam a ter endereço global, e a proteção depende do filtro da ONU. A página de gerência também pode ficar alcançável, conforme o firmware. Depois de ligar, teste de fora pelo IPv6 e bloqueie o que não deveria responder.
Conclusão
O IPv6 na ONU Huawei depende de cinco peças: WAN dual stack, DHCPv6-PD, endereço da WAN, RA na LAN e rota padrão. Pela web, cada uma é um campo; pelo GenieACS, são três parâmetros na WAN PPPoE e um provision que garante o mesmo estado em toda a base. Comece por uma ONU de bancada, confira o Prefix na OLT e o endereço global num celular, e só depois leve a regra para o provision.
Leitura recomendada: IPv6 na ONU Huawei HS8546 v2, na wiki do Brasil Peering Forum (CC BY-NC 4.0).
