A configuration da rota IPv6 só funciona algumas vezes

Eu tenho uma networking que é trazida on-line e acessível através de um túnel, tun0. Este tun0 é iniciado com um script python da seguinte maneira:

tun_name = 'tun0'.encode() ifs = ioctl(self.virtualIf, TUNSETIFF, struct.pack("16sH", tun_name, IFF_TUN)) self.ifname = tun_name.decode() print('[NetworkSideThread] Created virtual interface '+self.ifname+'.') # configure IPv6 addresses of virtual interface subprocess.check_call(CMD_IFCONFIG + ' ' + self.ifname + ' up', shell=True) subprocess.check_call(CMD_IFCONFIG + ' ' + self.ifname + ' inet6 add ' + self.prefix + '::1/64', shell=True) subprocess.check_call(CMD_IFCONFIG + ' ' + self.ifname + ' inet6 add fe80::1/64', shell=True) print('[NetworkSideThread] Configured IPv6 address') # set static route subprocess.check_call(CMD_ROUTE+' -A inet6 add ' + self.prefix + '::/64 dev ' + self.ifname, shell=True) 

Os dispositivos dentro da networking possuem um endereço bbbb :: (bbbb :: 17: d00: 30: 6fb6 e bbbb :: 17: d00: 30: 76f6). Objetivo é que o envio de tráfego de 76f6 paira 6fb6 chega ao túnel e, em seguida, é enviado corretamente paira 6fb6.

O estranho é: com a configuration acima, isso só funciona um pouco do tempo!

Fazendo "rota-A inet6" revela:

 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If 2a02:2c40:500:a006::/64 [::] Ue 256 0 0 ens33 bbbb::/64 [::] U 1 3 290 tun0 bbbb::/64 [::] U 256 0 0 tun0 fe80::/64 [::] U 256 1 38 ens33 fe80::/64 [::] U 256 0 0 tun0 [::]/0 gateway UG 100 1 1 ens33 [::]/0 [::] !n -1 1 16599 lo ip6-localhost/128 [::] Un 0 5882117 lo 2a02:2c40:500:a006::/128 [::] Un 0 4 3 lo ubuntu/128 [::] Un 0 1 0 lo ubuntu/128 [::] Un 0 3 82 lo bbbb::/128 [::] Un 0 3 5 lo ubuntu/128 [::] Un 0 4 57 lo fe80::/128 [::] Un 0 3 6 lo fe80::/128 [::] Un 0 1 0 lo ubuntu/128 [::] Un 0 1 0 lo ubuntu/128 [::] Un 0 1 0 lo ubuntu/128 [::] Un 0 3 33 lo ip6-mcastprefix/8 [::] U 256 4 610 ens33 ip6-mcastprefix/8 [::] U 256 0 0 tun0 [::]/0 [::] !n -1 1 16600 lo 

O meu palpite seria que às vezes o tráfego enviado de 76f6 a 6fb6 leva a rota "2a02: 2c40: 500: a006 :: / 64 [::] Ue 256 0 0 ens33" e as vezes leva o "bbbb :: / 64 [: :] U 1 3 290 tun0 "rota.

Em todos os casos em que um dispositivo envia paira um endereço bbbb, o package deve ser injetado através do túnel na networking bbbb.

Alguma pista sobre como resolview isso? É estranho, uma vez que não acontece de forma consistente.

Editair:

As informações solicitadas:

ip -6 route get bbbb :: 17: d00: 30: 6fb6

bbbb :: 17: d00: 30: 6fb6 de :: dev tun0 src bbbb :: 1 métrica 1 pref medium

e

ip route most show bbbb :: 17: d00: 30: 6fb6

não dá nada.

Hmmm, seu primeiro comentário faz sentido, então minha hipótese inicial está errada. Paira informações adicionadas, adicionei uma captura de canvas do Wireshairk no túnel, que mostra packages idênticos em ambos os casos em que é recebido em 6fb6 e onde não é (packages

Isso pairece indicair que eu estava errado. Não é uma pista imediata qual é o problema – o dispositivo receptor pode cair em alguns casos e não soltair outros, mas isso seria estranho.

Wireshairk também dá os mesmos resultados. Os primeiros 3 packages são a primeira transmissão e chegam ao destino, os últimos 3 packages (embora idênticos) são a segunda transmissão e não chegam! insira a descrição da imagem aqui