Система пинга с несколькими интерфейсами

Система пинга с несколькими интерфейсами

Настраивать:

  • Хост-машина: macOS, адрес IPv6 - 2002::3/64 (vmnet1)
  • Гостевая машина: Ubuntu, работающая внутри vmware, IPv6-адрес - 2002::2/64 (eth0) и 2001::1/64 (tun0)

Конфигурация:

  • Включена переадресация IPv4 и IPv6 в Ubuntu
  • Добавлен маршрут на macOS:sudo route add -inet6 2001::/64 -interface vmnet1

диаграмма_настройки_конфигурации

Проблема: Я не могу ping6 2001::1из macOS. Однако я могу ping6 2002::2. Я пробовал с настройками VMware «Поделиться с моим Mac», «Автоопределение», а также «Частный для Mac».

решение1

Недостаточно направить 2001::/64 через vmnet1; необходимо также указатькакой шлюзна vmnet1 пакеты должны быть отправлены на – 2002::2 в данном случае.

Без спецификации шлюза источник попытается напрямую разрешить пункт назначения с помощью ARP (для IPv4) или NDP (ICMPv6 Neighbour Discovery). Однако IPv6 обычно рассматривает адреса как принадлежащие отдельным интерфейсам или ссылкам, а не всему хосту – поэтому хосты IPv6 обычно игнорируют запросы Neighbour Discovery, если они поступают через интерфейс, которому не назначен этот адрес.(Это похоже на Linux arp_ignore=1 для IPv4.)

Итак, система Ubuntu не будет отвечать на запросы NDP для 2001::1, поступающие через eth0, потому что на eth0 такого адреса нет – он назначен только на tun0. Однако она будет отвечать на запросы NDP для 2002::2, поэтому ваш маршрут должен выглядеть так:

route add -inet6 2001::/64 2002::2

(Тем не менее, как только пакеты были успешно маршрутизированы через L2 на правильный MAC-адрес, система Ubuntuволяпринять и распознать 2001::1 в заголовке IP (L3), поскольку этот адрес отмечен как локальный в его таблице маршрутизации.)

Связанный контент