Plano de fundo
Eu tenho a seguinte configuração:
Eu uso o 6LOWPAN (implementação de IPv6 no IEEE 802.15.4) no meu link de sensor que tem endereços IPv6 (stateless) como aaaa :: xx / 64
Ele usa o RaspberryPi (RPI) como um roteador de borda (chamado 6lbr) que é conectado ao IEEE 802.15.4 e ao IEEE 802.11 (faz a conversão entre dois padrões e roteia os pacotes). O RPI executa o Debian.
Minha rede não suporta anúncios IPv6 (RA), por isso só atribui um IPv4 público ao RPI.
Por fim, eu armazeno meu código de servidor (servidor / cliente UDP) em um servidor Debian que possui endereços IPv4 e IPv6 públicos.
Pergunta
Não consegui descobrir como acessar nós sensores do lado do servidor. Como exemplo, qual endereço de destino eu preciso digitar SERVADDR
abaixo para enviar um unicast UDP?
inet_pton(AF_INET6, SERVADDR, &server_addr.sin6_addr);
Supõe-se que seja um unicast UDP IPv4 ou IPv6?
Eu tentei usar o NAT64 (um projeto de código aberto chamado wrapsix), mas não consegui acessá-lo. Que tipo de solução de encapsulamento eu preciso usar? Você poderia também declarar um nome de projeto de código aberto que eu possa usar para o tunelamento ou como um corretor?
Como uma segunda pergunta Como eu precisaria acessar a rede de sensores (aaaa :: xx) se meu ponto de acesso estava alocando um endereço IPv4 privado (192.168.x.x) para a interface wlan0 do RPI? Nesse caso, que tipo de solução preciso usar?
EDIT 1 Referindo-me aos comentários do @asperd, fiz uma busca melhor no tuning do IPV6. Eu não posso usar o NAT64 porque requer um prefixo de rede IPv6 exclusivo que eu não tenho no meu caso.
Eu não posso usar o 6to4 que requer um IPv4 público (considerando minha segunda pergunta).
como @kasperd sugeriu, eu deveria usar o 6in4 que requer um corretor. Como vejo nas sugestões da web, posso usar o Hurricane Electric ou o SixXS. Ambos afirmam ser livres, mas não conseguiram entender qual é a principal diferença. Pelo que entendi, não posso usar a solução da Hurricane Electric por trás de um NAT IPv4, mas o SixXS tem um protocolo chamado AYIYA que pode ser usado por trás de um NAT IPv4. Uma desvantagem dessa solução é que, se eu tiver vários problemas de conectividade semelhantes, preciso configurá-los individualmente. Em segundo lugar, o SixXS permite usá-lo para fins comerciais, no entanto, uma vez que é gratuito, eles retransmitem outras organizações que podem deixar de fornecer o uso do IPv6 que você usa em seu projeto. Cria uma consideração de confiabilidade. Outra consideração é que pode ser um problema que alguns firewalls podem não permitir o tunelamento 6in4.
Além disso, o Ubuntu / Debian possui um pacote chamado Miredo baseado em tunelamento Teredo (baseado em pacotes UDP). Essa solução pode ser usada por trás de um NAT IPv4. Além disso, como é uma comunicação baseada em UDP, quase todos os firewalls permitiriam o tunelamento. No entanto, diz-se que Teredo é uma solução temporária e deve ser desativado (relés Teredo) quando o IPv6 é mais maduro para encorajar todos a usar o IPv6 nativo.
EDIT 2 O SixXS.net não aceita novas inscrições. Eu criei uma conta no HE, mas tem 5 limitações de túnel. Se precisar de mais de 5 túneis, acho que Miredo deveria ser uma opção melhor. Eu tentei o HE broker e Miredo que recebe o IPv6, mas eu acho que tenho um problema com as regras de roteamento que eu não posso pingar o IPv6 de um PC remoto.
Tags networking ipv6 linux udp tunneling