{"id":25800,"date":"2025-10-10T10:07:00","date_gmt":"2025-10-10T08:07:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/maximierung-der-wireguard-leistung-fortgeschrittenes-tuning-und-benchmarking\/"},"modified":"2025-11-03T10:23:58","modified_gmt":"2025-11-03T09:23:58","slug":"wireguard-leistung-optimieren","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/de\/wireguard-leistung-optimieren\/","title":{"rendered":"WireGuard Leistung optimieren: Fortgeschrittenes Tuning und Benchmarking"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1.jpg\" alt=\"WireGuard Leistung optimieren: Fortgeschrittenes Tuning und Benchmarking (Titelbild)\" class=\"wp-image-25452\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1.jpg 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1-600x315.jpg 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1-768x403.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Dieser praktische Leitfaden zeigt dir, wie du die WireGuard-Leistung auf einem VPS oder dedizierten Server messen und maximieren kannst. Du erstellst eine zuverl\u00e4ssige Basis f\u00fcr den Tunnel-Benchmark, korrigierst Variablen mit gro\u00dfer Auswirkung (MTU\/MSS, parallele Streams, GRO\/GSO, CPU-Tuning) und konfigurierst eine saubere, reproduzierbare Server-Schnittstelle. Anschlie\u00dfend behandeln wir einige fortgeschrittene Konzepte wie Offload-Aware-Tunneling, Parallelit\u00e4t, NUMA\/Frequenz und Details zur Netzwerktopologie und schlie\u00dfen mit einem kurzen FAQ ab. Anhand der Checklisten und verifizierten Befehle lassen sich theoretische Erkenntnisse in wiederholbare Ergebnisse umsetzen. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-d618bbfa\"><h2 class=\"uagb-heading-text\">Einf\u00fchrung: Volle WireGuard Leistung entfesseln<\/h2><\/div>\n\n\n\n<p>Die Leistung von WireGuard kann au\u00dfergew\u00f6hnlich sein, wenn du sie richtig konfigurierst. WireGuard ist zwar von Grund auf schnell, doch um Spitzenwerte zu erreichen, m\u00fcssen wichtige Faktoren ber\u00fccksichtigt werden: CPU-Eigenschaften, korrekte MTU-Einstellungen und strenge Benchmarking-Methoden. Viele Leistungsprobleme von WireGuard sind auf einfache Fehlkonfigurationen zur\u00fcckzuf\u00fchren, wie z. B. eine falsche MTU (Maximum Transmission Unit), die Pakete fragmentiert, oder Single-Stream-Tests, die Multi-Core-F\u00e4higkeiten au\u00dfer Acht lassen. <\/p>\n\n\n\n<p>Nach jeder \u00c4nderung unbedingt testen, um Verbesserungen sicherzustellen und einen klaren Rollback-Pfad zu gew\u00e4hrleisten. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-d3428647\"><h2 class=\"uagb-heading-text\">Die Technologie hinter WireGuard&#8217;s Geschwindigkeit: Warum es schneller ist <\/h2><\/div>\n\n\n\n<p>Die Geschwindigkeit von WireGuard ergibt sich aus drei grundlegenden Design-Ideen: Einfachheit, moderne Kryptographie und intelligente Platzierung im Betriebssystem. Das Verst\u00e4ndnis dieser Faktoren hilft zu erkl\u00e4ren, warum WireGuard konsequent herk\u00f6mmliche VPN-Protokolle \u00fcbertrifft.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"600\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/wireguard-performance-key-factors_DE.png\" alt=\"WireGuards wichtigste Leistungsfaktoren\" class=\"wp-image-25447\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/wireguard-performance-key-factors_DE.png 1000w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/wireguard-performance-key-factors_DE-600x360.png 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/wireguard-performance-key-factors_DE-768x461.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>WireGuard erreicht seine Leistung durch mehrere Schl\u00fcsselfaktoren: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Schlankes Design<\/strong>: ~4.000 Zeilen Code (im Vergleich zu mehreren Zehntausend von OpenVPN), was Audits und Optimierungen einfacher macht. <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Moderne Verschl\u00fcsselung<\/strong>: Verwendet ChaCha20-Poly1305, das auf allen Prozessoren effizient l\u00e4uft, im Gegensatz zu AES, das f\u00fcr optimale Geschwindigkeit Hardwarebeschleunigung (AES-NI) ben\u00f6tigt. <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kernel-Integration<\/strong>: Verarbeitet Pakete ohne aufwendige Kontextwechsel. <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>UDP-Optimierung<\/strong>: Nutzt integrierte Funktionen zur Netzwerkbeschleunigung. <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nahtloses Rekeying<\/strong>: Schl\u00fcssel rotiert automatisch alle paar Minuten oder nach Nachrichtenschwellen \u00fcber kurze Handshakes, ohne die Flows zu unterbrechen.<\/li>\n<\/ul>\n\n\n\n<p>Mit Multi-Queue-Netzwerkkarten k\u00f6nnen verschiedene Verbindungsfl\u00fcsse auf mehrere CPU-Kerne verteilt werden. Das bedeutet, dass WireGuard die Leistung durch parallele Verarbeitung skalieren kann, anstatt die Grenzen eines einzelnen Kerns zu erreichen. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-991458a8\"><h3 class=\"uagb-heading-text\">Befehle zur Leistungs\u00fcberpr\u00fcfung <\/h3><\/div>\n\n\n\n<p>Bevor du mit der Optimierung beginnst, vergewissere dich, dass dein System den schnellen Pfad verwendet, f\u00fcr den WireGuard entwickelt wurde: <\/p>\n\n\n\n<p>\u00dcberpr\u00fcfe die Kernel-Version (WireGuard ist erst ab 5.6 integriert): <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>uname \u2013r&nbsp;<\/code><\/pre>\n\n\n\n<p>\u00dcberpr\u00fcfe das WireGuard-Modul: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>modinfo wireguard&nbsp;<br><br>lsmod | grep wireguard&nbsp;<br><br>sudo modprobe wireguard&nbsp;<\/code><\/pre>\n\n\n\n<p>\u00dcberpr\u00fcfe die Netzwerk-Offloads:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ethtool -k eth0 | grep -E 'gro|gso|tso'&nbsp;<\/code><\/pre>\n\n\n\n<p>Teste die Multi-Core-Skalierung: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iperf3 -P 4&nbsp;<\/code><\/pre>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-c4e7d010\"><h2 class=\"uagb-heading-text\">WireGuard-Benchmark: Mehr als ein einfacher Geschwindigkeitstest <\/h2><\/div>\n\n\n\n<p>Ein zuverl\u00e4ssiger WireGuard-Benchmark erfordert weit mehr als einen schnellen WireGuard-Geschwindigkeitstest oder eine Messung mit einem einzelnen Stream. Der Goldstandard ist ein methodischer Vergleich zwischen dem Durchsatz ohne VPN und der Leistung des WireGuard-Tunnels unter Verwendung paralleler Streams, um die Multi-Core-Skalierung des Protokolls zu zeigen, sowie die Messung des TCP- und UDP-Verhaltens. Konsistenz ist entscheidend: Die Testbedingungen (Hosts, Routen, MTU, Stream-Anzahl und Dauer) m\u00fcssen in beiden Szenarien identisch sein, damit die Ergebnisse sinnvoll sind. <\/p>\n\n\n\n<p>In den meisten F\u00e4llen ist iperf3 das prim\u00e4re Werkzeug zur Messung des TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) Durchsatzes mit sowohl einem einzelnen als auch mehreren gleichzeitigen Streams (<code>-P<\/code>). irtt ist wertvoll f\u00fcr die eingehende Analyse von Latenz und Jitter, w\u00e4hrend einfache Systemz\u00e4hler (wie <code>to<\/code>p, <code>mpstat<\/code>, oder <code>ip -s link<\/code>) dabei helfen, CPU- oder Paketverluste w\u00e4hrend der Tests anzuzeigen. Optionale Werkzeuge wie Netdata k\u00f6nnen ein Dashboard in Echtzeit bereitstellen, sind jedoch keine Voraussetzung f\u00fcr eine solide Benchmarking.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-395ba722\"><h3 class=\"uagb-heading-text\">Testen der Cores<\/h3><\/div>\n\n\n\n<p>Beginne mit einem iperf3-Test zwischen Client- und Server-Endpunkten \u00fcber das unverschl\u00fcsselte Netzwerk, ohne WireGuard. Messe den Durchsatz sowohl mit einem einzelnen Stream (<code>ip -s link<\/code>) als auch mit parallelen Streams (<code>-P 4<\/code> oder <code>-P 8<\/code>) um herauszufinden, ob durch einen Flow eingeschr\u00e4nkt bist oder die Multi-Core-Skalierung nutzen k\u00f6nntest.<\/p>\n\n\n\n<p>Binde dann den iperf3-Server an deinen Tunnel-Endpunkt (z.B. <code>10.0.0.1<\/code> mit <code>-B<\/code> auf dem Server) und wiederhole die gleichen Tests durch den WireGuard-Tunnel. Wiederhole jede Messung in beiden Richtungen &#8211; du kannst die R\u00fcckw\u00e4rtsoption von iperf3 verwenden (<code>-R<\/code>) &#8211; da die Tunnel-Leistung asymmetrisch sein kann. F\u00fcr UDP stelle eine explizite Bandbreite (<code>-u, -b<\/code>) ein und \u00fcberwache den Verlust, um den maximalen Durchsatz zu sch\u00e4tzen.<\/p>\n\n\n\n<p>Ein m\u00f6glichst konsistentes Testumfeld sicherstellen: Beide Hosts stabil halten (verkabelt und beim gleichen Anbieter \/ in derselben Region), eine feste Testdauer festlegen und Hintergrundlast vermeiden. Um stabile Ergebnisse zu erzielen, muss die CPU-Skalierung w\u00e4hrend der Ausf\u00fchrung auf &#8222;Performance&#8220; eingestellt werden.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-83b93da0\"><h3 class=\"uagb-heading-text\">Ergebnisse interpretieren<\/h3><\/div>\n\n\n\n<p>Die wichtigste Erkenntnis aus dem WireGuard-Benchmark ergibt sich aus dem Vergleich von Baseline- vs. Tunnel-Leistung, insbesondere mit parallelen Streams. Wenn WireGuard bei parallelen Tests in etwa dem unverschl\u00fcsselten Netzwerk  entspricht, ist die Konfiguration auf deine Hardware abgestimmt. Wenn es einen signifikanten R\u00fcckgang gibt, \u00fcberpr\u00fcfe MTU\/MSS (auf Fragmentierung), Offload-Funktionen (GRO\/GSO) und die CPU-S\u00e4ttigung pro Kern, bevor du tiefergehende \u00c4nderungen vornimmst. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-0d282fb1\"><h2 class=\"uagb-heading-text\">Variablen zur Leistungsoptimierung bei WireGuard<\/h2><\/div>\n\n\n\n<p>Um gro\u00dfartige Ergebnisse zu erzielen, braucht es nicht nur einen einzigen magischen Schalter, sondern die richtige Reihenfolge einiger wichtiger Variablen f\u00fcr die Leistungsoptimierung von WireGuard. Verwende diesen Abschnitt als schnelle Checkliste, die du f\u00fcr den Vergleich von Baseline- und Tunneldurchsatz anwenden kannst. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-56c22fc5\"><h3 class=\"uagb-heading-text\"><strong>Was zu optimieren ist (und wie)<\/strong> <\/h3><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Variable<\/strong><\/td><td><strong>Warum es wichtig ist<\/strong><\/td><td><strong>Schnelltest<\/strong><\/td><td><strong>Beheben<\/strong><\/td><\/tr><tr><td>MTU\/MSS<\/td><td>Falsche MTU verursacht Fragmentierung und TCP-St\u00f6rungen <\/td><td>\u00dcberwache die TCP-Neu\u00fcbertragungen w\u00e4hrend der Tests <\/td><td>MTU in <code>[Interface]<\/code> festlegen (nach PMTU-Test); nur beim Routing von Subnetzen: TCP MSS beim Ausgang auf PMTU begrenzen<\/td><\/tr><tr><td>Parallelit\u00e4t<\/td><td>Einfache Streams erreichen Limitierungen per Flow; parallele Streams verwenden mehrere Kerne <\/td><td>Vergleiche <code>iperf3 -P 1 vs -P 4\/8\u00a0<\/code><\/td><td>Beurteile die Kapazit\u00e4t mit <code>-P 4\/8<\/code>; unterteile Massen\u00fcbertragungen<\/td><\/tr><tr><td>CRO\/GSO-Offloads<\/td><td>Batching reduziert die CPU-Kosten pro Paket f\u00fcr UDP-Tunnel <\/td><td>\u00dcberpr\u00fcfe den Offload-Status; korreliere ihn mit der CPU-Auslastung <\/td><td>Stelle mit <code>ethtool <\/code>sicher, dass GRO\/GSO aktiviert ist<\/td><\/tr><tr><td>CPU-Skalierung<\/td><td>Krypto ist CPU-gebunden; Frequenzeinbr\u00fcche begrenzen die Geschwindigkeit <\/td><td>Beobachte die Nutzung pro Kern w\u00e4hrend der Tests<\/td><td>Setze den CPU-Governor auf &#8222;performance&#8220; <\/td><\/tr><tr><td>Systemengp\u00e4sse<\/td><td>Alte Kerne\/Treiber und schlechte Queue-Distribution begrenzen die Skalierung <\/td><td>\u00dcberpr\u00fcfe die Kernel-Version; teste, ob <code>If -P <\/code>skaliert<\/td><td>Verwend moderne Kerne; bevorzuge Multi-Flows <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-8867e616\"><h3 class=\"uagb-heading-text\">Wichtige Befehle <\/h3><\/div>\n\n\n\n<p>MSS-Clamping (f\u00fcr Subnetz-Routing):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo iptables -t mangle -A FORWARD -o wg0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu&nbsp;<\/code><\/pre>\n\n\n\n<p>\u00dcberpr\u00fcfe die Offloads: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ethtool -k eth0 | grep -E 'gro|gso'&nbsp;<\/code><\/pre>\n\n\n\n<p>System-Buffer: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/sysctl.d\/99-wireguard.conf&nbsp;<br><br>net.core.rmem_max = 134217728&nbsp;<br><br>net.core.wmem_max = 134217728&nbsp;<br><br>net.core.netdev_max_backlog = 250000&nbsp;<\/code><\/pre>\n\n\n\n<p><strong>Wir lernen<\/strong>: WireGuards Kryptografie ist fest verdrahtet (keine Cipher-Auswahl). PersistentKeepalive hilft bei der NAT-Traversierung, nicht bei der Geschwindigkeit. Die meisten Verbesserungen lassen sich durch MTU-Korrektheit, Offloads und Parallelit\u00e4t erzielen &#8211; optimiere diese Aspekte, bevor du dich an die erweiterten Kernel-Optimierung machst.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f26055fc\"><h2 class=\"uagb-heading-text\">Konfiguration das WireGuard Server-Interface<\/h2><\/div>\n\n\n\n<p>Um deinen WireGuard Server f\u00fcr optimale Leistung zu konfigurieren, beginne mit einer minimalen Einrichtung und f\u00fcge systematisch Optimierungen hinzu.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-564886ca\"><h3 class=\"uagb-heading-text\">Anforderungen und Schl\u00fcsselgenerierung <\/h3><\/div>\n\n\n\n<p>Stelle sicher, dass dein Linux-Server die wireguard-tools installiert hat (Kernel 5.6+ bevorzugt) und der UDP-Port 51820 offen ist. Generiere Server-Schl\u00fcssel mit entsprechenden Berechtigungen: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>umask 077&nbsp;<br><br>wg genkey | tee \/etc\/wireguard\/privatekey | wg pubkey &gt; \/etc\/wireguard\/publickey&nbsp;<\/code><\/pre>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-84552fc1\"><h3 class=\"uagb-heading-text\">Minimale Serverkonfiguration <\/h3><\/div>\n\n\n\n<p>Erstelle <code>\/etc\/wireguard\/wg0.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Interface]\u00a0\nAddress = 10.0.0.1\/24\u00a0\nPrivateKey = &lt;SERVER_PRIVATE_KEY>\u00a0\nListenPort = 51820\u00a0\n\n# MTU = 1440 (f\u00fcr die automatische Auswahl nicht festlegen oder nach dem Testen festlegen)\u00a0\n\n&#91;Peer]\u00a0\nPublicKey = &lt;CLIENT_PUBLIC_KEY>\u00a0\nAllowedIPs = 10.0.0.2\/32\u00a0\nPersistentKeepalive = 25 # wird normalerweise auf dem NAT-Client festgelegt, auf dem Server nicht erforderlich\u00a0<\/code><\/pre>\n\n\n\n<p>Ersetze Schl\u00fcssel und lege ein privates \/24-Netzwerk fest. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-ada4dcf8\"><h3 class=\"uagb-heading-text\">Firewall- und Netzwerk-Konfiguration <\/h3><\/div>\n\n\n\n<p>Eine ordnungsgem\u00e4\u00dfe Firewall-Konfiguration ist entscheidend f\u00fcr die Leistung und Konnektivit\u00e4t von WireGuard. Richte diese Regeln ein, bevor du den Dienst startest. <\/p>\n\n\n\n<p>Grundlegende Firewall-Einrichtung: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># WireGuard-UDP-Port zulassen\n\nsudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT\u00a0\n\n# F\u00fcr den Internetzugang \u00fcber den Tunnel IP-Weiterleitung und NAT aktivieren\n\necho 'net.ipv4.ip_forward=1' | sudo tee \/etc\/sysctl.d\/99-sysctl.conf sudo sysctl --system sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\u00a0<\/code><\/pre>\n\n\n\n<p>Ersetze <code>eth0<\/code>\u00a0durch das Interface deines Servers zur Internetverbindung.<\/p>\n\n\n\n<p><strong>NAT- und Firewall-Traversierung<\/strong>: WireGuard verarbeitet NAT automatisch. Clients, die sich hinter NAT befinden, ben\u00f6tigen keine spezielle Konfiguration. Wenn ein Client eingehende Verbindungen \u00fcber NAT empfangen muss, sollte &#8222;<code>PersistentKeepalive = 25<\/code>&#8220; zur Peer-Konfiguration des Clients hinzugef\u00fcgt werden. Dadurch bleibt die NAT-Zuordnung aktiv, indem alle 25 Sekunden Keepalive-Pakete gesendet werden.<\/p>\n\n\n\n<p><strong>Fehlerbehebung<\/strong>: Wenn WireGuard eine Verbindung herstellt, die Clients jedoch das Internet nicht erreichen k\u00f6nnen, \u00fcberpr\u00fcfe ob IP-Weiterleitung mit <code>sysctl net.ipv4.ip_forward<\/code> aktiviert ist und ob NAT mit <code>iptables -t nat -L -v<\/code> funktioniert.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-ee29bc68\"><h3 class=\"uagb-heading-text\">Aktivieren und \u00dcberpr\u00fcfen <\/h3><\/div>\n\n\n\n<p>Starte WireGuard und \u00fcberpr\u00fcfe die Konnektivit\u00e4t: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable --now wg-quick@wg0&nbsp;<br><br>sudo wg show&nbsp;<\/code><\/pre>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-2e4ab8c5\"><h3 class=\"uagb-heading-text\">MTU-Optimierung <\/h3><\/div>\n\n\n\n<p>Einfach beginnen: Lege MTU nicht fest, sodass <code>wg-quick<\/code> automatisch ausw\u00e4hlt wird; \u00fcberpr\u00fcfe dies dann mit <code>ip link show wg0<\/code>.<\/p>\n\n\n\n<p>Beim manuellen Einstellen: Finde PMTU zu der \u00f6ffentlichen IP deines Servers mit <code>ping -M do -s &lt;size> &lt;server_ip><\/code> (beginne mit 1472) und ziehe den Encapsulation-Overhead (~60B IPv4, ~80B IPv6) ab. Setze dies als MTU in jedem Peer <code>[Interface]<\/code>, starte neu und f\u00fchre die parallelen Stream-Tests (<code>ping -M do -s &lt;size> &lt;server_ip><\/code>, beide Richtungen) erneut aus.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-2e51f165\"><h3 class=\"uagb-heading-text\">Finale Checks <\/h3><\/div>\n\n\n\n<p>Vergewissere dich, dass Handshakes mit Clients stattfinden und das Internet-Routing wie erwartet funktioniert. F\u00fchre nach \u00c4nderungen an MTU und Firewall immer Benchmarks durch, um die Auswirkungen auf die Leistung zu messen. Weitere Informationen findest du im offiziellen <a href=\"https:\/\/www.wireguard.com\/quickstart\" rel=\"nofollow\">WireGuard-Quick-Start<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-45853abb\"><h2 class=\"uagb-heading-text\">Fortgeschrittene Performance-Konzepte <\/h2><\/div>\n\n\n\n<p>Um WireGuard \u00fcber die Grundkonfiguration hinaus zu optimieren, solltest du dich darauf konzentrieren, die letzten 10 bis 20 % Leistungssteigerung durch systematische Kernel- und Hardwareoptimierungen zu erreichen. Mach schrittweise \u00c4nderungen und \u00fcberpr\u00fcfe nach jeder Anpassung die Ergebnisse.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-1b00ffd3\"><h3 class=\"uagb-heading-text\">Offload-bewusstes Tunneling<\/h3><\/div>\n\n\n\n<p>WireGuard profitiert echt von den Kernel-Batching-Features (GRO\/GSO), die den CPU-Overhead pro Paket reduzieren. Stell sicher, dass diese Offloads auf deiner zugrunde liegenden Netzwerkkarte aktiviert sind, und deaktiviere sie nur zum Debuggen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u00dcberpr\u00fcfe, ob die Entladungen funktionieren\nethtool -k eth0 | grep -E 'gro|gso'\u00a0<\/code><\/pre>\n\n\n\n<p>Moderne Treiber (virtio-net, ENA, gVNIC auf VMs; Intel\/Broadcom auf Bare Metal) unterst\u00fctzen diese Funktionen. Traffic Shaping kann bei der Latenz helfen, reduziert jedoch in der Regel den Spitzendurchsatz. <\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-d68f4fd3\"><h3 class=\"uagb-heading-text\">Parallelit\u00e4t und CPU-Skalierung <\/h3><\/div>\n\n\n\n<p>Einzelne Datenstr\u00f6me stauen sich oft auf einem CPU-Kern oder in einer RX-Warteschlange. Nutzt mehrere parallele Streams f\u00fcr Massentransfers &#8211; deine Benchmarks sollten echte Nutzungsmuster zeigen. Auf Bare Metal Servern sind die richtige IRQ-Verteilung und Multi-Queue-NICs echt wichtig. Selbst in VMs mit begrenztem RSS verbessern parallele Streams immer noch die Leistung.<\/p>\n\n\n\n<p>Wenn <code>iperf3 -P 4 <\/code>nicht linear skaliert, \u00fcberpr\u00fcfe ob die CPU-Kerne zu 100 % ausgelastet sind oder ob einzelne Queues den gesamten Verkehr abwickeln.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-13fd704d\"><h3 class=\"uagb-heading-text\">CPU- und Systemoptimierung <\/h3><\/div>\n\n\n\n<p>WireGuard ist trotz seiner Effizienz CPU-gebunden. Stabile Taktraten w\u00e4hrend des Tests mithilfe des Leistungsreglers aufrechterhalten: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Performance-Governor einstellen\u00a0\necho performance | sudo tee \/sys\/devices\/system\/cpu\/cpu*\/cpufreq\/scaling_governor\u00a0<\/code><\/pre>\n\n\n\n<p>Bei NUMA-Systemen mit mehreren Sockeln solltest du Netzwerkunterbrechungen und WireGuard-Endpunkte auf demselben Sockel lassen, um Probleme zwischen den Knoten zu vermeiden.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-7a8eb45b\"><h3 class=\"uagb-heading-text\">Kernel- und Treiberverbesserungen <\/h3><\/div>\n\n\n\n<p>Neuere Kernel bieten bessere UDP-Segmentierung und Optimierungen des Empfangspfades. Halte das Systeme aktuell und bevorzuge: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In-Kernel WireGuard (Kernel 5.6+) gegen\u00fcber Userspace-Implementierungen <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Multi-Queue-f\u00e4hige Treiber <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Moderne Firmware deiner Netzwerkkarten <\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-47d0520f\"><h3 class=\"uagb-heading-text\">TCP-Leistung innerhalb von Tunneln <\/h3><\/div>\n\n\n\n<p>Der meiste Anwendungsdatenverkehr wird \u00fcber TCP innerhalb des UDP-Tunnels von WireGuard \u00fcbertragen. Eine geringere Latenz und weniger Datenverluste helfen TCP, erneute \u00dcbertragungen zu vermeiden. F\u00fcr lange Strecken oder verlustbehaftete Pfade solltest du eine BBR-\u00dcberlastungskontrolle an beiden Endpunkten in Betracht ziehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Teste BBR (Leistungsauswirkungen \u00fcberpr\u00fcfen)\necho 'net.ipv4.tcp_congestion_control=bbr' >> \/etc\/sysctl.conf\u00a0<\/code><\/pre>\n\n\n\n<p><strong>Fazit<\/strong>: Wenn MTU\/MSS und Benchmarking optimiert sind, konzentriere dich auf intakte Offloads, echte Parallelit\u00e4t, stabile CPU-Leistung und moderne Kernel-\/Treiber-Stacks. \u00dcberpr\u00fcfe jede \u00c4nderung einzeln.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-1a4eb59e\"><h2 class=\"uagb-heading-text\">FAQ f\u00fcr WireGuard Performance <\/h2><\/div>\n\n\n\n<p><strong>Wie funktioniert WireGuard?<\/strong> <br>WireGuard erstellt verschl\u00fcsselte Peer-to-Peer-Verbindungen zwischen Ger\u00e4ten mittels \u00f6ffentlicher Schl\u00fcssel-Authentifizierung. Es l\u00e4uft im Linux-Kernel, um maximale Geschwindigkeit und Effizienz zu erreichen, im Gegensatz zu \u00e4lteren VPN-Protokollen, die mehr Overhead brauchen.<\/p>\n\n\n\n<p><strong>Verwendet WireGuard TCP oder UDP?<\/strong> <br>WireGuard verwendet nur UDP. Diese Wahl h\u00e4lt den Overhead niedrig und erlaubt dem Kernel, Batching\/Offloads (GRO\/GSO) f\u00fcr hohen Durchsatz anzuwenden. Wenn ein Netzwerk UDP blockiert, kannst du WireGuard in TCP\/HTTPS \u00fcber generische Wrapper tunneln, solltest jedoch mit zus\u00e4tzlicher Latenz und m\u00f6glichen Verlangsamungen rechnen. Aus Performance-Gr\u00fcnden wird natives UDP stark bevorzugt.<\/p>\n\n\n\n<p><strong>Wie \u00fcberpr\u00fcfe ich, ob WireGuard funktioniert?<\/strong> <br>Um zu \u00fcberpr\u00fcfen, ob WireGuard funktioniert, f\u00fchre den <code>wg<\/code>-Befehl auf einem der verbundenen Ger\u00e4te aus und suche nach einem Zeitstempel &#8222;latest Handshake&#8220; sowie steigenden \u00dcbertragungsz\u00e4hlern. Diese best\u00e4tigen, dass die Peers erfolgreich Schl\u00fcssel ausgetauscht haben und Verkehr \u00fcbermitteln. Du kannst die Verbindung auch \u00fcberpr\u00fcfen, indem du die WireGuard-Tunnel-IP-Adresse des Peers anpingst, z. B. <code>10.0.0.1<\/code>. F\u00fcr eine schnelle Geschwindigkeitspr\u00fcfung sollte der <code>iperf3<\/code>-Test mit mehreren parallelen Streams (z. B. <code>iperf3 -P 4<\/code>) \u00fcber den Tunnel durchgef\u00fchrt und das Ergebnis mit einem Test ohne VPN verglichen werden. Wenn du Zeit\u00fcberschreitungen oder langsame Geschwindigkeiten feststellst, vergewissere dich, dass deine Firewall UDP-Datenverkehr auf Port 51820 zul\u00e4sst, dass beide Peers \u00fcbereinstimmende AllowedIPs-Konfigurationen haben und \u00fcberpr\u00fcfe deine MTU- und MSS-Einstellungen, um Fehlkonfigurationen auszuschlie\u00dfen.<\/p>\n\n\n\n<p>Lass die MTU erstmal ungesetzt &#8211; <code>wg-quick<\/code> w\u00e4hlt einen routingf\u00e4higen Wert aus. Wenn du sie manuell einstellst, leite sie aus der gemessenen PMTU ab (typische Startpunkte: ~1440 f\u00fcr IPv4, ~1420 f\u00fcr IPv6 bei 1500-Byte-Verbindungen) und teste dann erneut.<\/p>\n\n\n\n<p><strong>Warum ist meine WireGuard-Geschwindigkeit niedriger als die Basis-Geschwindigkeit?<\/strong> <br>Drei h\u00e4ufige \u00dcbelt\u00e4ter: falsches MTU\/MSS (Fragmentierung\/Retransmits), deaktivierte GRO\/GSO-Offloads oder ein Single-Flow-Limit (behebe dies mit parallelen Streams, z. B. <code>-P 4\/8<\/code>). F\u00fchre die Baseline-vs.-Tunnel-Matrix aus dem Benchmarking-Kapitel nochmal durch, um den Engpass zu finden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser praktische Leitfaden zeigt dir, wie du die WireGuard-Leistung auf einem Contabo VPS oder dedizierten Server messen und maximieren kannst. Erstelle einen zuverl\u00e4ssigen Baseline-vs-Tunnel-Benchmark, tune MTU\/MSS, \u00fcberpr\u00fcfe Offloads und verwende parallele Streams. \u00dcbersichtliche Checklisten und minimale Befehle machen die Feinabstimmung zu einem wiederholbaren Vorgang, der nahezu den Baseline-Wert erreicht.<\/p>\n","protected":false},"author":65,"featured_media":25453,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1399],"tags":[],"ppma_author":[1489],"class_list":["post-25800","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1.jpg",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1-150x150.jpg",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1-600x315.jpg",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1-768x403.jpg",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1.jpg",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1.jpg",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2025\/10\/blog-head_maximizing-wireguard-performance-1.jpg",1200,630,false]},"uagb_author_info":{"display_name":"Julia Mink","author_link":"https:\/\/contabo.com\/blog\/de\/author\/julia-mink\/"},"uagb_comment_info":0,"uagb_excerpt":"Dieser praktische Leitfaden zeigt dir, wie du die WireGuard-Leistung auf einem Contabo VPS oder dedizierten Server messen und maximieren kannst. Erstelle einen zuverl\u00e4ssigen Baseline-vs-Tunnel-Benchmark, tune MTU\/MSS, \u00fcberpr\u00fcfe Offloads und verwende parallele Streams. \u00dcbersichtliche Checklisten und minimale Befehle machen die Feinabstimmung zu einem wiederholbaren Vorgang, der nahezu den Baseline-Wert erreicht.","authors":[{"term_id":1489,"user_id":65,"is_guest":0,"slug":"julia-mink","display_name":"Julia Mink","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/26ce5d4ae17d160425d842da4ea00c56716ffb5d4c58ee0cfb73de57b1de5272?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/25800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=25800"}],"version-history":[{"count":3,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/25800\/revisions"}],"predecessor-version":[{"id":25816,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/25800\/revisions\/25816"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media\/25453"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=25800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=25800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=25800"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/ppma_author?post=25800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}