kelkor
Goto Top

VPS Server mit Wireguard und 2 Clients

Hallo, ich bin absoluter Neuling in Sachen Netzwerk/Wireguard.
Alles was ich weiss, habe ich selbst recherchiert. Leider komme ich nicht weiter. Hier mein Problem:

Ich habe ein Wireguard VPN mit zwei Raspberry Pi , welches auch funktionierte.
Da es von meinem Internetprovider immer wieder Probleme gab -mit einer öffentlichen IP -, habe ich beschlossen, einen VPS Server zu mieten.

Mein Aufbau der Wireguard -Konfiguration wg0
(IP und Port sind nicht echt)


VPS Server:
IPv4 : 77.22.333.444
PrivateKey: MDkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAmc=
Publickey: a/Zpaxxxxxxxxxxxxxxxxxxxxxxxxxxxz7QGlo=

Client 1:
PrivateKey: IGhLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxarvaClc=
Publickey: uYLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxPxc=


Client 2
PrivateKey: AdcLxxxxxxxxxxxxxxxxxxxxxxxxxarvaBbn=
Publickey: 85gCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxKDu


VPS-Server
Inhalt wg0.conf


[Interface]
Address = 10.0.0.1/24
#SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING ->
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING>
ListenPort = 1234
PrivateKey = MDkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAmc=

[Peer]
PublicKey = uYLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxPxc=
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25

[Peer]
PublicKey = 85gCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxKDu
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25


Client 1:
Inhalt wg0.conf


[Interface]
Address = 10.0.0.2/24
#SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING ->
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING>
ListenPort = 1234
PrivateKey = IGhLxxxxxxxxxxxxxxxxxxxxxxxxxxxarvaClc=

[Peer]
PublicKey = a/Zpaxxxxxxxxxxxxxxxxxxxxxxxxxxz7QGlo=
AllowedIPs = 10.0.0.0/24
Endpoint = 77.22.333.444:1234
PersistentKeepalive = 25


Client 2
Inhalt wg0.conf

[Interface]
Address = 10.0.0.3/24
#SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING ->
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING>
ListenPort = 1234
PrivateKey = AdcLxxxxxxxxxxxxxxxxxxxxxxarvaBbn=

[Peer]
PublicKey = a/Zpaxxxxxxxxxxxxxxxxxxxxxxxxxxz7QGlo=
AllowedIPs = 10.0.0.0/24
Endpoint = 77.22.333.444:1234
PersistentKeepalive = 25

________________________________________________________________________________

Handshake findet mit beiden Clients statt.
Ping funktioniert aber nur bei Client 2.
Ich habe gelesen, dass der Eintrag in den wg0.conf Dateien:
AllowedIPs = 10.0.0.0/24
eigentlich
AllowedIPs = 10.0.0.0/32
heißen müsste. Dann kommt es allerdings zu keiner Verbindung.

Könnte mir jemand helfen?

Content-ID: 8496921557

Url: https://administrator.de/contentid/8496921557

Ausgedruckt am: 23.11.2024 um 23:11 Uhr

aqui
aqui 30.06.2024 aktualisiert um 12:33:22 Uhr
Goto Top
ich bin absoluter Neuling in Sachen Netzwerk/Wireguard.
Dann hast du hoffentlich das hiesige Wireguard Tutorial genau durchgelesen und umgesetzt?! 🤔
Dort und in den weiterführenden Links ist alles im Detail für ein korrektes Setup beschrieben:
Merkzettel: VPN Installation mit Wireguard

OT: Wenn du ganz ohne Frickelei mit externer VPN Clientsoftware arbeiten willst auf dem VPS Server bietet sich als Alternative auch IPsec mit IKEv2 an was in allen Endgeräten die bordeigenen VPN Clients supportet:
IKEv2 VPN Server für Windows und Apple Clients mit Raspberry Pi

Ich habe gelesen, dass der Eintrag in den wg0.conf Dateien
Eine /32er Hostmaske erwartet dann auch die Angabe einer zur Maske passenden Hostadresse und keine Netzwerk Adresse wie du (oder die Quelle wo du den Unsinn gelesen hast) es macht. Es geht logischerweise nur entweder Hostmaske und Hostadresse oder Netzwerkmaske mit Netzwerk Adresse (Hostbits auf 0). Mischmasch aus beiden geht bekanntlich nicht!

Du hast also, wie leider sehr oft, wieder einmal den üblichen Fehler begangen und in den "AllowedIPs" eine falsche Subnetzmaske verwendet! Damit scheitert dann das korrekte Cryptokey Routing mit deinem Fehlerbild. face-sad Das o.a. Tutorial geht explizit auf diesen Punkt ein!
Ein "Listen" Port muss man beim Client nicht konfigurieren, nur beim Server!! Clients bauen selber aktiv den Tunnel auf (VPN Initiator) und warten niemals auf eingehende VPB Verbindungen, deshalb ist ein Listen Port in der Konfig unsinnig.
"1234" ist zudem ein nicht öffentlicher IANA Port!! face-sad
https://www.iana.org/assignments/service-names-port-numbers/service-name ...
Die Wireguard Ports sollten tunlichst im freien Ephemeral Portbereich liegen wie die üblichen WG Ports dies auch tun z.B. mit 51234! Auch hier bedeuten solche "Banalportnummern" immer ein Sicherheitsrisiko.
Kann man also nur hoffen das das "1234" nicht echt ist und hier lediglich nur als Beispiel gemeint ist?! face-sad

Richtig wäre die Client Konfig so:
[Interface]
Address = 10.0.0.2/24
PrivateKey = IGhLxxxxxxxxxxxxxxxxxxxxxxxxxxxarvaClc=

[Peer]
PublicKey = a/Zpaxxxxxxxxxxxxxxxxxxxxxxxxxxz7QGlo=
AllowedIPs = 10.0.0.1/32
Endpoint = 77.22.333.444:1234
PersistentKeepalive = 25 
Ist auch eine Client-zu-Client Kommunikation gewünscht muss zusätzlich noch die jeweils andere interne WG Client IP kommagetrennt in die AllowedIPs.

Zweiter großer Fehler der immer und immer wieder falsch gemacht wird ist das Masquerading (NAT, Adress Translation) im VPN Tunnel und besonders auf den Clients! Das hat dort absolut nichts zu suchen!! face-sad
Da du so oder so mit Split Tunneling arbeitest, benötigst du generell gar kein Masquerading (NAT) in deinem VPN, also auch nicht auf dem Server. Wozu auch wenn es alles dein eigenes Netz ist?!
Internet Traffic wird an den Clients dann so oder so lokal bedient und macht ein Masquerading dann obsolet was obendrein kontraproduktiv ist. (Performance)
Wenn überhaupt sollte man das Masquerading generell NIE in der WG Konfig machen sondern fest im nftables oder iptables Firewall Setup des Servers. (Siehe IPsec Server oben)

Dritter Fehler: Ob man das WG interne IP Netz gerade mit so einem 10er Banal- und Allerweltsnetz konfiguriert solltest du dir gut überlegen. Ein Adresskonflikt wird dann nicht lange auf sich warten lassen. Für ein VPN also keine gute Wahl. (Siehe zur sinnvollen VPN IP Adressierung auch HIER).
Kelkor
Kelkor 30.06.2024 um 13:19:26 Uhr
Goto Top
Vielen, vielen Dank für die schnelle Antwort.

wg0.conf (client 1) habe ich so angepasst wie beschrieben. Dass

"PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING ->
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING>"

und
"Listenport=1234"

habe ich entfernt.

Port war nur ein Beispiel. Mein Port heisst anders .Ebenso wie die IP des VPS-Servers.

Werde morgen an den Standort von dem noch nicht funktionierenden Klienten fahren und
die wg0.conf anpassen.

Wenn der Client 2 auch mit Client 1 kommunizieren soll, müsste also die wg0.conf
so aussehen ?

Client 2
Inhalt wg0.conf

[Interface]
Address = 10.0.0.3/24
PrivateKey = AdcLxxxxxxxxxxxxxxxxxxxxxxarvaBbn=

[Peer]
PublicKey = a/Zpaxxxxxxxxxxxxxxxxxxxxxxxxxxz7QGlo=
AllowedIPs = 10.0.0.1/32, 10.0.0.2/32
Endpoint = 77.22.333.444:1234
PersistentKeepalive = 25


Nochmals Danke !
aqui
aqui 30.06.2024 um 14:37:04 Uhr
Goto Top
Bis auf den nicht Standard konformen UDP Port "1234" am Server face-sad alles richtig gemacht! 👍
Kelkor
Kelkor 30.06.2024 um 14:42:03 Uhr
Goto Top
Danke !
Kelkor
Kelkor 30.06.2024 um 21:26:16 Uhr
Goto Top
Jetzt funktioniert alles, auch mein iPhone kann nun über Wireguard kommunizieren und
hat Zugriff auf Client 1 und 2:
Nochmals Danke für die Unterstützung.
aqui
aqui 30.06.2024 aktualisiert um 22:01:47 Uhr
Goto Top
Glückwunsch! 👏👍 Hoffentlich dann auch mit einem legalen UDP Port?! face-wink
Nochmals Danke für die Unterstützung.
Immer gerne! 😊

Bitte dann auch nicht vergessen deinen Thread als erledigt zu schliessen!
Wie kann ich einen Beitrag als gelöst markieren?
Kelkor
Lösung Kelkor 01.07.2024 aktualisiert um 07:30:49 Uhr
Goto Top
Eine Nachfrage hätte ich noch. Wenn ich dich richtig verstanden habe,kann ich aus der Server wg0.conf (VPS Server) die Einträge für Postup und PostDown entfernen ?
Wenn du mir nicht die paar Tipps gegeben hättest, hätte ich wahrscheinlich noch wochenlang getüftelt und wäre nervlich verzweifelt. Jetzt, im Nachhinein ,erscheint mir alles logisch und verständlich. ( fast alles )

Ich habe auch Zugriff hinter den jeweiligen Routernetzen. Musste nur auf beiden Seiten das statische Routing im Router definieren und bei den Clienten die wg0.conf anpassen.

Der Client im Garten (10.0.0.3)hat dann noch folgende Einträge in die wg0 bei Allowed IPs bekommen:

AllowedIPs =10.0.0.1/32, 10.0.0.2/32, 10.0.0.4/32, 192.168.179.0/24
aqui
aqui 01.07.2024 um 10:09:14 Uhr
Goto Top
Ja, auch im Server kannst du das (überflüssige) NAT entfernen. face-wink
Kelkor
Kelkor 01.07.2024 um 20:47:21 Uhr
Goto Top
Danke.☺️
Serie: Wireguard mit 3 Rechnern
VPS Server mit Wireguard und 2 Clients9