Open Vswitch Projekt ifup/ifdown
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)
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
Management-Interface im VLAN 1
Internen OVS-Port für die Management-IP anlegen:
ovs-vsctl add-port sw0 mgmt tag=1 -- set interface mgmt 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