Por que você precisa do IPv6 Neighbor Solicitation para obter o endereço MAC?

10

Sou desenvolvedor de software e acabei de receber um livro gratuito sobre o IPv6 no Techdays, que estou lendo por diversão. Eles deram isso porque é um pouco um livro antigo (W2008), então talvez as coisas sejam diferentes para outros sistemas operacionais mais recentes, mas eu não entendo a necessidade de o Neighbor Discovery obter o endereço MAC.

De acordo com o livro, cada nó obtém automaticamente um endereço IP local Link, que é construído a partir do endereço MAC, inserindo FF-FE entre o terceiro e o quarto bytes e invertendo o bit U / L, para que o O IP local do link para um nó com um endereço MAC de 00-AA-00-3F-2A-1C torna-se FE80::2AA:FF:FE:3F:2A1C .

Para determinar o endereço MAC da camada de enlace, uma mensagem de solicitação de vizinho é enviada para o endereço IP de enlace local, que responde com uma mensagem contendo seu endereço MAC ... Mas o remetente já sabe disso, porque o MAC está codificado em o endereço IP local do link. Por isso, parece enviar um cartão postal para alguém pedindo seu endereço.

    
por Edwin 22.10.2016 / 19:05

2 respostas

18

Todo nó gera automaticamente um endereço de link local, mas:

  • Esse endereço pode não ser gerado com o formato EUI-64 especificado em RFC 2464 . Os endereços IPv6 também podem ser endereços gerados criptograficamente ( RFC 3972 ), endereços de privacidade temporários (RFC 4941 ), da Microsoft endereços aleatórios padrão , ou em sistemas operacionais modernos, endereços de privacidade estáveis ( RFC 7217 ).

  • Um endereço que parece ter uma ID de interface EUI-64 pode não corresponder realmente ao endereço MAC indicado devido à configuração explícita de um administrador.

Como você não pode simplesmente "converter o endereço de volta" para um endereço MAC, é necessário enviar uma Solicitação de vizinho para determinar o endereço MAC.

Existem outras razões pelas quais as Solicitações de Vizinhos também são necessárias. Algumas delas são:

  • Detecção de endereço duplicado ( RFC 4862 ). É possível que algum outro anfitrião tenha (correta ou incorretamente) reivindicado um endereço que um host deseja usar.
  • Detecção de inacessibilidade do vizinho. A falta de resposta a uma Solicitação de Vizinho é um indicador de que o vizinho é inacessível.

Os livros são todos bons e bons, mas livros muito desatualizados podem não ser tão úteis. Até mesmo o IPv6 teve revisões significativas nos últimos dez anos. A melhor fonte de verdade são as RFCs relevantes, tanto as originais quanto as marcadas como tendo sido atualizadas ou tornadas obsoletas. Os RFCs são especificados com detalhes suficientes para permitir que implementações em conformidade sejam gravadas. Você pode aprender todos os detalhes da descoberta de vizinhos lendo RFC 4861 .

    
por 22.10.2016 / 19:53
9

Então, você não entendeu mal ou foi mal informado sobre algumas coisas.

Usando o SLAAC, um host pode construir seu próprio endereçamento IPv6 usando seu endereço MAC, mas muitas pessoas acham que isso é perigoso, fornecendo muita informação e permitindo que um determinado host seja rastreado. Com base nisso, foram desenvolvidas extensões de privacidade e endereçamento aleatório, e eles são usados pelos sistemas operacionais para fornecer privacidade / segurança. Isso significa que um host pode criar seu próprio endereçamento, não baseado em seu endereço MAC.

Quando um host precisa descobrir o endereço MAC de um vizinho no IPv4, ele usa o ARP. O ARP transmite uma solicitação, mas o IPv6 não tem transmissão. Em vez disso, cada host deve ingressar em um grupo de multidifusão do Solicited Node. Este grupo é baseado nos últimos 24 bits do seu endereço IPv6. Como as interfaces IPv6 podem ter qualquer número de endereços IPv6, um host pode se unir a vários grupos multicast do nó solicitado. Um host IPv6 procurando o endereço MAC de outro host enviará uma solicitação multicast ao grupo multicast Solicited Node do endereço IPv6 de destino.

Isso fornece uma vantagem sobre o IPv4 ARP. Como o ARP usa uma transmissão para solicitações, ele interrompe todos os hosts no domínio de transmissão da camada 2. Como o grupo multicast do Solicited Node usa os últimos 24 bits do endereço IPv6 de destino, a solicitação de multicast do ND provavelmente só interromperá o host de destino ou possivelmente um ou dois outros hosts no domínio de broadcast da camada 2.

    
por 22.10.2016 / 19:20