Ping-System mit mehreren Schnittstellen

Ping-System mit mehreren Schnittstellen

Aufstellen:

  • Host-Rechner: macOS, IPv6-Adresse – 2002::3/64 (vmnet1)
  • Gastcomputer: Ubuntu läuft in VMware, IPv6-Adresse – 2002::2/64 (eth0) und 2001::1/64 (tun0)

Aufbau:

  • IPv4- und IPv6-Weiterleitung unter Ubuntu aktiviert
  • Auf macOS hinzugefügte Route:sudo route add -inet6 2001::/64 -interface vmnet1

Konfigurations-Setup-Diagramm

Problem: Von macOS aus kann ich nicht ping6 2001::1. Allerdings geht es ping6 2002::2. Ich habe es mit den VMware-Einstellungen „Mit meinem Mac teilen“, „Automatisch erkennen“ und auch „Privat für Mac“ versucht.

Antwort1

Es genügt nicht, 2001::/64 über vmnet1 zu routen; Sie müssen auch angebenwelches GatewayAuf vmnet1 sollten die Pakete an 2002::2 gesendet werden, in diesem Fall an 2002::2.

Ohne Gateway-Spezifikation versucht die Quelle, das Ziel direkt über ARP (für IPv4) oder NDP (ICMPv6 Neighbour Discovery) aufzulösen. Allerdings betrachtet IPv6 Adressen normalerweise als zu den einzelnen Schnittstellen oder Links gehörend, nicht zum gesamten Host. Daher ignorieren IPv6-Hosts normalerweise Neighbour Discovery-Anfragen, wenn sie über eine Schnittstelle eingehen, der diese Adresse nicht zugewiesen ist.(Dies ist ähnlich wie Linux arp_ignore=1 für IPv4.)

Das Ubuntu-System wird also nicht auf NDP-Anfragen für 2001::1 antworten, die über eth0 eingehen, da es auf eth0 keine solche Adresse gibt – sie ist nur auf tun0 zugewiesen. Es wird jedoch auf NDP-Anfragen für 2002::2 antworten, Ihre Route sollte also folgendermaßen aussehen:

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

(Das heißt, sobald die Pakete erfolgreich über L2 an die richtige MAC-Adresse weitergeleitet wurden, das Ubuntu-SystemWilleAkzeptieren und erkennen Sie 2001::1 im IP-Header (L3), da diese Adresse in der Routing-Tabelle als lokal markiert ist.)

verwandte Informationen