Aufbau und Setup
- Raspberry Pi 3 mit Raspberry Pi OS Bullseye
- der Pi hängt im LAN hinter dem Hauptrouter
- LAN: 192.168.150.0/24 (PI: 192.168.150.200)
- VPN Netz: 10.10.10.0/24 (VPN Server: 10.10.10.1, VPN Client1: 10.10.10.2, VPN Client2: 10.10.10.3)
- Clients als Road Warrior (Android Smartphone und Windows 10 Notebook)
Installation
WireGuard auf dem Raspberry Pi installieren. (Zur Vereinfachung alles als root.)
WireGuard ist ab Linux-Kernel Version 5.6 im Kernel enthalten. Das Paket wireguard-dkms muss nicht mehr zwingend installiert werden.
$ modinfo wireguard filename: /lib/modules/6.1.21-v7+/kernel/drivers/net/wireguard/wireguard.ko.xz alias: net-pf-16-proto-16-family-wireguard alias: rtnl-link-wireguard version: 1.0.0 author: Jason A. Donenfeld <Jason@zx2c4.com> description: WireGuard secure network tunnel license: GPL v2 srcversion: B5257F7548E6FF763F8DAFB depends: libcurve25519-generic,udp_tunnel,ip6_udp_tunnel,libchacha20poly1305,ipv6,curve25519-neon intree: Y name: wireguard vermagic: 6.1.21-v7+ SMP mod_unload modversions ARMv7 p2v8
Raspberry Pi OS Bookworm
$ apt update $ apt upgrade $ apt install wireguard-tools iptables
Raspberry Pi OS Bullseye
$ apt update $ apt upgrade $ apt install wireguard-tools iptables
Raspbian Buster
$ apt-get update $ apt-get upgrade $ apt-get install raspberrypi-kernel-headers $ echo "deb http://deb.debian.org/debian/ unstable main" | tee --append /etc/apt/sources.list.d/unstable.list $ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC $ printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' | tee --append /etc/apt/preferences.d/limit-unstable $ apt-get update $ apt-get install wireguard $ reboot
Aktivieren von IPv4 forwarding in der /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward = 1
Den Pi neu starten und die Änderungen nochmal überprüfen.
$ sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
Keys generieren
Die Erstellung der keys wird im Verzeichnis /etc/wireguard durchgeführt.
Um sicherzustellen dass alle Dateien die richtigen Berechtigungen haben, muss die umask auf 077 gesetzt sein.
$ umask 077
Server Key generieren
private und public key für den Server
$ wg genkey | tee server-private.key | wg pubkey > server-public.key $ ls -l server* -rw------- 1 root root 45 Mar 31 10:38 server-private.key -rw------- 1 root root 45 Mar 31 10:38 server-public.key
Client Keys generieren
private und public key für die Clients
$ wg genkey | tee client1-private.key | wg pubkey > client1-public.key $ wg genkey | tee client2-private.key | wg pubkey > client2-public.key $ ls -l client* -rw------- 1 root root 45 Mar 31 10:41 client1-private.key -rw------- 1 root root 45 Mar 31 10:41 client1-public.key -rw------- 1 root root 45 Mar 31 10:41 client2-private.key -rw------- 1 root root 45 Mar 31 10:41 client2-public.key
Server Konfiguration
Dazu wird die Datei /etc/wireguard/wg0.conf erstellt. (Die neue VPN Schnittstelle ist wg0.)
Bei den iptables Regeln muss ggf. noch der Name der Netzwerkschnittstelle angepasst werden! Bei mir ist es eth0.
[Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = <server-private.key einfügen> PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # Client1 Smartphone [Peer] PublicKey = <client1-public.key einfügen> AllowedIPs = 10.10.10.2/32 # Client2 Notebook [Peer] PublicKey = <client2-public.key einfügen> AllowedIPs = 10.10.10.3/32
Client Konfiguration
Für jeden Client erstelle ich eine eigene Konfigurationsdatei.
/etc/wireguard/client1.conf
[Interface] PrivateKey = <client1-private.key einfügen> Address = 10.10.10.2 DNS = 192.168.150.20 [Peer] PublicKey = <server-public.key einfügen> Endpoint = vpn.your-public-server.net:51820 AllowedIPs = 0.0.0.0/0, 192.168.150.0/24 PersistentKeepalive = 25
/etc/wireguard/client2.conf
[Interface] PrivateKey = <client2-private.key einfügen> Address = 10.10.10.3 DNS = 192.168.150.20 [Peer] PublicKey = <server-public.key einfügen> Endpoint = vpn.your-public-server.net:51820 AllowedIPs = 0.0.0.0/0, 192.168.150.0/24 PersistentKeepalive = 25
Als DNS Server nutze ich meinen eigenen im lokalen LAN und mit 0.0.0.0/0 wird alles (der komplette traffic) durch das VPN geroutet.
Da ich mich hinter einem NAT befinde, wird mit PersistentKeepalive = 25 versucht die Verbindung aufrecht zu halten.
WireGuard starten
$ wg-quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip address add 10.10.10.1 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
WireGuard beim Systemstart automatisch laden.
$ systemctl enable wg-quick@wg0 Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /lib/systemd/system/wg-quick@.service.
WireGuard Status
Status der aktiven wg0 Schnittstelle.
$ wg interface: wg0 public key: 9EHJpPuO59RsFbejPZacyZ34TkT7Exas/ZKQsAfTU0U= private key: (hidden) listening port: 51820 peer: mSOXtoZPSCoZL48u9IZGlpov5T4jAwZ7yhETTDosHVU= allowed ips: 10.10.10.2/32 peer: 9q9PAKC5MUNaF4QmcH5hoqwpWoX2R4/KewvLi0SebmQ= allowed ips: 10.10.10.3/32
Firewall Konfiguration
Der UDP Port 51820 muss an den internen VPN Server weitergeleitet werden. (hier für meinen MikroTik Router)
/ip firewall filter add action=accept chain=forward dst-port=51820 protocol=udp /ip firewall nat add action=dst-nat chain=dstnat dst-port=51820 in-interface=wan protocol=udp to-addresses=192.168.150.200 to-ports=51820
Road Warrior – Android Client
Für Android nehme ich die offizielle WireGuard App aus dem Google Play Store.
Die Einstellungen der App kann mittels einer Datei, QR-Code oder manuell erfolgen. Auf dem Server wird ein QR-Code für den Client1 erstellt.
$ apt install -y qrencode
QR-Code für den Client1 erstellen.
$ qrencode -t ansiutf8 < client1.conf
Abscannen und fertig. Ohne die mühselige tipperei auf dem Smartphone.
Road Warrior – Windows Client
Für Windows nehme ich den offiziellen WireGuard Client.
Nach der Installation die (auf dem Server erzeugte) client2.conf importieren
und die VPN Verbindung aktivieren.
WireGuard updaten
Ist nich mehr notwendig.
Das hat mich schon viel Nerven gekostet, weil nach einem Kernel Update des Systems wireguard-dkms nicht mehr kompiliert und mit einer Fehlermeldung abbricht.
Sollte es mal Probleme geben, kann man folgendes versuchen.
# Variante A (nach jedem Kernel Update) $ dpkg-reconfigure wireguard-dkms # Variante B $ apt remove wireguard* $ apt install bc libncurses5-dev $ apt install wireguard
Mittlerweile kompiliere ich mir dir WireGuard Kernel Module und das wg Tool selber. Ist super einfach und schnell erledigt.
WireGuard nicht aus den Repos installieren und ggf. installierte Pakete vorher deinstallieren!
# Toolchain installieren $ apt-get install libmnl-dev libelf-dev linux-headers-$(uname -r) build-essential pkg-config # WireGuard empfiehlt den aktuellen Snapshot zu verwenden $ wget https://git.zx2c4.com/WireGuard/snapshot/WireGuard-0.0.2019mmdd.tar.xz # Kernel Module und das wg Tool kompilieren (dauert noch keine 2 Minuten) $ cd WireGuard-0.0.2019mmdd/src $ make # als root installieren $ make install # neustarten und fertig $ reboot
WireGuard Compiling the Kernel Module from Source | current Snapshot versions
Die installierte Version kann man gut mit dmesg herausfinden.
$ dmesg | grep wireguard [ 26.708518] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information. [ 26.708537] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. # etwas kompakter $ dmesg | awk '/WireGuard/ {print $4,$5}' WireGuard 1.0.0
Fazit
Im Vergleich zu OpenVPN ist die Einrichtung und Konfiguration, trotz der langen Anleitung, in wenigen Minuten erledigt.
Der Tunnelaufbau und das Routing funktionierten auf Anhieb reibungslos und schnell.
17.05.2019 – Nach ca. 6 Wochen bin ich immer noch mehr als zufrieden! Schneller Tunnelaufbau und immer eine stabile Verbindung!
unter Debian BUSTER musste ich noch im ersten Schritt die PGP Keys installieren:
apt-key adv
--keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
apt-key adv
--keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
Danke für die Info.
Eine Erweiterung um IPv6 wäre nett. Ich habe leider einen DS-Lite Anschluss und somit nur eine IPv6 Adresse
Da kann ich momentan leider nichts zu schreiben.
– Habe keinen IPv6 Anschluss.
– Bisher keine Erfahrung mit IPv6.
Ich habe zu Hause beide, IPv4 und IPv6 – mein alter Traum wäre es, mit unterwegs, wenn ich in einem reinen IPv4 Netz bin, das IPv6 Netz von zu Hause reinzuholen, ob das wohl geht?
Klar geht das,
https://www.heise.de/ratgeber/Einen-eigenen-VPN-Server-mit-WireGuard-bauen-4459851.html?seite=2
Grüße Mirko
Danke für die Anleitung. Kann ich mit dieser Konfiguration auch auf die Geräte im Heimnetz (bei Dir 192.168.150.0/24) zugreifen. Ich habe einen Medienserver und möchte über die Wireguard-Anbindung im Urlaub darauf zugreifen können. Zudem möchte ich auch ssh Zugriff auf den Pi haben.
Danke
Wenn der VPN Tunnel verbunden ist, kannst du auf alle Geräte im LAN zugreifen.
Hallo,
mit dem Artikel konnte ich wunderbar schnell folgendes erreichen (Danke!):
* Smartphone (iOS) baut erfolgreich Tunnel auf: Handshake wird in App und wg angezeigt. OK
* Über DNS-Angabe in client.conf werden mir die DNS-Anfragen des Clients auch in Pi-hole angezeigt. OK
* Es gibt im Client aber keinen Seitenaufbau. Ich gehe davon aus, dass der Traffic (sprich Request an gewünschten Server) den WireGuard-Server nach erfolgreichem DNS gar nicht verlässt, also weder mit der VPN-IP (weil: im MikroTik-Router in ARP-Liste kein Eintrag) aber offensichtlich auch nicht auf die IP des Servers umgesetzt von der NAT-Maquerade-Regel.
Haben Sie andere Ideen, wo es haken könnte am “Tunnelausgang”? Iptables? Etwas anderes?
Danke und viele Grüße
Da würde ich spontan auf die Firewall tippen. Einfach mal zum testen kurz deaktivieren.
Hast du auch im MikroTik Router die beiden Firewall Regeln gesetzt?
Danke für Deine Antwort: Ja. Beide liefern auch hochzählende Paketzahlen.
Aber: wenn ich die beiden Regeln richtig verstehe sind sie für den INBOUND des VPN-Tunnels zuständig. Der Handshake kommte ja zu Stande; dort hatte ich daher keine Fehlerquelle mehr gesehen.
Wenn ich in meinem DNS-Resolver (pi-hole) die passenden Requests mit der IP aus dem Tunnel sehe, scheint der DNS-Teil am “Tunnelende” ja auch zu gehen (wireguard + pi-hole laufen auf dem selben Server).
Mir scheint daher plausibel: Entweder kommt die DNS-Antwort nicht zum VPN-Client oder in der Folge der (zur IP aufgelöste) Request des VPN-Clients kommt nicht aus dem Requesttunnel per NAT. Im MikroTik müsste doch dann Traffic mit der LAN-IP meines Servers zu sehen sein, weil der NAT am Tunnelende den Traffic der Clients auf sich NATted, richtig? Wenn dem so wäre, dann müsste doch die “PostUp”-Anweisung an iptables nicht greifen. Sehen kann ich Sie zumindest in iptables nach start von wireguard.
Dummerweise weiß ich darüber hinaus überhaupt nicht, wie man so etwas prüft/analysiert. Ich habe noch nie an irgend einem Sever mit iptables etwas zu tun gehabt, weil ich immer schon Fritzbox + MikroTik im Einsatz habe…
Nun habe ich doch selber die Ursache gefunden:
Analyse iptables mit
sudo iptables -t nat -L -nv
zeigt: Keine Pakete.in ifconfig noch mal nachgeschaut: Finde dort kein eth0 (mehr), aber heute em1 (zumindest bei ubuntu server). Wenn man in wg0.conf die iptables-Anweisung entsprechend anpasst, geht es auch! Blöde Falle, viel Zeit zum EInkreisen der Ursache gebraucht und am Ende ist es immer ganz einfach gewesen – wenn man es vorher gewusst hätte.
Vielelicht wäre oben im Text ein Hinweis sinnvoll, dass die Wired-Schnittstelle bei manchen Systemen statt eth0 em1 heißt und das ggf. angepast werden muss. Vielleicht spart es einem anderen die Forschungsarbeit… :)
Noch mal: Danke Dir für Deine wirklich hilfereiche Anleitung!
Hab das bei der Server Konfiguration noch ergänzt. Danke für den Hinweis.
Hi mb-press,
ich habe auf meinem Raspberry PI das Wireguard nach deiner Anleitung installiert und es läuft auch soweit. Nur wenn ich nun versuche von meinem Iphone über die App eine Verbindung zu meinem Tunnel aufzubauen kommt immer die Meldung im Log
“Handshake did not complete after 5 seconds”
“Sending Handshake initiation”
Und das immer wieder.
Zudem hab ich in den VPN Option von IOS beim Server immer die IP 127.0.0.1 also Localhost. Hast du ne Idee woran das liegen könnte das die Verbindung nicht aufgebaut wird.
Zudem wundert mich noch in der Serverconfig warum du oben bei der IP des Servers nen /24 Netz hast und unten bei den Clients ein /32 Netz?
Würde mich über ein Feedback von dir freuen.
Grüße Henrik
Hallo Henrik,
den “Handshake did not complete after 5 seconds” Fehler hatte ich (zum Glück) noch nicht.
Mein Windows 10 Notebook und Android Smartphone funktionieren bisher mit dem Setup problemlos.
was du mal versuchen könntest:
– andere Geräte funktionieren?
– aktuelle WireGuard IOS App?
– localhost beim Server ist sehr merkwürdig, kannst du das ändern?
– entferne mal in der client.conf den DNS Eintrag
– ändere mal in der client.conf die allowed ips von 0.0.0.0/0 auf
Der VPN Server hängt in einem /24 Netz.
Da der Client dem Server kein komplettes Netzwerk zur Verfügung stellt, sondern nur einen Host, ist bei einem Road Warrior Setup die Netzmaske /32.
Gruß, Michael …
Hallo Henrik,
das hatte ich auch mal kurz. Ursache war bei mir, dass der QR-Code augenscheinlich alles ins iphone lieferte, aber der Public-Key leider nicht der richtige war. Schau Dir mal oben den Screenshot mit den beiden Public-Keys an und vergleiche mit den beiden wg.conf und client1.conf… so muss es aussehen. War bei mir aber nicht. Nachdem ich den Public-Key des Clients anpasste (entweder im iphone oder in conf), ging der handshake auf Anhieb. :)
Mir war auch etwas rätselhaft, wie der pubic-Key des Clients in den QR-Code kommen sollte, wenn er gar nicht in der conf für die qrencode enthalten ist. Ich habe vermutet, dass das iphone sich dann selber einen generiert aus dem Private-Key. Wohlmöglich ist der QR-Code korrekt, wenn man in der client1.conf auch noch zusätzlich den Public-Key des Clients unter [Interace] einfügt. Hab’s noch nicht versucht (Wegen meines anderen Problems siehe oben), aber wäre denkbar.
Ergänzung nach Test:
* Es geht nicht, den erzeugten public-key des client in client1.conf zusätzlilch zu legen.
* Mit dem selben Private-Key des clients erzeugt zumindest bei mir wg pubkey einen anderen Key als der iOS-Client beim einlesen des QR-Codes. Das ist bei Dir vermutlich auch die Ursache. Unglücklich irgendwie…bis diese technisch Abweichung gelöst ist, muss man wohl manuell den Code vom iphone auf den Server bringen und in der wg0.conf eintragen.
Die Frage ist: Das müssten ja alle iOS-User haben und was kann man daran ändern. Gibt es eine Paramter zu wg pubkey, um die selbe Ableitung wie der iOS-Client zu bekommen?
Ergänzung:
Es scheint so, dass der generierte public key nur manchmal abweicht zwischen wg pubkey und iOS. Ich hatte jetzt wieder einige Fälle ohne Abweichungen, aber einzelne mit. Wenn man den manuellen workaround nicht mag, kann man also einfach eine neue private/public key-Kombi erzeugen und schauen, ob es passt.
Thema habe ich wireguard bereits gemeldet mit reproduzierbarem Beispiel; man darf nicht vergessen, es ist halt noch immer beta-Phase… :)
Hallo,
Danke für die Anleitung. Installation auf dem Pi3 neuste Raspbian (Buster) funktionierte wunderbar. Die Verbindung wird aufgebaut. Nur leider habe ich keinen Zugriff auf das Internet bzw. aud die lokale Resourcen.
Heimnetz (FritzBox 6490 10.0.0.1) 10.0.0.0/24 Netz
Pi3 10.0.0.60
Der Rest ist wie bei Dir. Also Wireguard-Server 10.0.1.1, Client1 10.0.1.2, Client2 10.0.1.3. Portweiterleitung in der FritzBox usw.
root@raspberrypi:/etc/wireguard# wg
interface: wg0
public key: gQ5/FY3ReWV+ZTZP+v8R….
private key: (hidden)
listening port: 51822
peer: QYR2wdtKD6rGZPcsS4lJzGLiHv+…….
endpoint: 46.114.xx.xxx:55702
allowed ips: 10.0.1.2/32
transfer: 9.11 KiB received, 5.66 KiB sent
peer: 1PBMEIQRqIxOLEtlHr2b27valj5/8a…..
allowed ips: 10.0.1.3/32
Da ich nicht der größte Netzwerkexperte bin, hoffe ich auf Hilfe. Welche Informationen kann ich senden um
1. Internet zu nutzen
2. auf das Netzt 10.0.0.0/24 zuzugreifen.
Danke Jones
Hallo Jones,
von was für einem Client aus geht es denn nicht? (Gerät / Betriebssystem)
Überprüfe mal die Server Config.
– dein WireGuard Port ist 51822, richtig?
– stimmt der Name der Netzwerkschnittstelle bei den iptables Regeln? (den Fehler hatten wir nämlich schon mal)
Habs gelöst. Die FritzBox Kindersicherung war für den Pi aktiviert. Habe es hiermit gemerkt:
root@raspberrypi:/etc/wireguard# curl ip.stigok.com
302 Document moved302 Document movedThis document has moved here.
root@raspberrypi:/etc/wireguard#
Nach der Freischaltung klappte dann auch der Handshake.
Danke noch einmal für die Anleitung. Vielleicht baust du den “Onlinetest” ja in deine Beschreibung ein. Sozusagen als Vorbedingung für alle weiteren Schritte.
Danke
Da muss man erst mal drauf kommen. ;)
Freut mich das es läuft!
Habe noch eine abschließende Bemerkung/Hilfegesuch. Mit der Geschwindigkeit scheint in einigen Situationen etwas nicht zu stimmen. Ich habe eine 100/50 (FB 6490) Anbindung. Diese wird auch voll geliefert. Zuhause an der FritzBox hängt der Pi3B+ per Gbit an der FB. Ein lokaler Speedtest auf dem Pi (speedtest-cli) lieferte die volle Geschwindigkeit (100/50). Auf der Wireguard Gegenseite (Netzwerkanbindung 500/500) steht mein Reiserouter GL.Inet 750S-Ext. Der Wireguard Client ist hier bereits vom Hersteller impementiert.
Nun mein Problem: Steht die Wireguard Verbindung und führe ich mit dem Client ein Speedtest durch (auch mit Kabel verbunden), liefert der Speedtest die Werte (ca. 40/45). Soweit so gut. Wenn ich jetzt aber eine Plex Video Stream (23Mbit/s) starte, dann ist die Verbindung offenbar auf 15-20 Mbit/s begrenzt (sehe ich im FritzBox Onlinemonitor). Alle 5-10 Sekunden gibt es daher Aussetzer im Video. Ein 23 Mbit/s Plex Stream ohne Wireguard Verbindung läuft einwandfrei. Auch höhere Streamraten (bis 40 Mbit) habe ich bereits geschafft.
Wie kommt es, dass ein Speedtest 45 Mbit/s schafft, ein Plex Stream aber nicht einmal die Hälfte. Die Prozessoren beider Geräte (Pi und Gl.Inet) sind bei weitem nicht ausgelastet. An der Vernetzung der Geräte kann wie gesagt nicht liegen. Habt ihr ein paar Ansatzpunkte?
@Jones: Der GBit LAN Port des Pi3B+ schafft maximal ca. 300 Mbit/s Durchsatz = ca. 37,5 MB/s.
Die Performance im “echten Leben” wird bspw. bei Streamen von Videos von einer angeschlossenen USB Festplatte niedriger sein – da alle Daten (USB Ports und LAN) trotzdem durch den SoC und den einen USB 2.0 Port laufen müssen.
Erst der Pi4 bietet vollen GBit Durchsatz (ca. 940Mbit) da dieser voll angebunden ist.
Hallo,
leider klappt es bei mir auf einem 3B+ mit Buster nicht. Die unstable-sourcen werden abgelehnt, weil sie nicht signiert sind und das Paket Wireguard wird nicht gefunden. Was muss ich tun, damit ich es installieren kann?
Danke und Gruß
Habs gerade mal ausprobiert. Wie Sven es oben beschrieben hat!
apt-key adv
--keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
Damit hat es bei mir (Pi 3 mit Buster) funktioniert.
Jo, stimmt. Danke für den Hinweis. Hatte ich oben leider überlesen.
Hallo,
vielen Dank für die Anleitung, VPN funktioniert, und auch der Zugriff vom Client auf’s Heimnetz klappt.
Da ich eine Fritzbox habe wollte ich jetzt am Handy einen SIP Client nutzen. Dabei ist mir aufgefallen:
Das Handy ist mit seiner VPN Adresse nicht aus dem Heimnetz erreichbar.
Abhilfe: Auf der Fritzbox eine Statische IPv4 Route setzen die aufs Wireguard Netz verweist.
Um bei den Verwendeten Beispieladressen zu bleiben:
Auf der Fritzbox wird eine Route mit dem
Ziel-Netz: 10.10.10.0/24
Gateway: 192.168.150.200
gesetzt, damit klappt auch SIP Telefonie und der direkte Zugriff aus dem Heimnetz (192.168.150.0/24) aufs VPN Netz (10.10.10.0/24)
Viele Grüße,
Sven
Sehr interessant, vielen Dank für die Info!
@Sven_A: Danke für den Tip. Nach der Lösung für mein VoIP Problem über WireGuard habe ich schon lange gesucht. Einfach die IPv4 Route in der FB angelegt und schon klappt es auch mit der FritzApp Fon von unterwegs.
Hallo,
ich habe noch ein Problem. Ich habe Wireguard wie hier beschrieben. Es läuft auf einem Pi 3B+ parallel zu Pi-Hole mit Stubby hinter einer Fritzbox. Das läuft so weit alles gut und ich kann mich problemlos per Wireguard verbinden und auch auf alle lokalen Geräte zugreifen. Nur komme ich über Wireguard nicht ins Internet -> Meldung “DNS_PROBE_FINISHED_BAD_CONFIG”. Als DNS ist in der WG-Config der Pi angegeben.
Leider habe ich keinen Ansatz, wo ich anfangen könnte zu suchen. Habt ihr Tipps oder vielleicht sogar eine Lösung für dieses Problem?
Fritzbox rebooten und auch mal zum testen einen anderen DNS Server eintragen.
Wenn ich die FritzBox als DNS angebe funktioniert es. Die FritzBox verweist als DNS wieder auf den Pi. Wenn ich den Pi direkt als DNS angebe funktioniert es nicht. Fehlt da evtl. noch eine Route auf dem Pi? Die hier in den Kommentaren genannte Route auf der FritzBox habe ich eingetragen.
Hoi habe selbiges Problem. Gibts ne lösung ?
ach ja noch eine info .. unter stretch hatte ich das problem nicht , sondern nur unter buster.
Einfach mal ein DICKES DANKE für die Anleitung.
Läuft prima!
Frank
Danke, freut mich! :-)
Moin,
ich bekomme beim Aufruf von
sudo apt-get install wireguard
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package wireguard
cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
Kann ich bitte einen Tipp bekommen, was ich nun tun sollte?
Habs jetzt hinbekommen
Hatte alles mit sudo gemacht und tee schlug dann mangels sudo fehl
Guten Abend Juergen,
Genau vor diesem Problem stehe ich auch, wie hast Du das Problem denn gelöst?
Ich möchte eigentlich vermeiden den Root User einzurichten.
Vielen Dank im Voraus
Nevermind. Als Neuling habe ich was missverstanden jetzt geht es auch bei mir.
egal was ich probiere ich bekomm immer die Meldung:
gpg: Empfangen vom Schlüsselserver fehlgeschlagen: Server indicated a failure
bei allen 3 keys hier auf der seite der selbe fehler…
Trag mal den DNS Server von Google (8.8.8.8) in die /etc/resolv.conf ein und probiers dann noch mal.
@mb-press
Super!!!
Vielen dank das wars!!
Ist ja komisch es stand mein DSL router als dns drin…
Hallo,
beim Starten von WireGuard über “$ wg-quick up wg0” erhalte ich in der dritten Zeile diese Fehlermeldung:
Key is not in the correct lenght or format :
Configuration parsing error
Kennt jemand von euch diese Meldung und kann mir weiterhelfen?
Danke
Dann stimmt was mit dem Format des eingefügten keys nicht! ;)
Hast du vielleicht den Pfad zu der Datei dort eingetragen?
Hier muss nur der Inhalt der entsprechenden *.key Datei rein.
@mb-press
Endlich mal eine Anleitung ohne viel Schnick-Schnack, die auf Anhieb funktioniert.
Super!
Vielen Dank!
Danke! :-)
Super Anleitung. Hat alles auf Anhieb ohne Probleme funktioniert!
Eine Frage hätte ich noch: Wenn eine neue Wireguard Version rauskommt, einfach
apt-get update
apt-get upgrade
machen?
Ja, Wireguard kann über die Paketverwaltung aktualisiert werden.
Aber aus eigener Erfahrung:
Backup machen! WireGuard configfiles (/etc/wireguard) und auch mal ein komplettes Image der SD Karte!
Bei einem Wireguard Update hat es mir mal den kompletten Pi zerschossen, da ging nix mehr.
Vorsicht auch bei Kernel Updates des Pi. Danach passen die WireGuard Module natürlich nicht mehr zum neuen Kernel.
Lässt sich meistens mit einer Neuinstallation von Wireguard wieder hinbekommen, aber auch nicht immer. ;)
Image der SD-Karte mach ich wie?
Da kann ich diese beiden Programme empfehlen:
Win32 Disk Imager
USB Image Tool
Die SD-Karte in den Windows Rechner und dann mit dem Programm ein Image des Datenträgers erstellen.
Hallo,
bin absoluter Neuling.
VPN Verbindung steht, allerdings keine Verbindung auf die Synology im eigenen Netzwerk…
QR- Code klapte also auch.
Fehlermeldung auf IOS: “Handshak did not cpmplete after 5 sec…”
Ich gehe davon aus, dass es am Port liegt:
/ip firewall filter
add action=accept chain=forward dst-port=51820 protocol=udp
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=51820 in-interface=wan protocol=udp to-addresses=192.168.150.200 to-ports=51820
Wo genau trage ich das ein?
Den Rest habe ich fünfmal gecheckt…
Wie gesagt, Neuling :-)
Danke!
Zur IOS Fehlermeldung gibt’s hier schon einige Kommentare.
Die Einträge für die Firewall und das Portforwarding sind vom verwendeten Router abhänging.
In meinem Fall bezieht sich das auf einen MikroTik Router. Die Regeln weden über das CLI (Terminal) eingegeben.
Was für einen Router hast du denn?
Hallo,
danke für die schnelle Antwort.
Ich habe einen Telekom Hybrid Router…. Ich weiß, würde auch lieber auf FB oder ähnliches umstellen.
Doch leider ist das aufgrund meines Anschlusses nicht möglich, da ich ohne Hybrid wahrscheinlich den langsamsten Anschluss der Welt habe :-(
Firewall ist beim hybrid- Router leider nicht deaktivierbar… Die o.g. Lösungen habe ich alle schon probiert… Leider ohne Erfolg.
Beim Router habe ich den Port 51820 geöffnet.
Wahrscheininlich ist die Frage zu trivial aber ich stelle sie mal trotzdem : Wie und wo gebe ich die Regeln über das CLI ein :-)
Wie gesagt, ist das erste mal das ich etwas „programmiere „:-))
Vielen Dank und schönes WE
Stephan
Auf keinen Fall die Firewall deaktivieren!
Wenn du den Port 51820 offen hast, nimmt der Router die Verbindung von draussen schonmal an.
Jetzt musst du sie nur noch an den Raspi weiterleiten.
Google mal nach “Telekom Hybrid Router Port Weiterleitung”
https://www.telekom.de/hilfe/downloads/bedienungsanleitung-speedport-hybrid.pdf, Seite 105
Der Router hat kein CLI. Kann nur über die Weboberfläche konfiguriert werden.
Ganz großes Lob. Für mich die beste Anleitung zu Wireguard die ich nach umfangreicher Recherche gefunden habe.
Dank dieser Anleitung war die Einrichtung von Wireguard auf meinem Raspberry Pi4 ein Klacks, während andere Anleitungen nur ein Fragezeichen hinterließen…
Habe nun Handy und Windows-Notebook über Wireguard angebunden. – Vielen Dank !
Danke für das dicke Lob! :-)
Was mich noch interessieren würde: Momentan betreibe ich neben dem Wireguard-Raspberry noch eine LAN-2-LAN Kopplung über das Internet mit der VPN-Funktion von zwei Fritzboxen.
Diese VPN Verbindung ist wegen der Fritzbox-CPU-Leistung leider nicht sehr performant. – Hier wäre die Frage, wenn ich auf beide Seiten/in beide lokalen Netze Wireguard-Gateways (=Raspberrys) packe, wie müsste ich die dann für eine LAN-2-LAN-Kopplung einrichten ? – An den Fritzboxen müsste ich dann nur die IP des jeweiligen Wireguard-Raspberrys als Gateway für das jeweils andere Netz als statische Route angeben, denke ich. – Der normale Internetverkehr der beiden Standorte soll ja ganz normal über die Fritzbox direkt ins Internet laufen.
Ja funktioniert, habe ich auch so gebaut.
Hast du mal irgendwo eine Beispielkonfig beider Seiten für mich, an der ich mich entlanghangeln kann ? Ich stelle mir z.B. die Frage, ob beide Raspberrys auf beiden Seiten einen Wireguard Server haben müssen, oder ob nur einer der beiden Raspberrys dann ein Wireguard Server ist, und der andere ein Wireguard Client. – Dann wäre die Frage, wie genau ich dem Wireguard-Raspi-Client sage, dass er Pakete von anderen Rechnern im lokalen LAN über Wireguard ins entfernte LAN weiterreichen soll.
Meine aktuelle Netz-Umgebung ist so:
Ort 1; Netzadresse 172.16.0.0/16; Öffentlicher DynDNS: Ort1.my-wan.de
Ort 2; Netzadresse 192.168.178.0/24; Öffentlicher DynDNS: Ort2.my-wan.de
Wenn ein beliebiger Client aus Ort 1 (172.16.0.0/16), dessen Gateway die dort lokal installierte Fritzbox ist, Pakete für das Netz von Ort 2 hat, soll die Fritzbox mithilfe einer statischen Route diese an den dort lokal laufenden Wireguard-Raspi weitergeben, der diese dann an den Wireguard-Raspi von Ort 2 weiterleitet.
Umgekehrt soll es genauso funktionieren, also wenn ein beliebiger Client aus Ort 2 (192.168.178.0/24) Pakete für Ort 1 (172.16.0.0/16) hat, sollen diese von der ebenfalls in Ort 2 stehenden Fritzbox an den dort installierten Wireguard-Raspi an den Raspi von Ort 1 weitergeleitet werden. Der teszliche normale Internetverkehr soll nicht über den Tunnel laufen, sondern ganz normal direkt ins Internet.
Wie ich statische Routen in den Fritzboxen setze ist klar, aber wie ich letztlich eine LAN zu LAN Kopplung mithilfe von zwei Wireguard-Raspberrys auf beiden Seiten konfiugurationstechnisch hinbekomme istz mir aktuell noch nicht klar.
(All das übrigens, weil die Performance der bisher dafür eingesetzten Fritzbox-eigenen VPN Funktion/LAN-zu-LAN-Kopplung sehr dünn ist)
Moin,
bei mir läuft alles wunderbar.
Nur:
Hat jemand eine Idee, wie man den Android-Client nach der nächtlichen Zwangstrennung des DSL-Anschlusses wieder neu startet,
um die neue IP-Adresse zu bekommen?
Bei dynamischen IPs einfach einen DynDNS Dienst nutzen.
Ist schon klar, aber einmal aus- und wieder einschalten bleibt, weil WG selbst nicht wieder nachschaut, wenn es aktiviert wurde.
Hallo,
gibt es für das Problem inzwischen eine Lösung? Ich habe das Problem auch, nutze eine DynDNS. Aber scheinbar kommt Wireguard damit nicht klar. Ich habe zwar zusätzlich noch Unbound installiert und als DNS-Server, denke aber nicht dass es daran liegt.
Ansonsten tolle Anleitung, danke.
Gruß,Klaus
Könnt ihr etwas zur Performance sagen? Ich habe 100Mbit Upstream und würde gerne wissen, ob der Pi3 dies hier in Wireguard rausholen kann.
Auf meinem DD-WRT Router (Linksys WRT1900ACS v2) ist die Performance unterirdisch, ich kriege maximal 8-10 MBit/sec Transferrate. OpenVPN hingegen läuft auf demselben Router mit ca. 30MBit/sec. Dies ist insbesondere deshalb seltsam, weil alle die Performance von Wireguard loben, aber ich vermute, dass es im DD-WRT nicht vernünftig integriert wurde.
Wie sieht es hier mit der Raspi Performance aus?
Hallo,
Eine Frage: gibt es schon eine Möglichkeit, WireGuard auf einem RasberryPi 4 mit neuem Buster zu nutzen? Welche Vorteile hat dies: höherer Durchsatz/ Geschwindigkeit? Hat es schon jemand erfolgreich probiert?
Denke das sollte laufen, habs aber noch nicht ausprobiert.
Danke für die schöne und verständliche Anleitung, damit habe ich jetzt vom Notebook Zugriff auf mein Heimnetz und das Handy ist immer zuhause :-)
Danke, freue mich immer über eine Erfolgsmeldung! ;)
Hallo,
erstmal Danke für die sehr verständlich geschriebene Anleitung…
ich bekomme jedoch bei dem Kommando:
‘wg-quick up wg0’
folgende Fehlermeldung:
[#] ip link add wg0 type wireguard
RTNETLINK answers: Operation not supported
Unable to access interface: Protocol not supported
[#] ip link delete dev wg0
Cannot find device “wg0”
komme irgendwie nicht weiter
Dann sind bei dir die wireguard Kernel Module nicht geladen!
Hast du vielleicht vergessen die kernel-headers zu installieren oder nach der Installation neu zu starten?
Danke für die prompte Antwort!
vergessen habe ich es nicht, aber wahrscheinlich folgende Fehlermeldung übersehen:
Entpacken von raspberrypi-kernel-headers (1.20190925+1-1) über (1.20190925+1-1) …
raspberrypi-kernel-headers (1.20190925+1-1) wird eingerichtet …
run-parts: executing /etc/kernel/header_postinst.d/dkms 4.19.75+
run-parts: executing /etc/kernel/header_postinst.d/dkms 4.19.75-v7+
run-parts: executing /etc/kernel/header_postinst.d/dkms 4.19.75-v7l+
run-parts: executing /etc/kernel/header_postinst.d/dkms 4.19.75-v8+
Error! echo
Your kernel headers for kernel 4.19.75-v8+ cannot be found at
/lib/modules/4.19.75-v8+/build or /lib/modules/4.19.75-v8+/source
welche jetzt – beim reinstall – ausgegeben wurde
Hast du ein Kernel Update installiert?
Da hatte ich auch schon so meine Probleme mit.
versuch mal ein:
dpkg-reconfigure wireguard-dkms
oder:
apt remove wireguard*
apt install bc libncurses5-dev
apt install wireguard
Hab das auch mal in meiner Anleitung im Abschnitt “WireGuard updaten” ergänzt.
Guten Abend,
mein Wireguard lief bisher immer super stabil und auch recht perfomant. Nun hab ich nach dem letzten Update auf Raspbian Buster Lite wieder das Problem das der Handshake bei meinem Iphone nicht mehr klappt. Er sagt in der App das der Tunnel verbunden ist, aber ich kann keine Seiten mehr aufrufen. Zudem wird mir in der App auch nur angezeigt das ich angeblich nur Daten senden würde. Im Raspberry sehe ich auch keine Verbindung wenn ich wg0 eingebe. Auf dem Notebook ist es ähnlich. Viellleicht weiß jemand woran es liegt.
Halo MB-Press
Ich habe vor Weihnachten auf einem Raspberry pi 4 (2 GB Ram) neben einem PiHole einen Wireguardserver eingerichtet. Über ein Xioami Redmi Note 4 mit Kernel für Wireguardunterstützung hat es auch direkt funktioniert. (Betriebssystem Lineage 9 Elektrakernel) Der Akkuverbrauch ist bei 1 Prozent pro Tag und man hat offensichtlich ein reines Roaming über seinen VPN Server. Was mich allerdings stört ist die Geschwindigkeit. Man kommt egal ob man LTE hat oder H+ oder auch in einem fremden Wlan ist nicht über 60 KB/s hinaus. Andere berichten von viel höherem Durchsatz. Ist überhaupt ein höherer Durchsatz möglich und wenn ja, wie?
Meinst du wirklich 60 KB/s? Das kann nicht sein.
Probier das mal mit einem anderen Gerät. (Notebook, Smartphone vom Bekannten, etc.)
Sorry für die späte Antwort.
Nachem ich
AllowedIPs = 0.0.0.0/0, 192.168.178.0/24 (Fritzboy IP) bei dem Clients auf
AllowedIPs = 0.0.0.0/24, 192.168.178.1/24 abgeändert habe, läuft die Verbindung. Ebenfalls kann ich auch so direkt auf Fritz.nas zugreifen.
Der Traffic ist jetzt ca. 20 bis 25 % lagsamer als ohne Wireguard (statt 5000 KB/s 4000 KB/s) Einfach toll, aber warum die Bremse drin war kann ich nicht nachvollziehen. Vielleicht hat jemand eine Erklärung dafür.
Ich war in Israel in Urlaub, ich habe den Wireguard immer am laufen gehabt. Bei mir sind keine Probleme aufgetaucht. (Einzig dauert es bis zu 3 Sekunden, bis der Traffic läuft, das mag aber an dem Elektrakernel liegen, der extrem stromsparend ist.) Ich war der einzigste, der dem Tagesschau Lifestream in der Reisegruppe hinbekam. (musste aber den Standortzugriff bei Firefox abschalten)
Noch einmal vielen Dank für die Anleitung.
Was mich noch interessieren würde: Momentan betreibe ich neben dem Wireguard-Raspberry noch eine LAN-2-LAN Kopplung über das Internet mit der VPN-Funktion von zwei Fritzboxen.
Diese VPN Verbindung ist wegen der Fritzbox-CPU-Leistung leider nicht sehr performant. – Hier wäre die Frage, wenn ich auf beide Seiten/in beide lokalen Netze Wireguard-Gateways (=Raspberrys) packe, wie müsste ich die dann für eine LAN-2-LAN-Kopplung einrichten ? – An den Fritzboxen müsste ich dann nur die IP des jeweiligen Wireguard-Raspberrys als Gateway für das jeweils andere Netz als statische Route angeben, denke ich. – Der normale Internetverkehr der beiden Standorte soll ja ganz normal über die Fritzbox direkt ins Internet laufen.
Diese Frage interessiert mich ebenfalls brennend! Ich versuche zur Zeit die dafür richtige Konfiguration der wg0 herauszufinden. Mir ist bisher noch nicht klar geworden, was in der wg0 Datei beim Clienten bzw. Server verändert werden muss.
Wie wird dann erreicht, dass die eingestellten/importierten Keys aus der wg0 in das Unterverzeichnis Keys übernommen. Wenn ich nur die wg0 ändere, dann bekomme ich bei der Überprüfung mit pivpn eine Fehlermeldung.
Deine Fragen kann ich dir leider nicht beantworten. :(
Hallo,
vielleicht hat einer einen Tipp für mich.
Ich komme mit VPN nun auf alle meine Rechner im Heimnetz 192.168.178.x. Aufruf klappt mit IP Adresse und Name des Rechners.
Will ich aber weiter in Internet klappt es nicht. Egal ob IP oder Name.
Kontrollier mal deine iptables und IPv4 forwarding Einstellungen.
Fehler gefunden. Ich musste iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE anpassen. eht0 gibt es bei mir nicht. Der Name ist in einer Proxmox VM anders. Aber jetzt klappts.
Außerhalb von meinem W-Lan Always On. Super schnell. :-)
Hallo,
super vielen Dank für deine Beschreibung.
Ich habs via Fritzbox Gigabit Kabelinternet Anschluss zu einem dahinterliegenden Unifi USG Router in Betrieb.
AVM Fritzbox 6591 läuft als Exposed Host. Unifi USG Router ist der Hauptrouter im Netz.
Ein Raspi 4 spielt im Netz des USG dann den Wireguard Server.
Läuft alles Bestens, wenn man die Statische Route im USG auf 10.10.10.0 beachtet.
Danke für das Feedback und die Info! :)
Hall Hr. Janssen,
Ich habe eine sehr ähnliche Konfiguration:
Fritz!Box 6499 > USG 4P > Raspberry 4 als WG-Server
Es klappt alles, bis auf die Fritz Fon app, Verbindung klappt, Anrufe kommen sogar durch, nur wird kein Ton übertragen.
ich denke mit der statischen Route klappt es dann bei mir auch, nur kann ich diese in der USG4 nicht einstellen.
bitte um Unterstützung
…..
wenn man die Statische Route im USG auf 10.10.10.0 beachtet.
Hallo alle zusammen,
ich bekomme das irgendwie nicht hin..Handshake funktioniert, aber ich kann keine Verbindung zum Internet herstellen,
mit einem Ipad und der iosapp.
Fritzbox hat die IP 192.168.10.1, und der pi 192.168.10.32
wg0.conf sieht so aus:
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxxxxxxxx=
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Client1
[Peer]
PublicKey = 7lxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.10.10.2/32
# Client2
[Peer]
PublicKey = Kxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.10.10.3/32
und
client1.conf:
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxx=
Address = 10.10.10.2
DNS = 192.168.10.1
[Peer]
PublicKey = xxxxxxxxxxxxxxxxx=
Endpoint = 91.xxxxxxxxxxxxx:42891
AllowedIPs = 0.0.0.0/0, 192.168.10.1/24
PersistentKeepalive = 25
Hab eine Fritzbox 7490 und portforwarding ist eingestellt in der Fritzbox für den pi auf 51820 und auch eine statische route.
My dyndns ist der MyFritzdyndns: mit der Internetadresse; https://hdxxxxxxxbf:42891 bzw. 91.xxxxxxxx:42891.
et0 gibt es auch.
Habe schon das gesamte Wochenende alles probiert aber es funktioniert einfach nicht. Vielleicht kann mir ja einer helfen?
Die Einwahl mit den Clients funktioniert, nur haben diese kein Internet?
Ist auf dem Pi das IPv4 forwarding in der /etc/sysctl.conf aktiviert?
Hi,
Ja, habe das so gemacht wie in der Anleitung:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Hast du mal mit einem Notebook getestet?
Die statische route mal rausnehmen.
Ist IPv6 in der FB aktiv, mal deaktivieren.
Also die statische Route hatte ich schon rausgenommen und ip6 habe ich komplett deaktiviert.
Überlege ob es vielleicht an der dnydns von myfritz zu tun hat, weil über https und der portangabe, die ja eine andere ist als 52180?! Was macht mir noch vielleicht einfällt , ist dass wenn ich wg eintippe er mir die schlüssel anzeigt, aber bei mir zeit er unten kein datenverkehr mut transferred in kb. Woher weiss ich denn ob er eine Verbindung zu wg0 herstellt? Ein Notebook habe ich leider nicht zum Testen.
Das hat nix mit der kompletten MyFritzadresse zu tun.
Deine Box ist extern über die Fritz DynDNS Adresse erreichbar? (irgendwas0815.myfritz.net)
Dann richtest du eine Portweiterleitung von Port 51820 UDP an den Pi auf Port 51820 ein.
Als Endpoint nimmst du dann: irgendwas0815.myfritz.net:51820
Stolperfalle bei den Fritzboxen ist wohl auch die Kindersicherung! Muss für den Pi deaktiviert werden.
(Hatte mal einer in den Kommentaren geschrieben.)
Es muss irgendwie an der Fritz DynDNS Adresse liegen. In der Fritzbox steht da: https://bxxxxxxxxxxxxx.myfritz.net:42891. Gebe ich auf meinem Computer im Browser nur bxxxxxxxxxxxxx.myfritz.net läuft die Verbindung ins leere. Erst wenn ich komplett https://bxxxxxxxxxxxxx.myfritz.net:42891 eingebe kommt eine Verbindung zustande und die Meldung wegen dem Zertifkat der Fritzbox erscheint. Frage wäre dann natürlich wie ich sowas dann bei endpoint eingeben kann?Der eigentliche Port ist ja 51280 und er will ja https.
Portweiterleitung mit 51280 hatte ich gemacht und die Kindersicherung ist nicht aktiviert.
Über https://bxxxxxxxxxxxxx.myfritz.net:42891 kommst du auf deine Box, da willst du aber nicht hin!
Diese Adresse hat NIX mit der Verbindung zum WireGuard Server zu tun. Der WireGuard Port ist 51280 und der will auch kein https!
Dein Endpoint ist: bxxxxxxxxxxxxx.myfritz.net:51820 den du in der WireGuard App einstellen musst. ;)
Ok das hatte ich ja auch auch schon ausprobiert. Dass ist zum Haare raufen. Für das portwarding in der fritzbox wähle ich doch den pi aus und udp und 51280?!
Beim DNS Server habe ich auch schon alles probiert, kann ich da eigentlich die IP Adresse meiner FRITZ!Box angeben?
Ja, portforwarding auf den Pi und udp port 51820. (nicht 51280)
Ich würde erstmal nen Google DNS nehmen, wenns damit läuft dann die FB als DNS probieren.
So langsam fällt mir aber nix mehr ein. (Hab keine FB und kein Apple Gerät.)
Vielleicht solltest du einfach alles nochmal auf null setzen und von vorne anfangen.
Ja ich werde das alles komplett neu aufsetzen. Habe noch eine leere sd karte.
Vielen dank für die hilfestellungen👍
Danke für die Anleitung.
Also ich bin echt überrascht (und mich kann nach fast 40 Jahren Erfahrung mit 0 und 1 nicht viel überraschen) wie schnell und einfach sich wireguard einrichten lässt. Sofort volle und einwandfreie Funktion auch in einer komplexen Vernetzung.
Gruß!
Ja, WireGuard ist schon ein ziemlicher Kracher! :-)
Einziger echter Nachteil:
Der Windows-Client läuft nur mit Administrator-Rechten, der Benutzer muss Mitglied der Gruppe Administrator sein.
Ein wirklicher Sicherheitsmangel. :(
Das stimmt. Änderungen der Netzwerkkonfiguration darf halt nur ein Admin.
Hallo,
ich hatte die Server Konfiguration geändert
[Interface]
Address = 10.10.10.1/24
…
…
# Client1 Smartphone
[Peer]
PublicKey =
AllowedIPs = 10.10.10.2/32
Bei den AllowedIPs des Client2 habe ich noch 192.168.178.0/24 (Fritz Box Netzwerk) und 192.168.2.0/24 eingetragen.
Leider brach beim “wg up wg0” die Verbindung zum Raspberry ab.
Seitdem komme ich nicht mehr per ssh rauf.
Eine Idee?
Viele Grüße
Kai
Keine Idee, verstehe auch den Zusammanhang nicht.
Wenn es doch nach den Änderungen nicht mehr läuft, mach sie wieder rückgängig!?
Hallo mb-press
ich hatte mich bereits am 10.02.20 an dich gewand mit dem Problem, das ich trotz laufenem Wireguard mit Kernel Modul auf dem Phone auch bei LTE nicht über 60 kb/s Traffic kam. Nachem ich die AllowedIPs auf 0.0.0.0/0 umgestellt hatte war die Bremse weg (warum auch immer).
Vor zwei Wochen habe ich ein OTA Update von Lineage 16 auf dem Redmi Note 4 gefahren, das alte war von Jannuar. Seit dem ist die alte Geschwindigkeit wieder da. Die Geschwindigkeit kommt nicht über ca. 60 kb/s. Der Tunnel steht, ich kann die Verbindungen auf dem Raspberry sehen, das Kernelmodul ist auf dem Phone geladen und wird auch genutzt. An dem Raspberry ist seit Anfang Februar nichts geändert worden. Offensichtlich liegt es an dem LineageUpdate. Die alte Version hatte ich nicht mehr, deshalb habe ich eine clean Installation von Lineage 16 neu gemacht. Aber Wireguard ändert sich nicht. Dann habe ich noch eine clean Installation von Lineage 16 microG (hatte ich vorher schon drauf, als die Geschwindigkeit noch hoch war, allerdings über Nanolox geflasht). Ich habe die aktuellen Wireguard Apps und auch ältere probiert, aber an der Geschwindigkeit ändert sich nichts. Versuche ich es mit dem Originalkernel baut sich eine normale VPN Verbindung auf mit exakt den gleichen Geschwindigkeiten. Flashe ich den Elektra Kernel (oder auch den Stromguard-Kernel) wird ohne die in den Einstellungen hinterlegte VPN Verbindung, wird der Tunnel aufgebaut, allerdings wieder mit der niedrigen Geschwindigkeit. Die VPN Einstellung in den Netzwerkeinstellungen des Telefons kann man auch löschen, es hat keierlei Einfluss auf die Geschwindigkeit.
Wo kann man noch was machen?
Da kann ich dir leider nicht weiterhelfen! :(
Besten Dank für diese Super Anleitung.
Ich habe es soweit geschafft, dass ich mit meinem Laptop (Windows 10) zu meinem Wireguard Server (ist eine Debian VM) auf meinem Server zu Hause verbinden kann. Wenn ich auf der Client Seite die “AllowedIPs = 0.0.0.0/0” so setze, komme ich auch auf mein NAS und alles Komponenten drauf.
Allerdings möchte ich nicht den gesamten Verkehr über den Tunnel schicken sondern nur Anfragen in mein Heimnetz 192.168.1.0/24.
Also dachte ich ich mache beim Client den Eintrag “AllowedIPs = 10.0.0.1/24, 192.168.1.0/24”. Das wäre ja zu schön gewesen :(
Leider kann ich so nur den Wireguard Server 10.0.0.1 pingen. 192.168.1.2 oder so sieht er leider alles nicht.
Was mache ich falsch? Ich verstehe es nicht. :(
Wäre froh könnte mir da jemand helfen.
Firewall, Portweiterleitung und so sollte ja alles stimmen sonst würde es ja nicht mit AllowedIPs = 0.0.0.0/0 gehen oder mache ich da einen Denkfehler?
Probier mal ob’s so funktioniert.
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
Hallo zusammen,
tolle Anleitung und tolle Kommentare!
Was mich interessieren würde wäre wie ich eine Feste-IP (ionos VPS für 1,-€) mit meinem PI4 route.
Den VPS mit der festen IP als Server und den Pi4 als Client, oder?
So möchte ich dann die Ports 80 und 443 auf PI4 ansprechen um Emailserver und Webserver zu betreiben.
Hat das jemand mal versucht und kann mir Tipps geben?
LG und bleibt gesund!
Auch mir hat die Anleitung sehr geholfen, danke.
Ich habe nun aber das Problem, dass Pushnachrichten (PushTAN und Signal) nicht ankommen. Da dies bei geschaltetem Pihole ebenfalls auftritt (das zusätzlich integrierte WIreguard ist auf dem Handy ebenfalls aus) vermute ich die Ursache bei unbound. Kennt jemand das Phänomen und weiß eine Lösung? Mir würde auch ein Tipp helfen wo ich suchen könnte.
Danke und Gruß,
Klaus
Moin!
Ich habe $ apt install -y qrencode eingegeben, um die config-qr zu erstellen. Darauf wurde auf meinem Pi zwar was installiert, aber das wars dann. Schließlich habe ich noch den Befehl für den client $ qrencode -t ansiutf8 < client1.conf eingegen, da bekome ich eine Fehlermeldung -bash.
Vielen Dank.
Dann hast du das $ Zeichen mit eingegeben?
Das ist der Prompt, gehört nicht zu den Befehlen.
Nee, natürlich habe ich $ nicht mit eingegeben. Hatte das nur gerade mit kopiert. Sorry.
OK. Bekommst du es denn jetzt ausgeführt, oder immer noch mit Fehlermeldung?
Wann ja, welche denn genau?
Hallo zusammen,
ich habe zwei Fragen:
1. Das mit der statischen IPv4/IPv6 Route leuchtet mir noch nicht so ganz ein.
Braucht man das nur um VoIP Funktionalität herzustellen oder noch für anderes?
Bedeutet dies das das VPN-Netz dann richtig mit dem Heimnetz kommunizieren kann
d.h. ohne ist keine Kommunikation mit dem Heimnetz möglich?
Muss man das dies für IPv6 auch einrichten?
2. Meine Clients (Android 10 Smartphones) sind mit einem Arbeits- und Privatprofil ausgestattet. Ich habe zwar in beiden Profilen Wireguard installiert und jeweils mit einem eigenen Wireguardzugang ausgestattet aber wenn beide Wireguard-Apps verbunden werden dann geht in einem der beiden Profile kein Internet mehr. Hat da jemand eine Idee wie man das konfigurieren muss?
Danke und Grüße
Ergänzung zu meinen Fragen:
zu 1.: Braucht man nicht theoretisch auch eine Route in umgekehrter Richtung also vom VPN-Netz zum Heimnetz?!?
zu 2. Habe es mittlerweile rausgefunden, ich hatte meine Android Firewall auf dem Client vergessen korrekt einzustellen.
Jedoch gibt es ein weiteres Problem was ich entdeckt habe:
Eine App kann bei mir am VPN+Pihole vorbeizutelefonieren. Eine bestimmte Domain die eigentlich geblockt ist, ist über diese App weiterhin erreichbar. Im Browser auf dem Client wird diese erfolgreich geblockt und taucht dann auch in der Pihole Query log auf.
Habt ihr in eurem Android eigentlich “Durchgehend aktives VPN” und “Verindungen ohne VPN blockieren” aktiv?
Servus,
danke für die Anleitung. Soweit läuft alles.
Wenn ich von Handy client1 aufs Heimnetz zugreife geht alles auch auf den Router sogar von außen.
Am heim PC sieht es da anders aus, sobald ich wireguard aktiviere habe ich zwar Internet und alles, kann aber nicht auf Router zugreifen oder auch auf mein Synology.
Woran kann das liegen?
Hi,
ich verstehe dein Problem/Frage nicht so richtig.
Das du vom Handy aus auf’s Heimnetz kommst, ist klar.
Aber welche Rolle spielt denn der Heim-PC? Wo steht denn dein WireGuard Server?
Hallo Michael,
kannst du Wireguard auf dem Raspi aktuell kompilieren? Bei mir geht das seit einigen Wochen nicht mehr (habe mehrere Raspis).
Ich erhalte folgende Fehlermeldung und bisher keine Lösung für das Problem gefunden:
make
CC [M] /home/pi/WireGuard/src/main.o
In file included from /home/pi/WireGuard/src/main.c:9:
/home/pi/WireGuard/src/queueing.h: In function ‘wg_reset_packet’:
/home/pi/WireGuard/src/queueing.h:100:2: error: implicit declaration of function ‘skb_reset_tc’; did you mean ‘skb_reserve’? [-Werror=implicit-function-declaration]
skb_reset_tc(skb);
^~~~~~~~~~~~
skb_reserve
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:266: /home/pi/WireGuard/src/main.o] Fehler 1
make[1]: *** [Makefile:1709: /home/pi/WireGuard/src] Fehler 2
make: *** [Makefile:38: module] Fehler 2
Das Problem hab/hatte ich auch.
Ich hab mir die WireGuard Kernel Module und die Tools aus den Quellen kompiliert, damit hat es funktioniert.
https://www.wireguard.com/compilation/ (Step1 bis 4)
Danke für die ausführliche Anleitung, klappt prima.
Kurzer Benchmark: Ich setze Wireguard auf einem Raspberry Pi 4 ein und kann zusammen mit der offiziellen Wireguard App auf meinem iPhone 11 Pro meine Internetverbindung vollkommen auslasten, d.h. 106 Mbit/s im Download und 47 Mbit/s im Upload sind damit problemlos möglich. Vermutlich auch noch deutlich mehr, bei mir limitiert da bloß die Internetverbindung.
Ich kann keinen messbaren Unterschied in der Geschwindigkeit mit/ohne Wireguard VPN feststellen.
Danke für die Infos!
Moin ! Erstmal danke für deine Anleitung ;)
Ich bekomme keine Verbindung hin, sehe entweder den Wald vor lauter Bäume nicht oder ich habe tatsächlich einen goßen Denkfehler.
Mein Aufbau:
Internet -> VodafoneModem (192.168.111.1 -> JuniperSRX 192.168.4.250 -> Wireguard 192.168.8.200 (vlan.8)
-> PiHole DNS 192.168.2.251 (vlan.2)
Der Wireguard VPN Server steht in einem eigenen VLAN an einen extra Port an der Juniper.
Meine Firewall Config ist sauber, ich habe mein Notebook angeschlossen und bekomme sofort via DHCP eine IP mit den richtigen Gateway und auch geht DNS sowie alles was gehen sollte.
Vom Wireguard komme ich via SSH Console auch überall hin, wo es anhand der Firewall Regeln möglich ist.
Die Eiwahl von extern als auch intern, lässt sich ohne Probleme herstellen. Jedoch sehe ich am PC Client, dass 0 bytes und 0 Pakete austauscht wurden. Der Client sendet, bekommt aber keine Antworten zurück.
In vielen Anleitungen (so auch in Deiner) wird ein anderes IP Netz verwendet, als der Wireguard an ETH0 anliegen hat. Hat das ein bestimmten Grund ? Ist hier mein Denkfehler ? Ich möchte eben das alle Clients erstmal im VLAN8 aufschlagen und dann kann ich via Firewall Zones mittels meiner Juniper ganz genau steuern, was wer darf.
Aber ich kann vom Client aus nicht den VPN Server, den DNS Server noch irgendwas via ICMP erreichen. Auch umgekehrt nicht. Auch ist zu Testzwecken aktuell das vlan8 komplett zum Internet hin offen ist. Ich bekomme aber auch kein Connect, wenn ich 1.1.1.1 als DNS auf dem Client eintrage, geschweige dass ich 1.1.1.1 via ICMP erreichen kann.
#####
Server Konfig:
[Interface]
Address = 192.168.8.200/24
PrivateKey = xxxxxxxx
ListenPort = 58210
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
SaveConfig = false
[Peer]
# NB-Test
PublicKey = xxxxxxx
AllowedIPs = 192.168.8.201/32
[Peer]
# Handy
PublicKey = xxxxxxx
AllowedIPs = 192.168.8.202/32
#####
Client Konfig:
[Interface]
Address = 192.168.8.201/24
PrivateKey = xxxxxxx
DNS = 192.168.2.251
[Peer]
PublicKey = xxxxxx
Endpoint = dyndnsadresse:58210
AllowedIPs = 0.0.0.0/0
# This is for if you’re behind a NAT and
# want the connection to be kept alive.
PersistentKeepalive = 25
Es wäre so genial, wenn jemand den passenden Tipp für mich hat oder ne Idee wie ich noch besser troubleshooten kann.
VPN Netz und LAN dürfen NICHT gleich sein! Das routing macht der WireGuard Server.
Vielen Dank für das ausführliche und gut nacharbeitbare Manual.
Leider funktioniert es bei mir noch nicht ganz.
Ich erhalte am Client (iPhone) die Anzeige, dass eine VPN-Verbindung besteht, ich bekomme aber keine Webseite angezeigt.
Am Raspberry Pi bekomme ich auch nicht bestätigt, dass ein Peer verbunden wäre.
Ich hoffe, es ist nur eine kleine Einstellungssache und jemand hat den entscheidenden Tipp für mich?
Vielen Dank!
=============================
Hier meine Ausgangssituation:
=============================
– Router: Fritz!Box 7580 über Telekom im Internet
– Raspberry Pi 4 mit Raspberry Pi OS frisch installiert. Feste IP-Adresse per DHCP von Fritz!Box bezogen: 192.168.178.88. Ist per Wlan angebunden.
– Wireguard-Profil an iPhone an Wireguard-App per QR-Code von Raspberry PI übertragen.
– DynDNS an Fritz!Box eingerichtet: Freigaben–>DynDNS–>dann weiter gemäß den Vorgaben von http://dynv6.com. Die DynDNS-Verbindung funktioniert.
Dies wird im Menü der Fritz!Box bestätigt (grüner Punkt) als auch beim DynDNS Provider.
– DNS Server habe ich keine eigenen eingerichtet.(Habe gegoogelt und dann den 1.1.1.1 für die Konfiguration ausgewählt, weil ich nicht wußte, was ich sonst eintragen sollte…
– Portfreigaben: In der Fritz!Box Internet–>Freigaben–>Portfreigaben, dann: Bezeichnung: VPN; Protokoll: UDP; Port an Gerät 51820 bis Port 51820; Port extern gewünscht (IPv4): 51820, Freigabe aktivieren ist angekreuzt
Am Raspberry Pi: /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = ***
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE
# Client1 iPhone
[Peer]
PublicKey = ***
AllowedIPs = 10.10.10.2/32
/etc/wireguard/client1.conf:
[Interface]
PrivateKey = ***
Address = 10.10.10.2
DNS = 1.1.1.1
[Peer]
PublicKey = ***
Endpoint = ***.dynv6.net:51820
AllowedIPs = 0.0.0.0/0, 192.168.178.88/24
PersistentKeepalive = 25
Abfrage nach dem Status der VPN-Verbindung am Raspberry Pi:
pi@pi4-1:~ $ sudo wg
interface: wg0
public key: ***
private key: (hidden)
listening port: 51820
Ich habe das Problem lösen können. Es war mein Fehler, ich habe zwei Schlüssel falsch eingesetzt gehabt. Habe dies nun korrigiert (mit neuen Schlüsseln) und nun funktioniert es wunderbar.
Nochmal vielen Dank für das tolle Tutorial!
Nichts zu danken, freut mich das es funktioniert!
Hallo,
ich habe ein Geschwindigkeitsproblem.
Wireguard läuft auf einem Raspi, auf meinem Androiden läuft die offizielle Wiregurad App.
Der Tunnel wird problemlos hergestellt, allerdings ist der Download( Betrachtet vom Android ausgehend) extrem schlecht, d.h. 524 kbit/s und ein Ping von 90.
Der Upload liegt bei 19000 kbit/s
DSL und Mobil habe ich grundsätzlich viel mehr Leistung, welche auch zur Verfügung steht.
Ich habe schon einiges über den MTU Wert gelesen, den habe ich beim Raspi und beim Androiden auf 1372 gesetzt, keine Besserung.
Guten Tag,
ich habe auf einem Raspberry Pi wireguard laufen.
Mit diversen Handys komme ich von überall, Teneriffa, Frankreich… , auf meine Geräte in meinem Heimnetzwerk.
Mit verschiedenen Notebooks, Linux Mint, geht das nicht, wenn das fremde WLAN eine Fritzbox benutzt.
Ich testete den Tunnel bei einem Freund mit Speedport Telekom router.
Das funktioniert sowohl mit meinem Linux Notebook als auch mit seinem Windows Rechner.
Das kuriose daran ist, dass ich von den fremden WLANs über den Tunnel sowohl die 192.168.178.1 als auch meine feste IP Adresse, welche ich gemietet habe, pingen kann.
Wie gesagt, die Handy clients funktionieren wunderbar.
Was übersehe ich
Schönen Abend noch
Jürgen
Die 192.168.178.1 ist ja eigentlich immer die Fritzbox IP.
Hast du die in deinem VPN Netz?