IPv6 no XenServer Guest pára de funcionar aleatoriamente

1

Minhas VMs do XenServer 7.0 que executam o Ubuntu 16.04 com o kernel 4.4.0 decidem deixar de receber pacotes IPv6 logo após reiniciar a máquina inteira ou redefinir a interface de rede.

Enquanto tudo funciona, a execução de tcpdump no host XenServer revela o seguinte durante o ping facebook.com:

[root@localhost ~]# tcpdump -i xenbr0 -vv ip6
tcpdump: listening on xenbr0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C

[root@localhost ~]# tcpdump -i eth0 -vv ip6
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:25:26.063597 IP6 (flowlabel 0xa64ab, hlim 64, next-header ICMPv6 (58) payload length: 64) 2a01:4f8:xxxx:yyyy::3 > edge-star-mini6-shv-01-amt2.facebook.com: [icmp6 sum ok] ICMP6, echo request, seq 1
09:25:26.074727 IP6 (class 0x40, hlim 56, next-header ICMPv6 (58) payload length: 64) edge-star-mini6-shv-01-amt2.facebook.com > 2a01:4f8:xxxx:yyyy::3: [icmp6 sum ok] ICMP6, echo reply, seq 1
09:25:27.070651 IP6 (flowlabel 0xa64ab, hlim 64, next-header ICMPv6 (58) payload length: 64) 2a01:4f8:xxxx:yyyy::3 > edge-star-mini6-shv-01-amt2.facebook.com: [icmp6 sum ok] ICMP6, echo request, seq 2
09:25:27.081839 IP6 (class 0x40, hlim 56, next-header ICMPv6 (58) payload length: 64) edge-star-mini6-shv-01-amt2.facebook.com > 2a01:4f8:xxxx:yyyy::3: [icmp6 sum ok] ICMP6, echo reply, seq 2
^C

Tudo como esperado. Após cerca de 15 a 30 minutos, as VMs param de ver respostas de eco e eu recebo isso de tcpdump :

[root@localhost ~]# tcpdump -i xenbr0 -vv ip6
tcpdump: listening on xenbr0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:28:23.106447 IP6 (class 0x40, hlim 56, next-header ICMPv6 (58) payload length: 64) edge-star-mini6-shv-01-amt2.facebook.com > 2a01:4f8:xxxx:yyyy::3: [icmp6 sum ok] ICMP6, echo reply, seq 1
09:28:24.113032 IP6 (class 0x40, hlim 56, next-header ICMPv6 (58) payload length: 64) edge-star-mini6-shv-01-amt2.facebook.com > 2a01:4f8:xxxx:yyyy::3: [icmp6 sum ok] ICMP6, echo reply, seq 2
^C

[root@localhost ~]# tcpdump -i eth0 -vv ip6
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:31:37.437793 IP6 (flowlabel 0x37012, hlim 64, next-header ICMPv6 (58) payload length: 64) 2a01:4f8:xxxx:yyyy::3 > edge-star-mini6-shv-01-fra3.facebook.com: [icmp6 sum ok] ICMP6, echo request, seq 19
09:31:37.442832 IP6 (class 0x40, hlim 57, next-header ICMPv6 (58) payload length: 64) edge-star-mini6-shv-01-fra3.facebook.com > 2a01:4f8:xxxx:yyyy::3: [icmp6 sum ok] ICMP6, echo reply, seq 19
^C

Por alguma razão, quando as coisas param de funcionar, o eco responde também através da interface xenbr0, em vez de apenas eth0.

A execução de service networking stop && service networking start no convidado faz tudo funcionar novamente. Desativar e reativar o link da rede VM no XenServer não ajuda não . Eu já tentei desabilitar propagandas de roteador nas VMs, mas isso também não ajudou.

Eu não tenho idéia de onde isso vem, e se é um problema do XenServer ou um do Ubuntu / Linux. Os pacotes rebeldes vistos no xenbr0 parecem apontar para o XenServer, o fato de que reconfigurar a pilha de redes VM ajuda parece apontar para o Linux ...

Atualizar

Depois de ler um pouco sobre a rede XenServer, o problema parece ser que o switch virtual XenServer direciona os pacotes para a interface errada. O fluxo esperado seria eth0 -> vif2.0 , mas os pacotes vão eth0 -> xenbr0 e, portanto, terminarão na máquina Dom0 em vez do DomU correto. Depois de reiniciar a rede no DomU, alguns dos anúncios vizinhos ou vizinhos anunciados parecem corrigir o problema temporariamente:

13:50:23.178132 IP6 :: > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28
13:50:23.378089 IP6 :: > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
13:50:23.442094 IP6 :: > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has example.org, length 24
13:50:23.698108 IP6 :: > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
13:50:24.050127 IP6 :: > ff02::1:ff00:36ab: ICMP6, neighbor solicitation, who has fe80::250:xxxx:yyyy:36ab, length 24
13:50:25.050149 IP6 fe80::250:xxxx:yyyy:36ab > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
13:50:25.174116 IP6 fe80::250:xxxx:yyyy:36ab > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
13:50:27.605989 IP6 fe80::250:xxxx:yyyy:36ab > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
13:50:27.606801 IP6 fe80::1 > fe80::250:xxxx:yyyy:36ab: ICMP6, neighbor advertisement, tgt is fe80::1, length 32
13:50:27.609480 IP6 fe80::250:xxxx:yyyy:36ab > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
13:50:27.609488 IP6 example.org > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
13:50:27.609943 IP6 fe80::1 > fe80::250:xxxx:yyyy:36ab: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

Meu conhecimento sobre o IPv6 ainda não é tão profundo para saber exatamente o que faz com que ele funcione novamente.

    
por Oliver Rahner 12.12.2016 / 09:38

1 resposta

1

O problema era, como muitas vezes, a configuração IPv6 não padrão do meu provedor de hospedagem Hetzner. Tanto quanto eu entendi, nenhuma configuração de IPv6 em ponte "verdadeira" é possível, porque minha sub-rede dedicada / 64 é fixada para ser roteada para apenas um endereço MAC específico. Na verdade, os pacotes NS podem substituir isso por um curto período de tempo, mas voltarão para o endereço MAC do host pouco tempo depois. Agora, resolvi esse problema ativando o encaminhamento de pacotes IPv6 no host e configurando-o como o gateway IPv6 nas DomUs.

    
por 17.12.2016 / 22:23