Open Vswitch Projekt ifup/ifdown: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 20: Zeile 20:
 
== Installation ==
 
== Installation ==
 
<pre>
 
<pre>
sudo apt update
+
apt update
sudo apt install openvswitch-switch snmpd
+
apt install openvswitch-switch snmpd
 
</pre>
 
</pre>
  
 
=== udev-Regel in der VM anlegen ===
 
=== udev-Regel in der VM anlegen ===
 
Die Ausgabe die wir auf dem Host-System produziert haben, in der VM unter '''/etc/udev/rules.d/10-ovs-nics.rules''' speichern.
 
Die Ausgabe die wir auf dem Host-System produziert haben, in der VM unter '''/etc/udev/rules.d/10-ovs-nics.rules''' speichern.
 +
<pre>
 +
cp 10-ovs-nics.rules /etc/udev/rules.d/
 +
</pre>
  
 
=== Änderungen aktivieren ===
 
=== Änderungen aktivieren ===
Zeile 40: Zeile 43:
  
 
== Interfaces per /etc/network/interfaces konfigurieren ==
 
== Interfaces per /etc/network/interfaces konfigurieren ==
Alle physischen Interfaces als '''manual''' eintragen — kein DHCP, keine IP, nur den Link bereitstellen für OVS:
+
eth1–eth17 werden als '''manual''' eingetragen — kein DHCP, keine IP, nur den Link bereitstellen für OVS
 +
eth18 ist der NAT-Konsolen-Port und läuft außerhalb von OVS per DHCP:
 
<pre>
 
<pre>
 
cat >> /etc/network/interfaces << 'EOF'
 
cat >> /etc/network/interfaces << 'EOF'
Zeile 94: Zeile 98:
 
auto eth17
 
auto eth17
 
iface eth17 inet manual
 
iface eth17 inet manual
 +
 +
auto eth18
 +
iface eth18 inet dhcp
 
EOF
 
EOF
  
 
ifup -a
 
ifup -a
 
</pre>
 
</pre>
 +
==Reboot==
 +
systemctl reboot
 +
=Ab dann Einlogen über==
 +
ssh ovs-lab
  
 
== OVS-Bridge anlegen ==
 
== OVS-Bridge anlegen ==
 
<pre>
 
<pre>
ovs-vsctl add-br sw0
+
sudo ovs-vsctl add-br sw0
 
</pre>
 
</pre>
  
 
== Trunk-Port konfigurieren (z. B. Richtung OPNsense/Router) ==
 
== Trunk-Port konfigurieren (z. B. Richtung OPNsense/Router) ==
 
<pre>
 
<pre>
ovs-vsctl add-port sw0 eth1 tag=1 trunks=21,22,23 vlan_mode=native-untagged
+
sudo ovs-vsctl add-port sw0 eth1 tag=1 trunks=21,22,23 vlan_mode=native-untagged
 
</pre>
 
</pre>
  
Zeile 126: Zeile 137:
 
ovs-vsctl add-port sw0 eth15 tag=1
 
ovs-vsctl add-port sw0 eth15 tag=1
 
ovs-vsctl add-port sw0 eth16 tag=1
 
ovs-vsctl add-port sw0 eth16 tag=1
ovs-vsctl add-port sw0 eth17 tag=1
 
 
</pre>
 
</pre>
  
== Management-Interface im VLAN 1 ==
+
== Interface der VLANs anlegen ==
 +
 
  
Internen OVS-Port für die Management-IP anlegen:
 
 
<pre>
 
<pre>
 
ovs-vsctl add-port sw0 mgmt tag=1 -- set interface mgmt type=internal
 
ovs-vsctl add-port sw0 mgmt tag=1 -- set interface mgmt type=internal
 +
ovs-vsctl add-port sw0 dmz tag=21 -- set interface dmz type=internal
 +
ovs-vsctl add-port sw0 lan tag=22 -- set interface lan type=internal
 +
ovs-vsctl add-port sw0 server tag=23 -- set interface server type=internal
 
</pre>
 
</pre>
  
Zeile 152: Zeile 165:
  
 
== Mirror-Port konfigurieren (SPAN) ==
 
== Mirror-Port konfigurieren (SPAN) ==
 +
eth17 dient als Mirror-Ausgang — dort kann ein IDS oder Wireshark angeschlossen werden:
 
<pre>
 
<pre>
 
ovs-vsctl -- --id=@m create Mirror name=mirror0 \
 
ovs-vsctl -- --id=@m create Mirror name=mirror0 \
Zeile 233: Zeile 247:
 
* '''eth1''' = Trunk (VLAN 1 native untagged, VLAN 21/22/23 getaggt)
 
* '''eth1''' = Trunk (VLAN 1 native untagged, VLAN 21/22/23 getaggt)
 
* '''eth2–eth16''' = Access-Ports (je VLAN, untagged) — 14 für VMs, 2 Reserve
 
* '''eth2–eth16''' = Access-Ports (je VLAN, untagged) — 14 für VMs, 2 Reserve
* '''eth17''' = Mirror/SPAN-Ausgang
+
* '''eth17''' = Mirror/SPAN-Ausgang (außerhalb OVS)
* '''eth18''' = NAT-Konsolen-Port (SSH Port 2222)
+
* '''eth18''' = NAT-Konsolen-Port, DHCP (außerhalb OVS, SSH Port 2222)
 
* '''mgmt''' = Management-Port im VLAN 1 mit IP 172.26.56.2/26
 
* '''mgmt''' = Management-Port im VLAN 1 mit IP 172.26.56.2/26
 
* '''SNMPv3''' = Überwachung aller Interfaces möglich
 
* '''SNMPv3''' = Überwachung aller Interfaces möglich

Aktuelle Version vom 2. Mai 2026, 13:12 Uhr

Open vSwitch (OVS) als Cisco-ähnlicher L2-Switch mit Management-IP

Ziel

In diesem Artikel wird beschrieben, wie man unter Linux mit Open vSwitch (OVS) eine Schulungsumgebung aufbaut, die einem Cisco Catalyst oder Nexus Switch ähnelt. Funktionen im ersten Schritt:

  • bis zu 18 Interfaces (eth1–eth18)
  • VLANs (1, 21, 22, 23)
  • 1 Trunk-Port mit VLAN 1 (native untagged) + VLANs 21/22/23 getaggt
  • mehrere Access-Ports (je ein VLAN)
  • 1 Mirror-Port (SPAN)
  • SNMPv3 zur Überwachung
  • Management-IP im VLAN 1

Voraussetzungen

  • Debian 13
  • Linux-VM mit ≥ 18 Netzwerkkarten (eth1–eth18)
  • Root-Zugriff
  • In VirtualBox/KVM: alle NICs auf Promiscuous Mode: Allow All

Installation

apt update
apt install openvswitch-switch snmpd

udev-Regel in der VM anlegen

Die Ausgabe die wir auf dem Host-System produziert haben, in der VM unter /etc/udev/rules.d/10-ovs-nics.rules speichern.

cp 10-ovs-nics.rules /etc/udev/rules.d/

Änderungen aktivieren

udevadm control --reload-rules
reboot

Kontrolle nach dem Reboot

ip link show

Erwartete Ausgabe: Interfaces eth1 bis eth18 sind sichtbar.

Interfaces per /etc/network/interfaces konfigurieren

eth1–eth17 werden als manual eingetragen — kein DHCP, keine IP, nur den Link bereitstellen für OVS. eth18 ist der NAT-Konsolen-Port und läuft außerhalb von OVS per DHCP:

cat >> /etc/network/interfaces << 'EOF'

auto eth1
iface eth1 inet manual

auto eth2
iface eth2 inet manual

auto eth3
iface eth3 inet manual

auto eth4
iface eth4 inet manual

auto eth5
iface eth5 inet manual

auto eth6
iface eth6 inet manual

auto eth7
iface eth7 inet manual

auto eth8
iface eth8 inet manual

auto eth9
iface eth9 inet manual

auto eth10
iface eth10 inet manual

auto eth11
iface eth11 inet manual

auto eth12
iface eth12 inet manual

auto eth13
iface eth13 inet manual

auto eth14
iface eth14 inet manual

auto eth15
iface eth15 inet manual

auto eth16
iface eth16 inet manual

auto eth17
iface eth17 inet manual

auto eth18
iface eth18 inet dhcp
EOF

ifup -a

Reboot

systemctl reboot

Ab dann Einlogen über=

ssh ovs-lab

OVS-Bridge anlegen

sudo ovs-vsctl add-br sw0

Trunk-Port konfigurieren (z. B. Richtung OPNsense/Router)

sudo ovs-vsctl add-port sw0 eth1 tag=1 trunks=21,22,23 vlan_mode=native-untagged

Access-Ports konfigurieren

ovs-vsctl add-port sw0 eth2  tag=1
ovs-vsctl add-port sw0 eth3  tag=21
ovs-vsctl add-port sw0 eth4  tag=22
ovs-vsctl add-port sw0 eth5  tag=23
ovs-vsctl add-port sw0 eth6  tag=1
ovs-vsctl add-port sw0 eth7  tag=1
ovs-vsctl add-port sw0 eth8  tag=1
ovs-vsctl add-port sw0 eth9  tag=1
ovs-vsctl add-port sw0 eth10 tag=1
ovs-vsctl add-port sw0 eth11 tag=1
ovs-vsctl add-port sw0 eth12 tag=1
ovs-vsctl add-port sw0 eth13 tag=1
ovs-vsctl add-port sw0 eth14 tag=1
ovs-vsctl add-port sw0 eth15 tag=1
ovs-vsctl add-port sw0 eth16 tag=1

Interface der VLANs anlegen

ovs-vsctl add-port sw0 mgmt tag=1 -- set interface mgmt type=internal
ovs-vsctl add-port sw0 dmz tag=21 -- set interface dmz type=internal
ovs-vsctl add-port sw0 lan tag=22 -- set interface lan type=internal
ovs-vsctl add-port sw0 server tag=23 -- set interface server type=internal

Management-IP per /etc/network/interfaces setzen:

cat >> /etc/network/interfaces << 'EOF'

auto mgmt
iface mgmt inet static
    address 172.26.56.2/26
    gateway 172.26.56.1
    dns-nameservers 172.26.56.1
    dns-search it2XX.int
EOF

ifup mgmt

Mirror-Port konfigurieren (SPAN)

eth17 dient als Mirror-Ausgang — dort kann ein IDS oder Wireshark angeschlossen werden:

ovs-vsctl -- --id=@m create Mirror name=mirror0 \
     select-vlan=1,21,22,23 \
     output-port=eth17 \
     -- set Bridge sw0 mirrors=@m

Kontrolle

ovs-vsctl list Mirror

Erwartete Ausgabe (gekürzt):

  • name: mirror0
  • select-vlan: [1,21,22,23]
  • output-port: eth17

Nutzung

  • An eth17 wird ein IDS oder ein Analyse-System (z. B. Wireshark/tcpdump) angeschlossen
  • Dort ist der gesamte Traffic der VLANs 1, 21, 22 und 23 sichtbar

SNMPv3 konfigurieren

Datei /etc/snmp/snmpd.conf anpassen:

createUser ovsuser SHA "MeinGeheimesPasswort" AES "NochGeheimer"
rouser ovsuser authPriv

SNMP-Dienst neu starten:

systemctl restart snmpd

Test der SNMPv3-Abfrage:

snmpwalk -v3 -u ovsuser -l authPriv -a SHA -A MeinGeheimesPasswort -x AES -X NochGeheimer localhost ifDescr

Wichtige Befehle

OVS-Diagnose

Zeigt die komplette OVS-Bridge-Konfiguration (Bridges, Ports, VLAN-Tags).

  • ovs-vsctl show

Listet alle Ports, die an der Bridge sw0 hängen.

  • ovs-vsctl list-ports sw0

Zeigt Details zum Port eth2 (inklusive VLAN-Tag).

  • ovs-vsctl list interface eth2

Zeigt, welche VLANs auf dem Trunk-Port eth1 erlaubt sind.

  • ovs-vsctl get port eth1 trunks

Zeigt den Zustand der Datenebene (DPIF-Interfaces, OpenFlow).

  • ovs-dpctl show

Zeigt die Forwarding Database (FDB), ähnlich wie show mac address-table auf Cisco.

  • ovs-appctl fdb/show sw0

Zeigt vorhandene SPAN/Mirror-Konfigurationen.

  • ovs-appctl mirror/list sw0

VLAN-Konfiguration ändern

Setzt eth2 als Access-Port im VLAN 10 (untagged).

  • ovs-vsctl set port eth2 tag=10

Setzt eth3 als Trunk-Port für VLAN 10, 20 und 30 (getagged).

  • ovs-vsctl set port eth3 trunks=10,20,30

Setzt eth3 als Trunk-Port, VLAN 10 untagged (native), VLAN 20 und 30 getagged.

  • ovs-vsctl set port eth3 tag=10 trunks=20,30

Entfernt VLAN-Zuweisung von eth2 bzw. VLAN 20 von eth3.

  • ovs-vsctl remove port eth2 tag
  • ovs-vsctl remove port eth3 trunks 20

Ergebnis

  • eth1 = Trunk (VLAN 1 native untagged, VLAN 21/22/23 getaggt)
  • eth2–eth16 = Access-Ports (je VLAN, untagged) — 14 für VMs, 2 Reserve
  • eth17 = Mirror/SPAN-Ausgang (außerhalb OVS)
  • eth18 = NAT-Konsolen-Port, DHCP (außerhalb OVS, SSH Port 2222)
  • mgmt = Management-Port im VLAN 1 mit IP 172.26.56.2/26
  • SNMPv3 = Überwachung aller Interfaces möglich

Nächste Schritte

  • Weitere VLANs hinzufügen
  • Layer-3 Routing mit OVS oder FRRouting ergänzen
  • VXLAN/EVPN mit OVN erproben