IPv6 link-local: acessar equipamento sem IP configurado

Acontece em qualquer bancada: o equipamento está ligado, os LEDs piscam, mas o IPv4 de gerência não responde. Pode ser uma regra de firewall que trancou o input, um IP trocado por engano, um roteador usado que chegou com configuração desconhecida ou um switch recém-tirado da caixa. Antes de procurar o cabo de console, vale tentar o IPv6 link-local.
Toda interface com IPv6 ligado gera sozinha um endereço fe80, sem DHCP e sem configuração. Esse endereço só vale dentro do próprio enlace, mas é justamente o que você precisa quando o notebook está ligado direto no equipamento. Este guia mostra como descobrir o endereço do vizinho, como entrar por SSH e Winbox no Linux e no Windows, o que o Mikrotik e o Huawei precisam ter ligado e como não transformar esse atalho numa porta aberta.
Resposta rápida
- Ligue o notebook por cabo direto na porta do equipamento (ou no mesmo switch, na mesma VLAN).
- Descubra o nome ou o índice da sua placa:
eth0no Linux, um número como12no Windows. - Mande um ping para
ff02::1%interface, o endereço de todos os nós do enlace. - Leia a tabela de vizinhos IPv6 e anote o endereço fe80 do equipamento.
- Entre com
ssh usuario@fe80::...%interfaceou, no Winbox, com[fe80::...%indice].
O detalhe que mais derruba gente é o %interface no fim. Sem ele o sistema não sabe por qual placa sair, porque toda placa tem um endereço fe80 e todas usam o mesmo prefixo.
O que é o endereço IPv6 link-local
A RFC 4291 reserva o bloco fe80::/10 para endereços de enlace. Os 64 bits da esquerda ficam como fe80:0000:0000:0000 e os 64 da direita formam o identificador da interface. Todo nó IPv6 precisa ter um endereço desses em cada interface, porque o Neighbor Discovery, o anúncio de roteador e o próximo salto do OSPFv3 dependem dele, e o BGP pode usá-lo como next-hop em sessões IPv6. Se você quer revisar a base, o post sobre o que é IPv6 explica os tipos de endereço.
Como ele nasce sozinho, o IPv6 link-local existe mesmo quando ninguém configurou IPv6 de propósito. Num Mikrotik com RouterOS v7, por exemplo, o IPv6 vem ligado e cada interface ativa ganha um fe80 assim que o link sobe. É por isso que o truque funciona em equipamento que acabou de sair da caixa ou que perdeu o IPv4 de gerência.
| Item | Como funciona | Observação |
|---|---|---|
| Prefixo | fe80::/10, na prática sempre fe80::/64 | RFC 4291 |
| Alcance | Só o enlace local; roteador nenhum encaminha | Não passa de um salto |
| Quem cria | O próprio sistema, quando o IPv6 sobe na interface | Sem DHCP, sem RA |
| Identificador | EUI-64 do MAC ou valor aleatório | Equipamento de rede costuma usar EUI-64 |
| Zone id | %eth0, %12, %en0 | Diz por qual placa sair |
Do MAC ao endereço: o EUI-64
Quando o identificador vem do MAC, a conta é simples. Pegue o MAC 00:0c:42:12:34:56, inverta o sétimo bit do primeiro byte (00 vira 02) e enfie ff:fe no meio, entre a terceira e a quarta dupla. O resultado é 20c:42ff:fe12:3456 (o zero à esquerda some), e o endereço completo fica fe80::20c:42ff:fe12:3456. Com o MAC da etiqueta do equipamento você já sabe qual fe80 procurar, sem precisar de varredura.
Nem todo sistema usa EUI-64. O Windows e boa parte das distribuições Linux com NetworkManager geram o identificador do próprio notebook de forma aleatória ou estável por rede, para não expor o MAC. Isso não atrapalha nada: o que importa é o endereço do equipamento, e roteadores e switches normalmente seguem o EUI-64.
Por que o %interface é obrigatório
Como todas as placas usam fe80::/64, a tabela de rotas tem o mesmo prefixo em cada interface. Ao digitar só o endereço, o sistema não tem como escolher a saída. O sufixo depois do % é o zone id da RFC 4007: no Linux é o nome da placa, no Windows é o número da interface (ifIndex) e no macOS é o nome, como en0. Sem ele você recebe erro de rede inalcançável ou de argumento inválido.
Cenário de bancada
O exemplo usa um notebook ligado por cabo direto na porta de gerência de um Mikrotik, a ether8. O equipamento perdeu o acesso IPv4 depois de uma regra de firewall mal colocada, mas o IPv6 link-local continua de pé porque a regra só tratou o IPv4. A placa do notebook é a eth0 no Linux e a interface 12 no Windows. O mesmo roteiro serve para um switch Huawei ou qualquer equipamento com IPv6 ligado.

Cabo direto não é obrigatório. Se o notebook e o equipamento estão no mesmo switch e na mesma VLAN, o enlace é o mesmo e o fe80 responde. O que não funciona é atravessar um roteador: o IPv6 link-local morre no primeiro salto, de propósito.
Acesso por IPv6 link-local no Linux
Confira primeiro se a sua placa tem um fe80. O segundo comando mostra se o IPv6 está desligado naquela interface (valor 1):
ip -6 addr show dev eth0 scope link sysctl net.ipv6.conf.eth0.disable_ipv6
Se não aparece nenhum endereço com scope link, ligue o IPv6 na placa e suba o link. Algumas imagens de servidor vêm com IPv6 desativado por sysctl:
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0 sudo ip link set eth0 up
Descobrindo o equipamento com ff02::1
O ff02::1 é o grupo multicast de todos os nós do enlace. Um ping para ele, saindo pela placa certa, faz cada vizinho responder com o próprio endereço. Depois, a tabela de vizinhos guarda o par endereço e MAC:
ping -6 -c 3 ff02::1%eth0 ip -6 neigh show dev eth0
A saída do ping mostra duas origens. Uma é o próprio notebook, que também faz parte do grupo; a outra é o equipamento, marcada como DUP! porque responde ao mesmo icmp_seq. A saída abaixo está sem a coluna de tempo, para caber na tela:
PING ff02::1%eth0(ff02::1%eth0) 56 data bytes 64 bytes from fe80::9c1d:22ff:fe4b:a1e%eth0: icmp_seq=1 ttl=64 64 bytes from fe80::20c:42ff:fe12:3456%eth0: icmp_seq=1 ttl=64 (DUP!) 64 bytes from fe80::9c1d:22ff:fe4b:a1e%eth0: icmp_seq=2 ttl=64 64 bytes from fe80::20c:42ff:fe12:3456%eth0: icmp_seq=2 ttl=64 (DUP!)
A tabela de vizinhos confirma qual endereço pertence ao MAC da etiqueta. A palavra router indica que o vizinho se anunciou como roteador, o que ajuda a separar o Mikrotik de outro notebook no mesmo switch:
fe80::20c:42ff:fe12:3456 lladdr 00:0c:42:12:34:56 router REACHABLE
SSH e cópia de arquivo
ssh admin@fe80::20c:42ff:fe12:3456%eth0 scp backup.rsc 'admin@[fe80::20c:42ff:fe12:3456%eth0]:'
O SSH aceita o endereço com o zone id direto, sem colchetes. O scp precisa dos colchetes porque usa dois-pontos para separar o caminho, e as aspas simples evitam que o shell interprete os colchetes. Com isso você consegue entrar, corrigir a regra que trancou o IPv4 e até salvar um backup antes de mexer.
IPv6 link-local no Windows e no Winbox
No Windows o zone id é um número. O jeito mais rápido de achar é o PowerShell; o ipconfig também mostra o número depois do % no endereço de link local da placa. Com o índice em mãos, o roteiro é o mesmo do Linux:
Get-NetIPInterface -AddressFamily IPv6 ping -n 3 ff02::1%12 Get-NetNeighbor -AddressFamily IPv6 -InterfaceIndex 12 ssh admin@fe80::20c:42ff:fe12:3456%12
O ping do Windows para multicast não lista bem quem respondeu, então use-o só para provocar o tráfego e leia o resultado no Get-NetNeighbor, que mostra o endereço fe80 e o MAC de cada vizinho. O cliente OpenSSH que vem no Windows 10 e 11 aceita o endereço com %12 do mesmo jeito que o Linux.
Winbox com endereço fe80
A documentação do Winbox pede o endereço IPv6 entre colchetes e, para link-local, o índice da interface depois do %. No campo de conexão, fica assim:
[fe80::20c:42ff:fe12:3456%12]
Se precisar de outra porta, ela vai depois do colchete, como em [fe80::...%12]:8299. O Winbox também conecta pelo MAC, na aba de vizinhos, o que resolve o mesmo problema por outro caminho. A diferença é que o MAC-Winbox só serve ao Winbox e costuma ficar restrito a uma porta ou desligado no hardening, enquanto o IPv6 link-local atende também SSH, scp e qualquer ferramenta de linha de comando.
| Onde | Formato | Zone id |
|---|---|---|
| Linux | ssh admin@fe80::…%eth0 | Nome da placa |
| Windows (ssh, ping) | ssh admin@fe80::…%12 | ifIndex da interface |
| macOS | ssh admin@fe80::…%en0 | Nome da placa |
| Winbox | [fe80::…%12] | Colchetes e ifIndex |
| scp e URLs | ‘admin@[fe80::…%eth0]:’ | Colchetes por causa dos dois-pontos |
Requisitos no Mikrotik
No RouterOS v7 o IPv6 vem ligado e cada interface ativa recebe um fe80 gerado a partir do MAC. Os comandos abaixo conferem o estado, religam o IPv6 se alguém desligou e mostram endereços e vizinhos:
/ipv6 settings print /ipv6 settings set disable-ipv6=no /ipv6 address print /ipv6 neighbor print
No /ipv6 address print os endereços IPv6 link-local aparecem com as flags D e L, de dinâmico e link-local. Se o disable-ipv6 estiver em yes, não existe fe80 em lugar nenhum e o truque não funciona. Esse é um dos motivos para deixar o IPv6 ligado mesmo em roteador que ainda não roteia IPv6 para clientes.
Depois do hardening: liberar fe80 só na porta de gerência
Se você seguiu o guia de segurança no Mikrotik RouterOS v7, o SSH e o Winbox só aceitam a rede do NOC, e o firewall IPv6 descarta o resto no input. Nesse estado o IPv6 link-local também fica bloqueado, o que é correto para as portas de cliente. Para manter o atalho de bancada, libere fe80::/10 apenas na porta de gerência:
/ip service set ssh address=198.51.100.0/24,203.0.113.10/32,2001:db8:100::/48,fe80::/10
/ip service set winbox address=198.51.100.0/24,203.0.113.10/32,2001:db8:100::/48,fe80::/10
/user set op.noc address=198.51.100.0/24,2001:db8:100::/48,fe80::/10
/ipv6 firewall filter add chain=input action=accept protocol=tcp \
dst-port=22,8291 src-address=fe80::/10 \
in-interface-list=porta-gerencia place-before=0- /ip service address: a lista de origens permitidas por serviço vale para IPv4 e IPv6, e o comando substitui a lista inteira. Por isso a linha repete a rede do NOC e o bastion do guia de hardening e só acrescenta fe80::/10. Sem o fe80::/10 ali, a conexão é recusada mesmo com o firewall liberado.
- /user address: o usuário também tem lista de origens. Se o login funciona pelo NOC e falha pelo fe80, confira aqui.
- in-interface-list=porta-gerencia: só a porta física de gerência aceita SSH e Winbox vindos de link-local. Um cliente ligado em outra porta, que também tem fe80, não passa.
- place-before=0: a regra entra no topo da chain input, antes do drop final.
Requisitos no Huawei VRP
Nos switches e roteadores Huawei o IPv6 não vem ligado de fábrica. É preciso ativar o IPv6 no equipamento, depois na interface, e então gerar o endereço de enlace. Num equipamento que você ainda acessa pelo console, prepare a interface de gerência assim:
system-view ipv6 interface GigabitEthernet0/0/1 ipv6 enable ipv6 address auto link-local quit
O ipv6 no system-view liga a pilha IPv6 no equipamento. Dentro da interface, ipv6 enable ativa o IPv6 naquela porta e ipv6 address auto link-local gera o fe80 a partir do MAC; a documentação pede o ipv6 enable antes. Num switch da linha S a porta GigabitEthernet é camada 2 por padrão: use a interface Vlanif da VLAN de gerência no lugar dela, ou rode antes o undo portswitch nos modelos que aceitam. Nas linhas que tratam o SSH IPv6 em separado, como NE40E e CloudEngine, o stelnet ipv6 server enable liga o servidor SSH para conexões IPv6:
stelnet ipv6 server enable
display ipv6 interface brief display ipv6 neighbors display ssh server status
O primeiro comando mostra as interfaces com IPv6 e o estado de cada uma, o segundo lista os vizinhos e o terceiro diz se o servidor SSH aceita IPv6. Atenção ao ssh server-source e, nas versões que separam o IPv6, ao ssh ipv6 server-source: se eles prendem o SSH a uma loopback, o login pelo fe80 de outra interface é recusado. Para outros comandos do dia a dia, veja a lista de comandos para roteadores e switches Huawei.
Segurança: o IPv6 link-local também é uma porta
O mesmo mecanismo que salva a madrugada serve para quem está no seu enlace. Qualquer máquina na mesma VLAN do equipamento consegue achar o fe80 dele com um ping em ff02::1. Em rede de provedor isso importa: se a VLAN de clientes ou a de um PPPoE chega na mesma porta, o cliente está no mesmo enlace do concentrador.
- Trate o IPv6 no firewall de input desde o primeiro dia, mesmo sem IPv6 roteado para clientes.
- Aceite SSH, Winbox e SNMP vindos de fe80::/10 só na interface de gerência.
- Nunca deixe senha padrão confiando que o IPv4 de gerência está protegido.
- Desligar o IPv6 tira o atalho de quem ataca e também o seu. Prefira filtrar a desligar.
Quando o IPv6 entrar para os clientes, com prefixo delegado no PPPoE como no post sobre IPv6 no PPPoE com prefixo delegado, as regras de input continuam valendo. O tráfego de cliente usa os endereços globais; os fe80 do concentrador só devem atender o que é do enlace, como Neighbor Discovery e DHCPv6.
Erros comuns e como resolver
Quase todo problema com IPv6 link-local cai em três grupos: zone id, alcance do enlace e filtro no equipamento. A tabela resume o que aparece e onde olhar:
| Sintoma | Causa provável | O que fazer |
|---|---|---|
| Invalid argument ou Network is unreachable | Faltou o %interface | Acrescente %eth0 ou %12 |
| Ping em ff02::1 só mostra o notebook | Placa errada, cabo, VLAN ou IPv6 desligado no equipamento | Conferir link, VLAN e disable-ipv6 |
| Vizinho aparece, SSH não conecta | Firewall IPv6, /ip service address ou server-source | Liberar fe80::/10 na porta de gerência |
| Login recusado com senha certa | /user address sem fe80::/10 | Incluir fe80::/10 no usuário |
| Vários fe80 na tabela | Outros equipamentos na mesma VLAN | Comparar com o MAC da etiqueta |
| scp diz que o host é inválido | Endereço sem colchetes | Usar ‘admin@[fe80::…%eth0]:’ |
Uma armadilha comum no Linux é o NetworkManager desconectar a placa por não ter recebido DHCP. Sem link ativo não existe fe80. Se acontecer, marque a conexão com IPv4 desativado ou manual e deixe o IPv6 em modo link-local, ou suba a placa na mão com ip link set.
Perguntas frequentes
O IPv6 link-local funciona através de um roteador?
Não. O prefixo fe80::/10 vale só dentro do enlace, e nenhum roteador encaminha pacotes com esse destino. O notebook precisa estar ligado direto no equipamento ou na mesma VLAN.
Preciso configurar IPv6 no notebook para usar o fe80?
Não. Basta o IPv6 estar ligado na placa, o que é o padrão no Linux, no Windows e no macOS. O endereço de enlace aparece sozinho quando o link sobe.
Como descubro o endereço fe80 do equipamento sem varrer a rede?
Mande um ping para ff02::1 com o zone id da sua placa e leia a tabela de vizinhos. Se o equipamento usa EUI-64, dá para calcular o endereço direto a partir do MAC da etiqueta.
O Winbox aceita endereço link-local?
Aceita, com o endereço entre colchetes e o índice da interface depois do %, como [fe80::20c:42ff:fe12:3456%12]. A porta, se for diferente da padrão, vai depois do colchete.
Desligar o IPv6 no equipamento é mais seguro?
Fecha esse caminho, mas também tira o seu acesso de emergência e atrasa a adoção de IPv6. O melhor é deixar ligado e filtrar o input, aceitando fe80 só na porta de gerência.
Conclusão
O IPv6 link-local é o acesso de reserva que já vem pronto em quase todo equipamento moderno. Com um cabo direto, um ping em ff02::1 e o zone id certo, você entra por SSH ou Winbox sem IPv4, sem DHCP e sem console. O cuidado é o mesmo de qualquer acesso: deixe o IPv6 ligado, filtre o input e aceite fe80 só onde faz sentido.
Guarde o roteiro junto com o kit de bancada. Na próxima vez que o IPv4 de gerência sumir, o IPv6 link-local pode poupar uma ida até o equipamento.
Leitura recomendada: Acesso via IPv6 Link-Local, na wiki do Brasil Peering Forum (conteúdo sob licença CC BY-NC 4.0).
