Wireguard Performance schlecht

Started by thebigwave, April 01, 2021, 04:50:35 PM

Previous topic - Next topic
Hallo zusammen,
ich hätte da mal  ein kleines Problem mit der Performance.

Gegeben ist eine Virtuelle OPNsense im Hetzner RZ die Synchron mit 1GBs angebunden ist.
Ein Test mit Iperf liefert auch die erwartete Geschwindigkeit.

Wenn ich allerdings versuche von daheim auf die OPNsense via Wireguard zuzugreifen bricht die Performance massiv ein.
Iperf3
Home ->OPNSense -->~600Mbits. (mehr gibt mein Internet im Homenetz nicht her)
Home->Wireguard(OPNsense) --> ~50MBits

Ein Test mit OpenVPN liefert vergleichbare Ergebnisse.

Die CPU/RAM auslastung hält sich bei beide Tests in grenzen.

hat hier jemand eine Idee wo der Flaschenhals liegen könnte?
Alles andere funktioniert wunderbar und ich habe auch sonst keine messbaren PerformanceProbleme.


LG und schöne Feiertage
Tobias



Wireguard läuft bei opnsense derzeit im userland.

Performance besser als openvpn ist derzeit nicht wirklich zu erwarten.

Nur bei sehr schnellen CPUs.

April 01, 2021, 05:31:22 PM #2 Last Edit: April 01, 2021, 07:22:14 PM by vpnuser
@Tobias
Zum Vergleich mal eine Performance-Messeung von Krenn: https://www.thomas-krenn.com/de/wiki/OPNsense_WireGuard_Performance_Tests. Laut deren Auswertung ist WireGuard schneller als OpenVPN und langsamer als IPSec.
Wie ist Dein Home Internet angebunden - über DS Lite oder Dual-Stack? Wenn DS Lite, dann könnte hier die Schwachstelle bei der Tunnelung von IPv4 über IPv6 liegen. Richte mal eine VPN Verbindung über IPv6 ein, sofern Dein Internet Provider und Modem dies unterstützt. Bei Hetzner kannst Du eine IPv6 Adresse über Robot einrichten.
Unabhängig von DS Lite / Dual-Stack hatten wir Verbindungsprobleme mit VPN (IPsec / IKEv2) Verbindung über IPv4. Deshalb haben wir dort, wo es möglich war, IPv6 aktiviert.

Noch ein Nachtrag, hier kannst Du unter anderem eine IPv6 Verbindung mit einem öffentlichen Server testen
: https://speedtest.wtnet.de/

Ich habe mal einen Test mit folgenden Anschlüssen durchgeführt:
OPNSense Server als Hyper-V VM auf einem Hetzner dedizierten Server mit 1GB Anschluss
Home Office mit einem Telekom 100MBit DSL Anschluss, Dual Stack

Home -> OPNSense: 38 Mbits/sec
Home -> VPN IPSec / IKEv2: 15 MBits/sec
Home -> speedtest.wtnet.de: 36 MBits/sec
OPNSense -> speedtest.wtnet.de: 580 MBits/sec

Auf alle Fälle erstmal danke für deine Tests <3
In der Tat habe ich bei mir daheim DSLite Anschlus von daher wäre mein nächster Step mal IPSec mit v6 einzurichten.

Hat das schon jemand erfolgreich eingerichtet? Gerade im v6 Bereich war ich noch nicht alzuoft unterwegs.
Ich habe zwar folgende anleitung gefunden ->
https://dominicpratt.de/hetzner-and-proxmox-using-ipv6-with-router-vm/

aber leider klappt es nicht und ich verstehe auch nicht so ganz was eine fe80:: adresse auf dem WAN Interface zu suchen hat?


Hallo Tobias,
die verlinkte Beschreibung ist eine mögliche Lösung. Ich habe es anders eingerichtet, mit einer GUA auf der WAN Schnittstelle. Hierzu auf auf der WAN Schnittstelle den "IPv6 Configuration Type" auf "Static IPv6", die "IPv6 address" auf eine GUA mit Subnetz 64 z.B. 2a01:4f8:xxxx:xxxx::2 / 64 eintragen, Upstream Gateway anlegen und "IPv6 Upstream Gateway" auf "Auto-detect" festlegen, "Use IPv4 connectivity" aktivieren.
Parameter Upstream Gateway: "Interface" WAN, "Address Family" IPv6, "IP address" fe80::1, "Upstream Gateway" aktivieren; Gateway starten -> "Status online". Für IPSec musste ich in der LAN Schnittstelle den Wert von "MSS" auf 1300 einstellen, ansonsten konnte ich trotz bestehender VPN Verbindung den Server nicht anpingen.

Meine Einstellungen gelten für einen dedizierten Root-Server. Welche Server hast Du bei Hetzner gemietet? Hier noch die Beschreibung direkt von Hetzner https://docs.hetzner.com/de/robot/dedicated-server/ip/additional-ip-adresses/

Mein Hetzner Server ist SB40 ->
da das System fast nur für mich zum lernen und als HomeLab Umgebung dient ein kleiner Dedicated aus der Serverbörse

Gerade im v6 Bereich gibt es verschiedene Anleitungen die sich mitunter stark voneinander unterscheiden.

Von daher nachmals vielen Dank für deine Hilfe

bei der Konfig vom Netzwerkinterface habe ich mich nach dieser Anleitung orientiert

https://community.hetzner.com/tutorials/install-and-configure-proxmox_ve/de

wenn ich es richtig verstehe muss ich dann meinen WAN die :10 konfigurieren?




auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp4s0
iface enp4s0 inet static
        address 46.4.x.y/26
        gateway 46.y.x.129
        up route add -net 46.4.x.ynetmask 255.255.255.192 gw 46.4.38.129 dev enp4s0



iface enp4s0 inet6 static
       address 2a01:4f8:x:y::1
       netmask 128
       gateway fe80::1


auto vmbr0
iface vmbr0 inet static
        address 46.4.38.132/32
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        up ip route add 46.4.x.y/32 dev vmbr0
        up ip route add 46.4.y.x/32 dev vmbr0
       
iface vmbr0 inet6 static
  address 2a01:4f8:x:y::10
  netmask 64
  up ip -6 route add 2a01:4f8:x:y::/64 dev vmbr0

auto vmbr1
iface vmbr1 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#LAN Interface

Hallo Tobias,
die IPv6 Adresse schlägt Hetzner xx::2 vor - würde ich also verwenden. Hast Du die IPv6 Einstellungen über die OPNSense GUI eingerichtet, wie ich es beschrieben habe?

Moin,
ich habe über die Feiertage nochmal ein bisschen herumprobiert aber ich bekomme es einfach nicht zum laufen.
Ich bekomme auch im Dashboard keine v6 Adresse angezeigt.
Wenn ich den Haken raus nehme bei "use IPv4 Connection" bekomme ich eine v6 Adresse angezeigt und es erscheint auch eine route aber er antwortet trozdem nicht auf Ping.


Aktuell hat mein Proxmox :2 und meine OPNsense :3 bekommen wobei ich hier schon verschiedenes durchgetestet habe.

Ein Ping verursacht folgende Fehlermeldung bei gesetzten "use IPv4 Connection" -> Destination unreachable: Address unreachable

LG



Hallo Tobias,
ich hatte übersehen, dass Du die OPNSense in einer VM betreibst. Ich habe meine Sense auch in einer VM laufen. Im Hetzner Robot kannst in der Serververwaltung unter "IP" die IPv6 Adresse einer MAC-Adresse zuweisen. Weise die Adresse mal der MAC-Adresse Deiner OPNSense zu. Damit bekommt der Host keine IPv6 mehr, sondern nur die OPNSense. Des Weiteren bitte in der OPNSense GUI unter "Firewall -> Settings -> Advanced" die Option "Allow IPv6" aktivieren. Und eine / mehrere Firewall Regeln für die benötigten IPv6 Protokolle / Ports anlegen (z.B. ICMPv6). Danach noch mal meiner Anleitung testen, alternativ kannst Du die von Dir gefundene Anleitung testen.
Falls das auf dem Host die IPv6 benötigst bin ich raus - für diese Konstellation habe ich keine Expertise.

Quote from: lewald on April 01, 2021, 05:26:43 PM
Wireguard läuft bei opnsense derzeit im userland.
Performance besser als openvpn ist derzeit nicht wirklich zu erwarten.
Nur bei sehr schnellen CPUs.

Seit OPNSense 21.1.4 gibts einen experimentellen wireguard-kmod Kernel Treiber.
Die Installation geht via ssh-console mit


pkg install wireguard-kmod


anschließend ist ein Neustart nötig.
Nach dem Neustart sollte unter "System -> Diagnose -> Dienste" der wireguard-go Dienst inaktiv sein und WireGuard läuft im Kernel Modus.

Bei mir hat das einen Geschwindigkeitszuwachs auf den 3fachen Downstream bewirkt :)

Siehe auch https://fingerlessgloves.me/2021/03/31/hello-wireguard-kmod-on-opnsense


Hallo zusammen,
es hat eine weile gedauert aber ich habe IPv6 zum Laufen gebracht.
Die Unterschiede zwischen den Bridged und Routed Mode haben mich erfolgreich verwirrt und da ich Probleme hatte Infos zu finden hier meine, für mich, funktionierende Settings für den Routed mode.

/etc/network/interfaces

auto lo
iface lo inet loopback

iface lo inet6 loopback

auto enp4s0
iface enp4s0 inet static
        address 46.4.38.132/26
        gateway 46.4.38.129
        pointopoint 46.4.38.129
        up route add -net 46.4.38.128 netmask 255.255.255.192 gw 46.4.38.129 dev enp4s0

iface enp4s0 inet6 static
  address 2a01:4f8:221:334a::2
  netmask 128
  gateway fe80::1


auto vmbr0
iface vmbr0 inet static
        address 46.4.38.132/32
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        pre-up brctl addbr vmbr0
        up ip route add 46.4.38.170/32 dev vmbr0
        up ip route add 46.4.38.171/32 dev vmbr0


iface vmbr0 inet6 static
   address 2a01:4f8:221:334a::3
   netmask 64
   up ip -6 route add 2a01:4f8:221:334a::/64 dev vmbr0

auto vmbr1
iface vmbr1 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#LAN Interface


OPNsense
Interfaces->WAN
IPv6 = Static IPv6
IPv6 Adress 2a01:4f8:221:334a::4/64
Gateway=Auto-detect
use IPv4 Connection Nicht angehakt
system->Gateway
IP-Adresse=2a01:4f8:221:334a::3
Upstream Gateway aktiv
Done

In Kombination mit dem Tip von goodomens42 und IPv6 hat sich auch die Performance spürbar verbessert.

Danke an alle die mir Tipps gegeben haben.