Warum sehe ich Unicast-Pakete von einem Computer in einem anderen VLAN?

Warum sehe ich Unicast-Pakete von einem Computer in einem anderen VLAN?

Ich versuche (immer noch), VLANs auf einem Level-3-Switch (Netgear GS516TP) richtig zu konfigurieren.

Grundlegendes Szenario: Es gibt drei VLANs: VLAN 10, 11 und 12 mit jeweils drei Ports und drei Maschinen.

  • 10.0.10.5, verbunden mit Port g10 und zu VLAN 10 gehörend.
  • 10.0.11.5, verbunden mit Port g11 und zu VLAN 11 gehörend.
  • 10.0.12.5, verbunden mit Port g12 und zu VLAN 12 gehörend.

Bildbeschreibung hier eingeben

VLAN 10 hat die nicht markierten Ports g10, g11 und g12.

Bildbeschreibung hier eingeben

VLAN 11 hat die ungetaggten Ports g10 und g11. Ebenso hat VLAN 12 die ungetaggten Ports g10 und g12.

Bildbeschreibung hier eingeben

Das Ziel besteht darin, dass Maschinen aus VLAN 11 und VLAN 12 mit den Maschinen in VLAN 10 kommunizieren können. Eine Maschine aus VLAN 11 sollte jedoch nichts über Maschinen in VLAN 12 wissen (und umgekehrt).

Während alle drei Maschinen die Netzmaske 255.255.0.0 verwenden, ist die Routing-Konfiguration folgendermaßen eingestellt:

Bildbeschreibung hier eingeben

Nun zum Problem. Wenn ich ein TCP- oder UDP-Paket von 10.0.10.5 an 10.0.11.5 sende (zum Beispiel indem ich nc -n 10.0.11.5 100), kann ich dieses Paket in Wireshark sehen, das auf der Maschine ausgeführt wird, die zu VLAN 12 gehört. Umgekehrt funktioniert es allerdings nicht, d. h. ein von 10.0.11.5 gesendetes Paket ist in VLAN 12 nicht sichtbar.

Was muss ich tun, damit die Pakete, die auf Maschinen aus VLAN 11 abzielen, nie die Ports von VLAN 12 erreichen?

Antwort1

Standardmäßig verwendet jeder Port nur L2-Informationen, um zu entscheiden, wie Pakete verarbeitet werden (L2 == MAC == Brücke). Diese Entscheidung berücksichtigt L3 nicht, d. h. sie kennt die IP-Bereiche von VLANs nicht.

Wenn Sie das Routing für das VLAN aktivieren und die MAC DA [Zieladresse] eines eingehenden Unicast-Pakets der internen Bridge-Router-Schnittstelle entspricht, wird das Paket geroutet.

Die IP-Adresse, die Sie VLANs zugewiesen haben (auf Ihrem letzten Screenshot sichtbar), „fängt“ selbst keine Pakete ab. Sie müssen Ihre Server so einrichten, dass sie tatsächlich Pakete an diese „interne Bridge-Router-Schnittstelle“ senden. Normalerweise geschieht dies durch Hinzufügen eines Routentabelleneintrags auf einem Server:

(on 10.0.10.5):
10.0.11.0/24 dev eth0 via 10.0.10.1

Nur solche Pakete, die für diese „interne Bridge-Router-Schnittstelle“ bestimmt sind, werden in ein anderes VLAN verschoben.

In meinem Beispiel Schritt für Schritt:

  1. auf 10.0.10.5 tun Sieping 10.0.11.5
  2. Server fragt "wer hat 10.0.10.1"
  3. Switch sagt "MAC 10:da:12:34 hat 10.0.10.1"
  4. Server sendet ein Paket SOURCE 10.0.10.5 DEST 10.0.11.5 MAC_DEST 10:da:12:34
  5. Wenn der Switch einen solchen MAC_DEST sieht, beschließt er, das diesem Paket zugewiesene VLAN zu ändern
  6. Der Schalter ändert auch MAC_DEST auf das zu 10.0.11.5 gehörende

(So ​​funktioniert jede Paketweiterleitung über Ethernet – nichts Spezifisches für Netgear.)

Wahrscheinlich muss ein Port nicht in mehreren VLANs sein (ich habe das nicht wirklich überprüft).

Stellen Sie außerdemRouting -> IP -> Routing-Modus=Ja

Netgear-Unterstützung:Was ist VLAN-Routing?

Antwort2

So ist das nicht möglich. Sie benötigen entweder spezielle VLAN-Funktionen (Port-Isolierung oder ähnliches) oder Sie müssen es mit einem Router tun.

Was hier passiert, ist, dass ein Paket (also ein Ethernet-Frame), wenn es in einen Port eingeht, seine VLAN-ID von der PVID dieses Ports erhält. Dann wird es von den anderen Ports gesendet, die sich ebenfalls in demselben VLAN befinden. (Außer dass ein Switch es natürlich nur an einen bestimmten Port weiterleiten würde, wenn er einen Port für die Ziel-MAC für dieses bestimmte VLAN gespeichert hat. Dies könnte nicht der Fall sein, da sich alle Ports in unterschiedlichen VLANs befinden und die Ziele daher nicht in den VLANs zu finden sind, von denen die Frames gesendet werden.)

Dies bedeutet, dass alles, was über Port 10 an den Switch gesendet wird, auf Port 11 und 12 erscheinen kann, aber alles, was über Port 11 oder 12 gesendet wird, nur an Port 10 gehen kann.


Portisolierung/geschützte Ports/ähnliche Funktionen würden die Weiterleitung von Frames innerhalb eines einzelnen VLAN blockieren, mit Ausnahme einiger spezieller Ports. Mit dieser Art von Funktion würden Sie alle Ports in ein einzelnes VLAN einordnen und Port 10 als speziell markieren, sodass er Datenverkehr an/von 11 und 12 senden/empfangen könnte. Die Funktion würde jedoch 11 und 12 voneinander isolieren.


Die andere Möglichkeit besteht darin, sowohl VLAN 11 als auch VLAN 12 als getaggte VLANs auf Port 10 auf die Maschine zu bringen. Dann können Sie auf dieser Maschine unterschiedliche IP-Schnittstellen für die VLANs erstellen, sodass sie mit beiden kommunizieren können. Ohne Routing auf der Maschine können 11 und 12 nicht miteinander kommunizieren. Die Maschine müsste natürlich trotzdem VLAN-fähig sein.

Wenn der Netgear selbst als Router zwischen VLANs fungieren kann, funktioniert das natürlich auch. Sie müssen lediglich VLANs für jede Maschine einrichten, das Routing arrangieren und eine Filterung (Firewall) zwischen 11 und 12 hinzufügen.

verwandte Informationen