Por que você precisa da Solicitação de Vizinhança IPv6 para obter o endereço MAC?

12

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

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

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

Edwin
fonte

Respostas:

20

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

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

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

Como você não pode simplesmente "converter o endereço de volta" em um endereço MAC, envie uma Solicitação de Vizinho para determinar o endereço MAC.

Há outras razões pelas quais as solicitações de vizinhos também são necessárias. Alguns deles são:

  • Detecção de endereço duplicado ( RFC 4862 ). É possível que algum outro host tenha reivindicado (com ou sem razão) 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 está inacessível.

Os livros estão todos muito bem, mas os livros muito desatualizados podem não ser tão úteis. Até 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 que estão marcadas como tendo as atualizadas ou obsoletas. Os RFCs são especificados em detalhes suficientes para permitir que as implementações em conformidade sejam gravadas. Você pode aprender todos os detalhes da descoberta de vizinhos lendo a RFC 4861 .

Michael Hampton
fonte
Obrigado pelas correções; se não estiver usando o formato EUI-64, será necessário descobrir o MAC de outra forma. Mas, na verdade, não entendo as preocupações de privacidade com o formato EUI-64 para endereços locais de link, porque o endereço local do link está no escopo do link e, nesse link, o endereço MAC deverá ser (e pode ser ) conhecido de qualquer maneira (pela Solicitação de vizinhos) para comunicação Ethernet; portanto, para más intenções, o endereço MAC pode ser salvo no endereço de privacidade estável no link local, não é?
Edwin
@ Edwin, o SLAAC foi originalmente usado para todos os endereços IPv6, não apenas para os endereços Link-Local, para que um host pudesse ser rastreado. SLAAC é apenas um método para atribuir endereços Link-Local. Eles também podem ser atribuídos manualmente e isso não forneceria o endereço MAC no endereço local do link. Conheço algumas pessoas que desejam atribuir manualmente todos os endereços, incluindo Link Local. Parece muito trabalho para pouco ou nenhum ganho, mas os deixa felizes, e todos os IDs de todos os endereços em uma interface são os mesmos, na ordem que eles preferem.
Ron Maupin
@ Edwin E cada host manterá de fato um cache de destino (consulte RFC 4861), que é análogo à tabela IPv4 ARP que os hosts mantêm.
Michael Hampton
O CGA poderia ter sido mais simples e mais seguro se os endereços tivessem o dobro do tamanho. Metade das especificações são soluções alternativas para ter apenas 64 bits no identificador de interface, onde eles idealmente desejariam cerca de 162 bits. É importante lembrar sempre que surge a idéia de 128 bits.
kasperd
O que você considera não-padrão sobre esse documento da Microsoft? Para mim, parece que apenas resume os RFCs aos quais você vinculou.
kasperd
9

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

Usando o SLAAC, um host pode construir seu próprio endereço IPv6 usando seu endereço MAC, mas muitas pessoas pensaram que isso era perigoso, fornecendo informações demais e permitindo que um host específico fosse rastreado. Com base nisso, as extensões de privacidade e o endereçamento aleatório foram desenvolvidos e 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 com base 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, todo host deve ingressar em um grupo multicast do Nó Solicitado. 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 ingressar em vários grupos multicast de Nó Solicitado. Um host IPv6 que procura o endereço MAC de outro host envia uma solicitação de difusão seletiva ao grupo de difusão seletiva do nó solicitado 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 de difusão seletiva do nó solicitado usa os últimos 24 bits do endereço IPv6 de destino, a solicitação de difusão seletiva do ND provavelmente interromperá apenas o host de destino ou, possivelmente, um ou dois outros hosts no domínio de broadcast da camada 2.

Ron Maupin
fonte