Wireguard Verbindung erstellen mit Ubuntu und Windows
Hallo zusammen,
ich versuche eine Wireguard Verbindung mit einem Ubuntu 22.04 Server und einem Windows-Clienten zu erstellen.
Die Server Config sieht so aus:
Client sieht so aus:
enp2s0 ist der physische LAN-Anschluss am Server. ufw ist bei mir nicht aktiv. Der Server hängt hinter einem Router.
Wenn ich den Clienten ins LAN einhänge und mich mit der lokalen IP des Servers 192.168.0.2, genauso wenn ich mich extern über eine DynDNS-Adresse verbinden möchte, sind Pings für
nicht erfolgreich.
Bedeutet für mich, dass ich an das IPv4 Forwarding nicht mal denken muss ... Es werden auf dem Client auch keine empfangenen Pakete angezeigt, Verbindung ist aber angeblich aktiv. Es kann auch nicht die Portweiterleitung im Router sein, da es ja auch nicht funktioniert, wenn alle im LAN sind.
Wo kann der Fehler liegen? Ich muss ja zumindest die VPN-IP des Servers anpingen können.
ich versuche eine Wireguard Verbindung mit einem Ubuntu 22.04 Server und einem Windows-Clienten zu erstellen.
Die Server Config sieht so aus:
# Server configuration
[Interface]
PrivateKey = 1234 # The server_private.key value.
Address = 10.5.5.1/24 # Internal IP address of the VPN server.
ListenPort = 51820 # Previously, we opened this port to listen for incoming connections in the firewall.
# Change "enp0s5" to the name of your network interface in the following two settings. This commands configures ipta>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE
# Configurations for the clients. You need to add a [Peer] section for each VPN client.
[Peer]
PublicKey = 9876 # client_public.key value.
AllowedIPs = 10.5.5.2/32 # Internal IP address of the VPN client.
Client sieht so aus:
[Interface]
PrivateKey = 5678
Address = 10.5.5.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = 9876
AllowedIPs = 0.0.0.0/0
Endpoint = server.server.de:51820
PersistentKeepalive = 25
enp2s0 ist der physische LAN-Anschluss am Server. ufw ist bei mir nicht aktiv. Der Server hängt hinter einem Router.
Wenn ich den Clienten ins LAN einhänge und mich mit der lokalen IP des Servers 192.168.0.2, genauso wenn ich mich extern über eine DynDNS-Adresse verbinden möchte, sind Pings für
ping 10.5.5.1
Bedeutet für mich, dass ich an das IPv4 Forwarding nicht mal denken muss ... Es werden auf dem Client auch keine empfangenen Pakete angezeigt, Verbindung ist aber angeblich aktiv. Es kann auch nicht die Portweiterleitung im Router sein, da es ja auch nicht funktioniert, wenn alle im LAN sind.
Wo kann der Fehler liegen? Ich muss ja zumindest die VPN-IP des Servers anpingen können.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42976083824
Url: https://administrator.de/forum/wireguard-verbindung-erstellen-mit-ubuntu-und-windows-42976083824.html
Ausgedruckt am: 30.12.2024 um 17:12 Uhr
23 Kommentare
Neuester Kommentar
Das hiesige Wireguard Tutorial hast du gelesen und alle dort beschriebenen Schritte entsprechend richtig umgesetzt?! 🤔
Klassische Anfänger Fehler die du gemacht hast:
Klassische Anfänger Fehler die du gemacht hast:
- NAT (IP Adress Translation) unnötigerweise im Tunnel gemacht. Sollte entfernt werden!
- Google DNS verwenden heute auch keine Dummies mehr! (Datensicherheit!). DNS Parameter benötigst du nur dann, wenn du einen internen DNS betreibst ansonsten immer weglassen!
- Der Client macht ein Gateway Redirect was performancetechnisch kontraproduktiv ist, es sei denn es ist gewollt allen Client Traffic in den Tunnel zu routen. Besser ist immer ein Split Tunneling zu realisieren. (Siehe Tutorial)
- Port Forwarding für den WG UDP Port im davor kaskadierten Router auf den Server ist eingerichtet? Ebenso eine statische Route auf das interne Wireguard IP Netz? (Siehe Tutorial und auch HIER für Router Kaskaden allgemein!)
- Bedenke das du aus einem IP Fremdnetz kommst und ICMP (Ping) in der Winblows Firewall immer freischalten musst. ICMP (Ping) ist in der Winblows Firewall grundsätzlich deaktiviert im Default! Siehe: https://www.windowspro.de/wolfgang-sommergut/ping-windows-10-erlauben-gu ...
Bedeutet für mich, dass ich an das IPv4 Forwarding nicht mal denken mus
Nein, daran musst du denken! IPv4 Forwarding zu aktivieren auf dem Server ist dann zwingend erforderlich!Verbindung ist aber angeblich aktiv.
Angeblich? Raten ist immer schlecht in der IT. ☹️ Was sagt ein wg show auf dem Server?!wg show sagt mir:
Das zeigt das dein Tunnel nicht aktiv ist! So sollte das aussehen...
root@server:/home/admin# wg show
interface: wg0
public key: 56G8labcdefg=
private key: (hidden)
listening port: 51820
peer: 0FAcGxb01eABCDefg=
endpoint: 88.1.2.3:40713
allowed ips: 10.5.5.2/32
latest handshake: 2 days, 4 hours, 5 minutes, 6 seconds ago
transfer: 2.89 MiB received, 41.03 MiB sent
Da kommt also gar kein WG Traffic an beim Server!
Vermutung: Falsches oder fehlerhaftes Port Forwarding im davor kaskadierten Router!!
Tip:
Installiere dir mit apt get tcpdump einen kleinen Sniffer auf dem Server und checke überhaupt erstmal ob dort eingehender, geforwardeter Traffic vom Router ankommt mit:
tcpdump -i enp2s0 -n port 51820
Das schafft dir dann Gewissheit!
ich habe jetzt auch nochmal die Konfiguration aus dem Tutorial reinkopiert
Interne IP Adressierung entsprechend auch am Client angepasst?!Es kommt auf dem Server auch was an:
OK, das sieht gut aus...Dann bleibt nur noch das du falsche Keys verwendest auf Server oder Client oder beiden bzw. diese verwechselt hast!!
Guckst du dazu auch hier zur richtigen Verteilung der Keys.
Zitat von @ferdrt:
Die Keys habe ich jetzt alle neu erstellt.
Client Config ist diese hier:
und geht immer noch nicht ...
Die Keys habe ich jetzt alle neu erstellt.
Client Config ist diese hier:
[Interface]
PrivateKey = xyz
Address = 100.64.64.101/24
[Peer]
PublicKey = 9876
AllowedIPs = 100.64.64.1/32, 192.168.0.0/24
Endpoint = 192.168.0.2:51820
PersistentKeepalive = 25
und geht immer noch nicht ...
Nicht verwunderlich denn..
Am Server steht für den Peer
AllowedIPs = 100.64.64.100/32
Und du schreibst am Client in die Config
100.64.64.101/24
Passt also nicht zusammen.... Deswegen kann da nix durch kommen da das Cryptokey Routing dann verständlicherweise nicht passt.
Ergo => PEBKAC
Btw. 192.168.0.0/24 macht in den Allowed IPs am Client keinen Sinn wenn du intern connectest.
Gruß wrk
Dann erstellst du wohl die Keys schon falsch oder setzt sie falsch ein.
halt nur nicht peer1_public.key verwendet.
Der gehört aber in die Server-Config für den Peer.Denke du hast die nicht an die richtige Stelle gesetzt bzw. verwechselt.
Also, SERVER muss so aussehen
[Interface]
Address = 100.64.64.1/24
PrivateKey = <PRIVATE KEY SERVER>
ListenPort = 51820
[Peer]
PublicKey = <PUBLIC KEY CLIENT>
AllowedIPs = 100.64.64.100/32
und CLIENT Config so
[Interface]
PrivateKey = <PIVATE KEY CLIENT>
Address = 100.64.64.100/24
[Peer]
PublicKey = <PUBLIC KEY SERVER>
AllowedIPs = 100.64.64.1/32, 192.168.0.0/24
Endpoint = xxxxxxxxx:51820
PersistentKeepalive = 25
Zitat von @ferdrt:
Ich kam jetzt doch noch auf die Lösung.
Ich habe in der Server Config die MTU anpassen müssen. Die "alten" OpenVPN und enp2s0 hatten 1500.
Unter Interface in der Server Config konnte ich es dann so beheben:
Ich kam jetzt doch noch auf die Lösung.
Ich habe in der Server Config die MTU anpassen müssen. Die "alten" OpenVPN und enp2s0 hatten 1500.
Unter Interface in der Server Config konnte ich es dann so beheben:
MTU = 1500
Das ist leider Bullshit, die OpenVPN Angaben der MTU und die Wireguard MTU haben nichts gemeinsam, und damit wirst du auch höchst wahrscheinlich herbe Paket-Fragmentierung erleiden. Das maximal mögliche der Gefühle bei Wireguard ist wegen des Protokoll Overheads eine MTU von 1440 wenn man im Tunnel nur IPv4 verwendet, ansonsten ist wegen des größeren IPv6-Headers von 40 bytes sogar nur 1420 drin.
Diese Werte sind aber ohne evt. PPPoE (8bytes) &Co. am Client gerechnet und fallen dort je nachdem noch geringer aus, denn Clients haben ebenfalls diese Einstellung für den Fall das die PMTU fehlschlägt.
Das Hauptproblem ist auch das Windows Firewalls per Default ICMP aus fremden Subnetzen blocken und somit auch die automatische PMTU Ermittlung fehlschlägt und es zu diesem Problem der Fragmentierung kommt wenn die MTU nicht korrekt hinterlegt ist.
Gruß wrk.
Zitat von @Avenga:
ich hatte mich vor Ewigkeiten mit der WG MTU beschäftigt und bin bei 1412 gelandet, ohne Angabe gab es Probleme mit Fragmentierung, da default WireGuard MTU 1420 Bytes.
Das sind ja genau die genannten 8 Bytes für den gängigen PPPoE Overhead der Internet-Provider bei der Einwahl .ich hatte mich vor Ewigkeiten mit der WG MTU beschäftigt und bin bei 1412 gelandet, ohne Angabe gab es Probleme mit Fragmentierung, da default WireGuard MTU 1420 Bytes.
Wie immer zeigt einem ein Ping mit gesetztem "do not fragment" Flag das maximal mögliche ...
Ping-Test zur Ermittlung der optimalen MTU-Größe auf dem Router
Jetzt will ich die Konfiguration gleichzeitig über IPv6 und IPv4 erreichbar machen.
Extern per IPv6 auf deinen Router oder nur Wireguard intern IPv6 oder beides?AllowedIPs = 10.0.2.1/32, 192.168.0.0/24, fd8f:d4dc:9de9::/128
Der IPv6 Host ist falsch so erreichst du nämlich nur einen einzelnen Host im Wireguard Netz nämlich diesen fd8f:d4dc:9de9:0:0:0:0:0Wenn du andere IPv6 Netze im Ziel erreichen willst müssen die natürlich auch hinzugefügt werden damit Routen gesetzt werden. Wenn du dann Internet über IPv6 (Gateway Redirect) machen willst sind zusätzliche Maßnahmen erforderlich wenn du kein festes global routbares Pv6 Netz zuhause hast. Dann musst du auf dem Wireguard Router ausgehend IPv6 Traffic SRCNATen (masquerading).
Grundlagen zu IPv6 bitte erst einmal hier einlesen bevor du damit hantierst dann bist du für alle Fälle gewappnet und kannst auf jeden Fall richtig reagieren.
https://danrl.com/ipv6/
Gruß.