Open Vswitch Projekt: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
*[[Open Vswitch Projekt ifup/ifdown]]
+
== Open vSwitch (OVS) als Cisco-ähnlicher L2-Switch mit Management-IP ==
*[[Port Security mit Open vSwitch]]
+
 
 +
== 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 (port1–port18)
 +
* 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 (port1–port18)
 +
* Root-Zugriff
 +
* In VirtualBox/KVM: alle NICs auf '''Promiscuous Mode: Allow All'''
 +
 
 +
== Installation ==
 +
<pre>
 +
apt update
 +
apt install openvswitch-switch snmpd
 +
</pre>
 +
 
 +
=== 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.
 +
<pre>
 +
cp 10-ovs-nics.rules /etc/udev/rules.d/
 +
</pre>
 +
 
 +
=== Änderungen aktivieren ===
 +
<pre>
 +
udevadm control --reload-rules
 +
reboot
 +
</pre>
 +
 
 +
=== Kontrolle nach dem Reboot ===
 +
<pre>
 +
ip link show
 +
</pre>
 +
Erwartete Ausgabe: Interfaces '''port1''' bis '''port18''' sind sichtbar.
 +
 
 +
== Interfaces per /etc/network/interfaces konfigurieren ==
 +
port1–port17 werden als '''manual''' eingetragen — kein DHCP, keine IP, nur den Link bereitstellen für OVS. 
 +
port18 ist der NAT-Konsolen-Port und läuft außerhalb von OVS per DHCP:
 +
<pre>
 +
cat >> /etc/network/interfaces << 'EOF'
 +
 
 +
auto port1
 +
iface port1 inet manual
 +
 
 +
auto port2
 +
iface port2 inet manual
 +
 
 +
auto port3
 +
iface port3 inet manual
 +
 
 +
auto port4
 +
iface port4 inet manual
 +
 
 +
auto port5
 +
iface port5 inet manual
 +
 
 +
auto port6
 +
iface port6 inet manual
 +
 
 +
auto port7
 +
iface port7 inet manual
 +
 
 +
auto port8
 +
iface port8 inet manual
 +
 
 +
auto port9
 +
iface port9 inet manual
 +
 
 +
auto port10
 +
iface port10 inet manual
 +
 
 +
auto port11
 +
iface port11 inet manual
 +
 
 +
auto port12
 +
iface port12 inet manual
 +
 
 +
auto port13
 +
iface port13 inet manual
 +
 
 +
auto port14
 +
iface port14 inet manual
 +
 
 +
auto port15
 +
iface port15 inet manual
 +
 
 +
auto port16
 +
iface port16 inet manual
 +
 
 +
auto port17
 +
iface port17 inet manual
 +
 
 +
auto port18
 +
iface port18 inet dhcp
 +
EOF
 +
 
 +
ifup -a
 +
</pre>
 +
 
 +
== OVS-Bridge anlegen ==
 +
<pre>
 +
ovs-vsctl add-br sw0
 +
</pre>
 +
 
 +
== Trunk-Port konfigurieren (z. B. Richtung OPNsense/Router) ==
 +
<pre>
 +
ovs-vsctl add-port sw0 port1 tag=1 trunks=21,22,23 vlan_mode=native-untagged
 +
</pre>
 +
 
 +
== Access-Ports konfigurieren ==
 +
<pre>
 +
ovs-vsctl add-port sw0 port2  tag=1
 +
ovs-vsctl add-port sw0 port3  tag=21
 +
ovs-vsctl add-port sw0 port4  tag=22
 +
ovs-vsctl add-port sw0 port5  tag=23
 +
ovs-vsctl add-port sw0 port6  tag=1
 +
ovs-vsctl add-port sw0 port7  tag=1
 +
ovs-vsctl add-port sw0 port8  tag=1
 +
ovs-vsctl add-port sw0 port9  tag=1
 +
ovs-vsctl add-port sw0 port10 tag=1
 +
ovs-vsctl add-port sw0 port11 tag=1
 +
ovs-vsctl add-port sw0 port12 tag=1
 +
ovs-vsctl add-port sw0 port13 tag=1
 +
ovs-vsctl add-port sw0 port14 tag=1
 +
ovs-vsctl add-port sw0 port15 tag=1
 +
ovs-vsctl add-port sw0 port16 tag=1
 +
</pre>
 +
 
 +
== Management-Interface im VLAN 1 ==
 +
 
 +
Internen OVS-Port für die Management-IP anlegen:
 +
<pre>
 +
ovs-vsctl add-port sw0 mgmt tag=1 -- set interface mgmt type=internal
 +
</pre>
 +
 
 +
Management-IP per '''/etc/network/interfaces''' setzen:
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
== Mirror-Port konfigurieren (SPAN) ==
 +
port17 dient als Mirror-Ausgang — dort kann ein IDS oder Wireshark angeschlossen werden:
 +
<pre>
 +
ovs-vsctl -- --id=@m create Mirror name=mirror0 \
 +
    select-vlan=1,21,22,23 \
 +
    output-port=port17 \
 +
    -- set Bridge sw0 mirrors=@m
 +
</pre>
 +
 
 +
=== Kontrolle ===
 +
<pre>
 +
ovs-vsctl list Mirror
 +
</pre>
 +
 
 +
Erwartete Ausgabe (gekürzt):
 +
* name: mirror0
 +
* select-vlan: [1,21,22,23]
 +
* output-port: port17
 +
 
 +
=== Nutzung ===
 +
* An '''port17''' 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:
 +
<pre>
 +
createUser ovsuser SHA "MeinGeheimesPasswort" AES "NochGeheimer"
 +
rouser ovsuser authPriv
 +
</pre>
 +
 
 +
SNMP-Dienst neu starten:
 +
<pre>
 +
systemctl restart snmpd
 +
</pre>
 +
 
 +
Test der SNMPv3-Abfrage:
 +
<pre>
 +
snmpwalk -v3 -u ovsuser -l authPriv -a SHA -A MeinGeheimesPasswort -x AES -X NochGeheimer localhost ifDescr
 +
</pre>
 +
 
 +
== 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 ''port2'' (inklusive VLAN-Tag).
 +
* '''ovs-vsctl list interface port2'''
 +
 
 +
Zeigt, welche VLANs auf dem Trunk-Port ''port1'' erlaubt sind.
 +
* '''ovs-vsctl get port port1 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 ''port2'' als Access-Port im VLAN 10 (untagged).
 +
* '''ovs-vsctl set port port2 tag=10'''
 +
 
 +
Setzt ''port3'' als Trunk-Port für VLAN 10, 20 und 30 (getagged).
 +
* '''ovs-vsctl set port port3 trunks=10,20,30'''
 +
 
 +
Setzt ''port3'' als Trunk-Port, VLAN 10 untagged (native), VLAN 20 und 30 getagged.
 +
* '''ovs-vsctl set port port3 tag=10 trunks=20,30'''
 +
 
 +
Entfernt VLAN-Zuweisung von ''port2'' bzw. VLAN 20 von ''port3''.
 +
* '''ovs-vsctl remove port port2 tag'''
 +
* '''ovs-vsctl remove port port3 trunks 20'''
 +
 
 +
== Ergebnis ==
 +
* '''port1''' = Trunk (VLAN 1 native untagged, VLAN 21/22/23 getaggt)
 +
* '''port2–port16''' = Access-Ports (je VLAN, untagged) — 14 für VMs, 2 Reserve
 +
* '''port17''' = Mirror/SPAN-Ausgang (außerhalb OVS)
 +
* '''port18''' = 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

Version vom 3. Mai 2026, 08:32 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 (port1–port18)
  • 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 (port1–port18)
  • 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 port1 bis port18 sind sichtbar.

Interfaces per /etc/network/interfaces konfigurieren

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

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

auto port1
iface port1 inet manual

auto port2
iface port2 inet manual

auto port3
iface port3 inet manual

auto port4
iface port4 inet manual

auto port5
iface port5 inet manual

auto port6
iface port6 inet manual

auto port7
iface port7 inet manual

auto port8
iface port8 inet manual

auto port9
iface port9 inet manual

auto port10
iface port10 inet manual

auto port11
iface port11 inet manual

auto port12
iface port12 inet manual

auto port13
iface port13 inet manual

auto port14
iface port14 inet manual

auto port15
iface port15 inet manual

auto port16
iface port16 inet manual

auto port17
iface port17 inet manual

auto port18
iface port18 inet dhcp
EOF

ifup -a

OVS-Bridge anlegen

ovs-vsctl add-br sw0

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

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

Access-Ports konfigurieren

ovs-vsctl add-port sw0 port2  tag=1
ovs-vsctl add-port sw0 port3  tag=21
ovs-vsctl add-port sw0 port4  tag=22
ovs-vsctl add-port sw0 port5  tag=23
ovs-vsctl add-port sw0 port6  tag=1
ovs-vsctl add-port sw0 port7  tag=1
ovs-vsctl add-port sw0 port8  tag=1
ovs-vsctl add-port sw0 port9  tag=1
ovs-vsctl add-port sw0 port10 tag=1
ovs-vsctl add-port sw0 port11 tag=1
ovs-vsctl add-port sw0 port12 tag=1
ovs-vsctl add-port sw0 port13 tag=1
ovs-vsctl add-port sw0 port14 tag=1
ovs-vsctl add-port sw0 port15 tag=1
ovs-vsctl add-port sw0 port16 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)

port17 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=port17 \
     -- set Bridge sw0 mirrors=@m

Kontrolle

ovs-vsctl list Mirror

Erwartete Ausgabe (gekürzt):

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

Nutzung

  • An port17 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 port2 (inklusive VLAN-Tag).

  • ovs-vsctl list interface port2

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

  • ovs-vsctl get port port1 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 port2 als Access-Port im VLAN 10 (untagged).

  • ovs-vsctl set port port2 tag=10

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

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

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

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

Entfernt VLAN-Zuweisung von port2 bzw. VLAN 20 von port3.

  • ovs-vsctl remove port port2 tag
  • ovs-vsctl remove port port3 trunks 20

Ergebnis

  • port1 = Trunk (VLAN 1 native untagged, VLAN 21/22/23 getaggt)
  • port2–port16 = Access-Ports (je VLAN, untagged) — 14 für VMs, 2 Reserve
  • port17 = Mirror/SPAN-Ausgang (außerhalb OVS)
  • port18 = 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