Os endereços IPv6 mapeados para IPv4 não devem ser atribuídos a interfaces IPv6 ou a comunicações nativas IPv6. Não no Linux atual, pelo menos. Adicione endereços IPv4 normais usando ip addr add
, sem o sinalizador -6
e na notação IPv4 normal.
sudo ip addr add 192.168.13.236/24 dev eth3
E também, novamente, não use ifconfig
. É antigo , reprovado , quebrado e substituído por proute2 . Ele não exibirá endereços IPv6 corretamente e não exibirá vários endereços IPv4 na mesma interface sem aliases.
Vou esclarecer a discussão nos comentários abaixo, já que é grande demais para postar como outro comentário.
Não faz sentido adicionar endereços IPv4 à pilha IPv6, mesmo convertendo-os em endereços IPv6 mapeados para IPv4. A pilha IPv6 lida com endereços IPv6 e transmite pacotes IPv6; a pilha IPv4 lida com endereços IPv4 e transmite pacotes IPv4.
Adicionando o endereço à interface e o ping pode funcionar provavelmente porque existe alguma verificação de integridade faltando no código do kernel que adiciona endereços às interfaces.
Existem endereços IPv6 mapeados para IPv4 para que você possa usar soquetes IPv6 (nota importante: nível de aplicativo) para se comunicar com hosts IPv4. Você não precisa adicionar um endereço IPv6 mapeado para IPv4 às suas interfaces para se comunicar com elas usando o IPv6. Experimente:
ssh ::ffff:127.0.0.1
Ele funcionará de forma transparente mesmo que :: ffff: 127.0.0.1 (IPv6) não esteja registrado na pilha IPv6 da interface de loopback ( lo
). Funciona porque 127.0.0.1/8 (IPv4) é. O sistema realmente usa pacotes IPv4, mesmo que você tenha fornecido um endereço IPv6. Você pode verificar isso com o wireshark ou o tcpdump. Isso também é válido quando você recebe um pacote ou conexão IPv4 usando um soquete IPv6 ligado / escutando o endereço curinga do IPv6.
Observe que o ICMP e o ping funcionam de maneira diferente porque a API para sockets ICMP é completamente diferente entre o IPv4 e o IPv6. ping6
na verdade cria um pacote ICMPv6 com o endereço fornecido, o que não faz sentido no fio. IMO, isto pode ser seguramente considerado um bug, tanto ping6
quanto o kernel devem falhar antes de injetar pacotes IPv6 com endereços IPv4, ou permitir que tais endereços existam na pilha IPv6.