Aula 8 — Como o endereço físico MAC identifica cada interface de rede e como o ARP faz a ponte entre o mundo IP e o mundo Ethernet — incluindo segurança e troubleshooting
O endereço MAC (Media Access Control) é o identificador que opera na Camada 2 — Enlace de Dados. Enquanto o endereço IP identifica um dispositivo na rede lógica (e pode mudar), o MAC identifica a interface de rede no nível físico e é gravado pelo fabricante na memória ROM da placa.
Bit mais significativo de cada byte → transmitido primeiro
Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6
┌──────────┐ ┌───────┬──────────────────────────────────────┐
│ b7...b2 │ │ b1 b0 │ │
│ OUI │ │ │ └─ U/L bit (0=universal, 1=local) │
│ (3 bytes)│ │ └──── I/G bit (0=unicast, 1=multi/broad) │
└──────────┘ └────────────────── NIC (3 bytes) ────────────┘
Exemplo: A8:5E:45 : F3:2B:7C
───────── ─────────
OUI NIC
(fabricante)(placa específica)
Bits especiais no PRIMEIRO byte:
• Bit 0 (I/G): 0 = Unicast | 1 = Multicast/Broadcast
• Bit 1 (U/L): 0 = Universal (atribuído pelo IEEE)
1 = Local (atribuído manualmente ou virtualizado)
| Tipo | Bit I/G | Exemplo | Uso |
|---|---|---|---|
| Unicast | 0 (par) | A8:5E:45:F3:2B:7C | Identifica uma única interface. Entrega ponto a ponto |
| Multicast | 1 (ímpar) | 01:00:5E:00:00:01 | Grupo de dispositivos registrados. 01:00:5E:xx = IPv4 multicast |
| Broadcast | 1 (todos) | FF:FF:FF:FF:FF:FF | Todos os dispositivos da LAN recebem e processam |
Embora o MAC seja gravado na ROM, o sistema operacional pode sobrescrevê-lo via software — técnica conhecida como MAC spoofing. Isso é legítimo em virtualização (VMs recebem MACs gerados pelo hypervisor, com bit U/L=1) e em testes, mas também é usado para contornar filtros de MAC ou realizar ataques.
# Ver o MAC atual ip link show eth0 # ou cat /sys/class/net/eth0/address # Desativar a interface ip link set eth0 down # Alterar o MAC temporariamente ip link set eth0 address 02:AA:BB:CC:DD:EE # Reativar ip link set eth0 up # No Windows (via Gerenciador de Dispositivos > Propriedades # da placa de rede > Endereço de Rede)
⚠️ Filtro de MAC não é segurança: muitos roteadores e APs oferecem “filtro de endereços MAC” como recurso de segurança. Na prática, qualquer atacante pode capturar um MAC autorizado via sniffing e cloná-lo em segundos. Filtro de MAC é segurança por obscuridade — nunca deve ser a única medida.
O ARP — Address Resolution Protocol (RFC 826, 1982) resolve endereços IP em endereços MAC dentro de uma mesma LAN. Sem o ARP, o IP não consegue construir o quadro Ethernet necessário para entregar o pacote localmente.
PC-A (IP: 192.168.1.10 / MAC: AA:AA:AA:AA:AA:AA)
PC-B (IP: 192.168.1.20 / MAC: BB:BB:BB:BB:BB:BB)
── ARP REQUEST (broadcast) ──────────────────────────────────
Src MAC: AA:AA:AA:AA:AA:AA
Dst MAC: FF:FF:FF:FF:FF:FF ← broadcast Ethernet
Src IP: 192.168.1.10
Dst IP: 192.168.1.20
Mensagem: "Quem tem 192.168.1.20? Me diga seu MAC."
─────────────────────────────────────────────────────────────
↓ todos os dispositivos da LAN recebem
↓ somente PC-B reconhece o IP e responde
── ARP REPLY (unicast) ───────────────────────────────────────
Src MAC: BB:BB:BB:BB:BB:BB
Dst MAC: AA:AA:AA:AA:AA:AA ← unicast de volta ao PC-A
Src IP: 192.168.1.20
Dst IP: 192.168.1.10
Mensagem: "Eu tenho 192.168.1.20. Meu MAC é BB:BB:BB:BB:BB:BB."
─────────────────────────────────────────────────────────────
PC-A armazena na tabela ARP (cache):
192.168.1.20 → BB:BB:BB:BB:BB:BB (TTL: ~2 minutos)
O ARP foi projetado em 1982 sem nenhum mecanismo de autenticação. Qualquer dispositivo na LAN pode enviar um ARP Reply falso, e os outros aceitam sem questionar. Isso é a base do ARP Spoofing (ou ARP Poisoning).
Cenário normal:
PC-A (192.168.1.10) → Switch → Gateway (192.168.1.1)
── Ataque ───────────────────────────────────────────────────
Atacante (192.168.1.99 / MAC: EE:EE:EE:EE:EE:EE) envia:
Para PC-A: "192.168.1.1 está em EE:EE:EE:EE:EE:EE" ← FALSO
Para Gateway: "192.168.1.10 está em EE:EE:EE:EE:EE:EE" ← FALSO
Resultado: a tabela ARP de PC-A e do Gateway ficam envenenadas.
PC-A → [pensa que vai pro gateway] → Atacante → Gateway → Internet
↑
intercepta, lê e
repassa o tráfego
(Man-in-the-Middle)
─────────────────────────────────────────────────────────────
O atacante pode: ler senhas em texto claro, injetar conteúdo,
derrubar conexões (DoS) ou redirecionar para sites falsos.
✅ Contexto didático: ARP Spoofing é um dos ataques mais estudados em segurança de redes por ser simples de entender e demonstrar em laboratório, além de ilustrar perfeitamente o princípio de que protocolos antigos sem autenticação são inerentemente vulneráveis.
O IPv6 não usa ARP. Em seu lugar, o NDP — Neighbor Discovery Protocol (RFC 4861) realiza as mesmas funções (e muito mais) usando mensagens ICMPv6. O NDP opera com multicast em vez de broadcast, sendo muito mais eficiente em redes grandes.
| Função | IPv4 (ARP) | IPv6 (NDP / ICMPv6) |
|---|---|---|
| Resolver IP → MAC | ARP Request / Reply | NS (Neighbor Solicitation) / NA (Neighbor Advertisement) |
| Descobrir roteador | Configurado manualmente ou via DHCP | RS (Router Solicitation) / RA (Router Advertisement) |
| Detectar conflito de IP | ARP Probe (Gratuitous ARP) | DAD — Duplicate Address Detection (via NS) |
| Autoconfigurar endereço | Não (precisa de DHCP) | SLAAC — Stateless Address Autoconfiguration |
| Meio de entrega | Broadcast (FF:FF:FF:FF:FF:FF) | Multicast IPv6 solicitado por nó (33:33:xx:xx:xx:xx) |
PC-A quer descobrir o MAC do host com IPv6 fe80::B
1. PC-A calcula o "endereço multicast solicitado por nó":
ff02::1:ffxx:xxxx (baseado nos últimos 24 bits do IPv6 de B)
2. PC-A envia Neighbor Solicitation (NS) para esse multicast:
"Quem tem fe80::B? Me diga seu MAC."
(apenas hosts com aquele IPv6 recebem — não toda a rede)
3. PC-B responde com Neighbor Advertisement (NA) em unicast:
"Sou eu. Meu MAC é BB:BB:BB:BB:BB:BB."
Vantagem: o multicast solicitado reduz drasticamente o tráfego
comparado ao broadcast ARP em redes com muitos hosts IPv6.
O conhecimento prático do ARP é fundamental para diagnosticar problemas de conectividade na LAN. As ferramentas abaixo são usadas no dia a dia de qualquer administrador de redes.
── WINDOWS ──────────────────────────────────────────────────
arp -a
Exibe a tabela ARP completa (IP → MAC de todos os hosts vistos)
arp -a 192.168.1.1
Exibe somente a entrada ARP para o IP especificado
arp -s 192.168.1.10 AA-BB-CC-DD-EE-FF
Adiciona uma entrada estática (permanente) na tabela ARP
arp -d 192.168.1.10
Remove uma entrada específica da tabela ARP
── LINUX ────────────────────────────────────────────────────
ip neigh show
Exibe a tabela de vizinhos ARP/NDP (substituto moderno do arp -a)
ip neigh flush dev eth0
Limpa todas as entradas ARP da interface eth0
arping -I eth0 192.168.1.10
Envia ARP Requests e mede o tempo de resposta (similar ao ping
mas na camada 2 — funciona mesmo com ICMP bloqueado)
arping -D -I eth0 192.168.1.10
Modo de detecção de IP duplicado (ARP Probe)
arping -D ou verificar a tabela ARP — o mesmo IP aparecerá com MACs diferentes
arp -a: se o gateway aparece como “incomplete” — sem resposta ARP
arp -d <ip> para forçar novo ARP Request
$ arp -a gateway (192.168.1.1) at a8:5e:45:f3:2b:7c [ether] on eth0 servidor (192.168.1.50) at <incomplete> [ether] on eth0 ← PROBLEMA! impressora (192.168.1.100) at b4:2e:99:1a:c7:f0 [ether] on eth0 "incomplete" significa que o ARP Request foi enviado mas não houve resposta: → O host pode estar desligado → Pode haver problema de cabo/switch → O IP pode estar errado → O host pode estar bloqueando ARP (firewall)
Entender onde o ARP se encaixa na pilha TCP/IP é fundamental para compreender por que ele é necessário e quais são seus limites.
PC-A (192.168.1.10) quer acessar www.exemplo.com (200.10.5.3)
── Passo 1: o IP é local ou remoto? ─────────────────────────
PC-A compara 200.10.5.3 com sua máscara (192.168.1.0/24):
→ 200.10.5.3 está FORA da rede local.
→ PC-A deve enviar o pacote ao gateway (192.168.1.1).
── Passo 2: PC-A tem o MAC do gateway? ──────────────────────
Verifica a tabela ARP:
→ SIM → usa o MAC direto e monta o quadro Ethernet.
→ NÃO → dispara um ARP Request para 192.168.1.1 (broadcast).
Aguarda ARP Reply, armazena no cache, monta o quadro.
── Passo 3: quadro Ethernet montado ─────────────────────────
[ MAC-gateway | MAC-PC-A | 0x0800 | pacote IP → 200.10.5.3 | FCS ]
↑ endereço Ethernet muda a cada salto (roteador)
↑ endereço IP permanece 200.10.5.3 do início ao fim
── Passo 4: no roteador (gateway) ───────────────────────────
Roteador recebe o quadro, desencapsula o pacote IP,
consulta a tabela de roteamento e repete o processo ARP
para o próximo salto — com o MAC do próximo roteador.
⚠️ Ponto crítico: o endereço IP de destino nunca muda ao longo do caminho — ele identifica o destino final. O endereço MAC de destino muda a cada salto — ele sempre aponta para o próximo dispositivo na rede local imediata. O ARP é executado em cada segmento de rede separadamente.
Investigar a tabela ARP, simular resolução de endereços e identificar vulnerabilidades.
arp -a (Windows/Linux) ou ip neigh show (Linux). (a) Liste todos os dispositivos na tabela e identifique: IP, MAC e tipo (dinâmico ou estático); (b) Pesquise o OUI dos MACs encontrados em um banco de dados online (ex: macvendors.com) e identifique o fabricante; (c) Há alguma entrada como “incomplete”? O que isso significa?Ao enviar um ARP Request, qual é o endereço MAC de destino usado no quadro Ethernet?
PC-A acessa um servidor em outra rede através de um roteador. Em relação ao quadro Ethernet enviado por PC-A:
Um administrador executa arp -a e vê a entrada: 192.168.1.20 <incomplete>. O que isso indica?
Qual a principal diferença entre o ARP (IPv4) e o NDP (IPv6) na forma como descobrem o endereço de camada 2 de um vizinho?