Мои виртуальные машины XenServer 7.0 под управлением Ubuntu 16.04 с ядром 4.4.0 решают прекратить прием пакетов IPv6 вскоре после перезапуска всей машины или сброса сетевого интерфейса.
Пока все работает, работает tcpdump
на хосте XenServer при пинге 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
Все как ожидалось. Примерно через 15-30 минут виртуальные машины перестают видеть эхо-ответы, и я получаю это от 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
По какой-то причине, когда что-то перестает работать, эхо отвечает также пройти через интерфейс xenbr0, а не только через eth0.
Бег service networking stop && service networking start
на госте заставляет все снова работать. Отключение и повторное включение сетевой ссылки виртуальной машины на XenServer делает не Помогите. Я уже пытался отключить рекламу маршрутизатора на виртуальных машинах, но это тоже не помогло.
Я понятия не имею, откуда это, и является ли это проблемой XenServer или Ubuntu / Linux. Своевременные пакеты, видимые на xenbr0, похоже, указывают на XenServer, тот факт, что сброс сетевого стека виртуальной машины помогает, похоже, указывает на Linux ...
Обновить
Прочитав немного о сети XenServer, проблема, похоже, заключается в том, что виртуальный коммутатор XenServer направляет пакеты на неправильный интерфейс. Ожидаемый поток будет eth0 -> vif2.0
, но пакеты идут eth0 -> xenbr0
и, таким образом, заканчиваются на машине Dom0 вместо правильного DomU. После перезапуска сети на DomU некоторые из отправленных затем запросов соседей или объявлений соседей, похоже, временно устраняют эту проблему:
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
Мои знания об IPv6 еще не настолько глубоки, чтобы я мог сказать, что именно заставляет его снова работать.
Проблема заключалась, как это часто бывает, в нестандартной настройке IPv6 моего хостинг-провайдера Hetzner. Насколько я понял, «настоящая» настройка IPv6 с мостовым подключением невозможна, потому что моя выделенная подсеть / 64 фиксирована для маршрутизации только на один конкретный MAC-адрес. Пакеты NA или NS, очевидно, могут на короткое время переопределить это, но вскоре после этого он вернется к MAC-адресу хоста. Теперь я решил эту проблему, включив пересылку пакетов IPv6 на хосте и установив его в качестве шлюза IPv6 на DomU.