# OPNsense Performance Tuning: Das Gateway auf Höchstgeschwindigkeit trimmen
TL;DR / Management Summary Standard-Installationen von OPNsense sind auf maximale Kompatibilität ausgelegt, nicht auf maximale Geschwindigkeit. In Umgebungen mit 10 GbE oder schnellen Proxmox-Bridges (Artikel 547) müssen wir den FreeBSD-Kernel und den Netzwerkstack manuell anpassen. Ein Senior Admin optimiert das Interrupt-Handling, konfiguriert Tunables für den Speicher-Stack und stellt sicher, dass Hardware-Features wie AES-NI und RSS optimal genutzt werden.
# 1. Hardware-Voraussetzungen
Das Fundament.
Bevor wir softwareseitig tunen, muss die Hardware passen:
- CPU: Taktrate ist wichtiger als Kern-Anzahl für Single-Stream Performance (PPPoE).
- NIC: Intel (ix, igb) oder Mellanox. Realtek-Karten (re) sind für High-Performance ungeeignet.
- Bus: PCIe Lanes prüfen. Eine 10G Karte in einem PCIe x1 Slot wird niemals volle Leistung bringen.
# 2. Kernel Tunables (Der BSD-Hebel)
Feingefühl in der Registry von BSD.
Unter System -> Settings -> Tunables können Sie Parameter direkt an den Kernel übergeben.
# Die wichtigsten Performance-Tunables
net.inet.tcp.recvbuf_max: Auf16777216erhöhen für schnelle WAN-Links.net.inet.tcp.sendbuf_max: Auf16777216erhöhen.kern.ipc.maxsockbuf: Auf16777216setzen (ermöglicht größere TCP Windows).net.isr.dispatch: Aufdeferredstellen, um die Last auf mehrere CPU-Kerne zu verteilen (RSS).
# 3. Deep Dive: Netzwerk-Karten Tuning
Vom Treiber zum Draht.
# 1. Hardware Offloading
Wie in Artikel 547 erwähnt: In virtuellen Umgebungen (Proxmox) aus, auf Bare-Metal (mit Intel Karten) an.
- Exception: Wenn Sie den Shaper (Artikel 552) nutzen, müssen Sie Offloading meist deaktivieren, da der Shaper die echten Paketgrößen sehen muss.
# 2. RSS (Receive Side Scaling)
Ermöglicht es der NIC, eingehende Pakete auf verschiedene CPU-Queues zu verteilen.
- Aktion:
net.inet.rss.enabled=1undnet.inet.rss.bits=X(entsprechend der CPU-Kerne) setzen.
# 4. Day-2 Operations: ZFS Performance
Dateisystem-Tuning.
Wenn Sie OPNsense auf ZFS installiert haben (Empfehlung!):
- LZ4 Compression: Standardmäßig aktiv, spart I/O.
- ZFS ARC: Begrenzen Sie den RAM-Verbrauch des ZFS-Cache, damit genug für OPNsense-Dienste (wie Suricata) bleibt.
# In /boot/loader.conf.local
vfs.zfs.arc_max="512M"
# 5. Troubleshooting & “War Stories”
Wenn das Tuning nach hinten losgeht.
# Top 3 Fehlerbilder
-
Symptom: System bootet nicht mehr nach Tunable-Änderung.
- Lösung: Booten in den “Single User Mode” (Option 2 im Bootloader) und die Änderungen in
/boot/loader.confrückgängig machen.
- Lösung: Booten in den “Single User Mode” (Option 2 im Bootloader) und die Änderungen in
-
Symptom: Paketverluste bei hohem PPS (Packets Per Second).
- Ursache: Zu kleine Mbuf-Cluster.
- Fix:
kern.ipc.nmbclustersauf1000000erhöhen.
-
Symptom: VPN-Performance (OpenVPN) ist trotz starker CPU schlecht.
- Ursache: OpenVPN ist Single-Threaded.
- Lösung: Wechsel auf WireGuard (Artikel 566) oder Betrieb mehrerer OpenVPN-Instanzen auf verschiedenen Ports.
# “War Story”: Der 10G-Flaschenhals
Ein Kunde wunderte sich, warum sein neuer 10G-Cluster zwischen zwei VLANs nur 3 Gbit/s schaffte. Die CPU der OPNsense war bei 100% auf einem Kern. Die Entdeckung: Das Interface nutzte nur eine einzige Interrupt-Queue. Ein einziger CPU-Kern musste den gesamten 10G Traffic verarbeiten. Lösung: Aktivierung von MSI-X und RSS in den Tunables. Danach verteilte sich die Last auf 4 Kerne, und der Durchsatz stieg auf 9.4 Gbit/s. Lehre: Ohne Multi-Queue Support ist 10G-Routing auf Software-Appliances nicht möglich.
# 6. Monitoring & Reporting
Flaschenhälse finden.
# Dashboard Analyse
- Interrupts: Wenn der Wert
Interruptsim System-Widget extrem hoch ist, deutet dies auf ineffizientes NIC-Handling hin. - Load Average: Beobachten Sie die 1-Minuten Last bei großen Datei-Transfers.
# 7. Fazit & Empfehlung
Performance-Tuning ist ein iterativer Prozess.
- Empfehlung: Ändern Sie immer nur einen Parameter zurzeit und testen Sie die Stabilität für 24 Stunden.
- Wichtig: Nutzen Sie für Benchmarks das Tool
iperf3(Artikel 570), um objektive Messwerte zu erhalten.
# Anhang: Die wichtigsten Performance-Befehle (Shell)
| Aufgabe | Befehl |
|---|---|
| CPU Last pro Kern | top -P |
| Interrupts sehen | vmstat -i |
| Tunables prüfen | `sysctl -a |
| NIC Statistik | netstat -ihw 1 |