Erstellen von VLANs zwischen Netzwerk-Namespaces

8

Ich möchte die in der folgenden Abbildung gezeigte Topologie mithilfe von Netzwerk-Namespaces (ns1 bis ns4) implementieren.

                      zu implementierende Topologie

Ich kann die obige Topologie implementieren, ohne das Netzwerk mit den folgenden Befehlen in zwei verschiedene VLANs aufzuteilen (basierend auf diesem Artikel mit dem Titel: Einführung in Linux-Netzwerk-Namespaces ):

sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
sudo ip netns add ns4

sudo ip link add veth1 type veth peer name veth11
sudo ip link add veth2 type veth peer name veth12
sudo ip link add veth3 type veth peer name veth13
sudo ip link add veth4 type veth peer name veth14

sudo ip link set veth11 netns ns1
sudo ip link set veth12 netns ns2
sudo ip link set veth13 netns ns3
sudo ip link set veth14 netns ns4

sudo ip netns exec ns1  ifconfig lo up
sudo ip netns exec ns2  ifconfig lo up
sudo ip netns exec ns3  ifconfig lo up
sudo ip netns exec ns4  ifconfig lo up

sudo ifconfig veth1 10.1.11.1/24 up
sudo ifconfig veth2 10.1.12.1/24 up
sudo ifconfig veth3 10.1.13.1/24 up
sudo ifconfig veth4 10.1.14.1/24 up

sudo ip netns exec ns1 ifconfig veth11 10.1.11.2/24 up
sudo ip netns exec ns2 ifconfig veth12 10.1.12.2/24 up
sudo ip netns exec ns3 ifconfig veth13 10.1.13.2/24 up
sudo ip netns exec ns4 ifconfig veth14 10.1.14.2/24 up

sudo ip netns exec ns1 route add default gw 10.1.11.1 veth11
sudo ip netns exec ns2 route add default gw 10.1.12.1 veth12
sudo ip netns exec ns3 route add default gw 10.1.13.1 veth13
sudo ip netns exec ns4 route add default gw 10.1.14.1 veth14

Basierend auf dem obigen Setup kann jeder alle anderen anpingen. Jetzt möchte ich ns1 und ns3 in einem VLAN und ns2 und ns4 in einem anderen isolieren. Um die VLANs zu implementieren, versuche ich Folgendes zu verwenden:

sudo vconfig add veth1 11
sudo vconfig add veth3 11
sudo vconfig add veth11 12
sudo vconfig add veth13 12

Trotzdem kann jeder alle anderen anpingen, was bedeutet, dass das Netzwerk nicht in zwei verschiedene LANS unterteilt ist. Wie kann ich erreichen, was ich versuche? Gibt es eine andere Methode für das VLAN-Tagging für virtuelle Schnittstellen?

Vasilis
quelle
Könnten Sie bitte die Routing-Tabellen beider Namespaces und Ihre "Bare-Metal" -Routing-Tabelle veröffentlichen? Sie haben 2 Vlans und dies bedeutet nicht, dass sie voneinander nicht gesehen werden. Wenn Sie Routing zwischen ihnen haben, können Sie sich gegenseitig
Bestätigung des Kommentars von @nwildner Ich denke über eine Lösung mit nach iptables.

Antworten:

5

Mehrere Dinge sind durcheinander:

  1. In Ihrer Grafik lassen Sie den "Standard-Namespace" wie einen Switch aussehen, aber Sie haben ihn für einen Router konfiguriert.
  2. Mit einem Router in der Mitte unterscheiden sich vlan1 und der andere vlan1. Sie teilen sich nicht dasselbe LAN, daher können sie sich nicht im selben VLAN befinden.
  3. Ihre vconfigAnrufe finden veth11 oder veth13 nicht, da sie sich nicht im Standard-Namespace befinden. - Du hast keine Fehler bekommen!?
  4. veth1 und veth11 sind eine „Pfeife“. Warum weisen Sie ihnen unterschiedliche VLAN-IDs zu?
  5. Warum setzen Sie nicht ein Ende der Pipe in ns1 (das tun Sie) und das andere Ende in ns3 (anstelle des Standard-Namespace)? - Sie können sie dann routen oder überbrücken, ohne sie mit ns2 und ns4 zu mischen.
  6. Oder mit anderen Worten: Mischen Sie nicht alles im Standard-Namespace, um sie später erneut aufzuteilen ...
  7. Sie können dies auch wie im Diagramm gezeigt tun, arbeiten jedoch nicht mit Routing- oder IP-Adressen (und dann VLANS oben!?!): Fügen Sie zwei Bridges in den Standard-Namespace ein und verbinden Sie eine Seite jeder „Pipe“. in einer der Brücken. - Eine Bridge (diesmal mit VLANS konfiguriert) würde dies ebenfalls tun. Ich habe jedoch nicht überprüft, ob der Linux-Bridge-Code VLAN-fähig ist. Es ist wahrscheinlich.
  8. Ihre veth-Namen sind verwirrend. Warum nicht "eth1a" zusammen mit "eth1b" oder ähnlichem auf symmetrische Weise?
  9. ipveraltet ifconfigundvconfig
Robert Siemer
quelle