Open Vswitch Projekt: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Der Seiteninhalt wurde durch einen anderen Text ersetzt: „*Open Vswitch Projekt nmcli *Open Vswitch Projekt ifup/ifdown“)
Markierung: Ersetzt
Zeile 1: Zeile 1:
 
*[[Open Vswitch Projekt nmcli]]
 
*[[Open Vswitch Projekt nmcli]]
 
*[[Open Vswitch Projekt ifup/ifdown]]
 
*[[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 (eth0–eth17)
 
* 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 (eth0–eth17)
 
* Root-Zugriff
 
* In VirtualBox/KVM: alle NICs auf '''Promiscuous Mode: Allow All'''
 
 
== Installation ==
 
<pre>
 
apt update
 
apt install openvswitch-switch snmpd network-manager
 
</pre>
 
 
NetworkManager als Standard-Renderer aktivieren:
 
<pre>
 
systemctl enable --now NetworkManager
 
</pre>
 
 
 
 
=== udev-Regel in der VM anlegen ===
 
Die Ausgabe die wir auf dem Hosts System produziert haben, in der VM unter '''/etc/udev/rules.d/10-ovs-nics.rules''' speichern.
 
 
=== Änderungen aktivieren ===
 
<pre>
 
udevadm control --reload-rules
 
reboot
 
</pre>
 
 
=== Kontrolle nach dem Reboot ===
 
<pre>
 
ip link show
 
</pre>
 
Erwartete Ausgabe: Interfaces '''eth1''' bis '''eth18''' sind sichtbar.
 
 
== Interfaces per nmcli konfigurieren ==
 
Die physischen Interfaces werden ausschließlich per '''nmcli''' aktiviert — kein Editieren von Konfigurationsdateien nötig. 
 
OVS übernimmt danach die komplette VLAN- und Bridge-Konfiguration.
 
 
Automatisch angelegte Profile von NetworkManager löschen und sauber neu anlegen:
 
<pre>
 
for i in $(seq 2 17); do
 
    nmcli con delete "Wired connection $i"
 
    nmcli con add type ethernet ifname eth$i con-name eth$i \
 
        ipv4.method disabled \
 
        ipv6.method ignore \
 
        connection.autoconnect yes
 
    nmcli con up eth$i
 
done
 
</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 eth1 tag=1 trunks=21,22,23 vlan_mode=native-untagged
 
</pre>
 
 
== Access-Ports konfigurieren ==
 
<pre>
 
ovs-vsctl add-port sw0 eth1  tag=1
 
ovs-vsctl add-port sw0 eth2  tag=21
 
ovs-vsctl add-port sw0 eth3  tag=22
 
ovs-vsctl add-port sw0 eth4  tag=23
 
ovs-vsctl add-port sw0 eth5  tag=1
 
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
 
</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 Hand setzen 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) ==
 
<pre>
 
ovs-vsctl -- --id=@m create Mirror name=mirror0 \
 
    select-vlan=1,21,22,23 \
 
    output-port=eth17 \
 
    -- 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: 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:
 
<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 ''eth1'' (inklusive VLAN-Tag).
 
* '''ovs-vsctl list interface eth1'''
 
 
Zeigt, welche VLANs auf dem Trunk-Port ''eth0'' erlaubt sind.
 
* '''ovs-vsctl get port eth0 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'''
 
 
=== nmcli-Diagnose ===
 
 
Zeigt alle aktiven Verbindungen.
 
* '''nmcli con show --active'''
 
 
Zeigt den Status eines bestimmten Interface.
 
* '''nmcli dev status'''
 
 
=== VLAN-Konfiguration ändern ===
 
 
Setzt ''eth1'' als Access-Port im VLAN 10 (untagged).
 
* '''ovs-vsctl set port eth1 tag=10'''
 
 
Setzt ''eth2'' als Trunk-Port für VLAN 10, 20 und 30 (getagged).
 
* '''ovs-vsctl set port eth2 trunks=10,20,30'''
 
 
Setzt ''eth2'' als Trunk-Port, VLAN 10 untagged (native), VLAN 20 und 30 getagged.
 
* '''ovs-vsctl set port eth2 tag=10 trunks=20,30'''
 
 
Entfernt VLAN-Zuweisung von ''eth1'' bzw. VLAN 20 von ''eth2''.
 
* '''ovs-vsctl remove port eth1 tag'''
 
* '''ovs-vsctl remove port eth2 trunks 20'''
 
 
== Ergebnis ==
 
* '''eth0''' = Trunk (VLAN 1 native untagged, VLAN 21/22/23 getaggt)
 
* '''eth1–eth16''' = Access-Ports (je VLAN, untagged) — 14 für VMs, 2 Reserve
 
* '''eth17''' = Mirror/SPAN-Ausgang + DHCP-Uplink
 
* '''mgmt''' = Management-Port im VLAN 1 mit IP 172.26.56.2/26
 
* '''SNMPv3''' = Überwachung aller Interfaces möglich
 
* Kein Editieren von Konfigurationsdateien nötig
 
 
== Nächste Schritte ==
 
* Weitere VLANs hinzufügen
 
* Layer-3 Routing mit OVS oder FRRouting ergänzen
 
* VXLAN/EVPN mit OVN erproben
 

Version vom 2. Mai 2026, 09:06 Uhr