Wireguard Client anpingen nur bei deaktivierter Firewall möglich

Avenger84

Lt. Commander
Registriert
Feb. 2008
Beiträge
1.758
Hallo,
nachdem mir @Raijin und @conf_t bereits gut geholfen haben beim Synology VPN Server/Client habe ich mich zwecks instabilen L2P/IPSec Tunnel noch mal Wireguard zugewandt.

Ich versuche gerade eine Verbindung vom Server zum Clienten zu kriegen.

Dazu habe ich Wireguard (Client) von "public" zum "private" Netzwerk in Win10 erklärt.

Trotzdem kann ich den Clienten nur anpingen bzw. auf dessen Freigabe zugreifen, wenn ich die Windows Firewall (private Netzwerke) deaktiviere.
Da stehe ich nun auf dem Schlauch.

Denn beim IPSec VPN konnte ich den Clienten sofort anpingen, als ich die VPN Verbindung von auf "private" umgestellt hatte.

Die ganzen Regeln wie "Datei- und Druckerfreigabe (Echoanforderung - ICMPv4 eingehend)" sind alle aktiviert.
 
Du musst bei den eingehenden Verbindungen icmp Echo (Echoanforderung - ICMPv4 eingehend) aktiveren für das jeweils genutzte Profil.
 
  • Gefällt mir
Reaktionen: emulbetsup und conf_t
nicht ganz, ist ja aktiviert, ich musste "Remote IP" auf "beliebige IP Adresse" ändern, nun klappts.

Beim Win10 eigenen IPSec Tunnel war das wohl nicht nötig.
 

Anhänge

  • 232142.JPG
    232142.JPG
    40,6 KB · Aufrufe: 599
  • Gefällt mir
Reaktionen: Whiterose
Avenger84 schrieb:
nicht ganz, ist ja aktiviert, ich musste "Remote IP" auf "beliebige IP Adresse" ändern, nun klappts.
Ich meine das hätte ich seinerzeit auch beschrieben, oder irre ich mich da? Egal.

Ein Netzwerk auf "privat", "öffentlich", "domäne" umzustellen ändert im Prinzip nur das Regel_profil_ der Firewall. Schaut man sich die Regeln an, sieht man, dass sie nur für bestimmte oder alle Profile aktiv sind. Das ändert aber nichts daran, dass sie entsprechend konfiguriert sein müssen.

Wenn also beispielsweise zwei Regeln für ICMPv4-Echo-Request vorhanden sind, muss man eben jene ändern, die für das aktivierte Profil gilt. Die Regel selbst muss aber wie du schon geschrieben hast auf das jeweilige Quell-Subnetz konfiguriert werden. Standardmäßig steht bei solchen Regeln meistens nur "Lokale Subnetze", was _ausschließlich" die lokal am PC vorhandenen Netzwerke betrifft, also Netze, in denen der PC selbst eine IP hat. Kommt etwas über eine VPN-Verbindung rein, steht dort als Absender aber meistens eine IP-Adresse aus dem dortigen lokalen Netzwerk drin und dann schlägt die Firewall zu. Man hätte also statt "beliebige Quell-IP" auch einmal das lokale Subnetz und das Subnetz hinter dem VPN angeben können.
 
Danke, habe ich so hinzugefügt. (192.168.xx.0/24 + lokale Subnetze) => klappt

Ich will kein neues Thema auf machen, daher hier die Frage:

Ist es einfach möglich ein bidirektionales VPN per Raspberry Pi mit Wireguard aufzuspannen und zwar so dass sich die beiden Synology DS permanent sehen können ? (per Synology IPSec Server klappt nicht dauerhaft)

Netz A: VPN Client in Windows 10 (24/7 an)
Netz B: Raspberry Pi Wireguard VPN Server

1. Windows Firewall muss eingestellt werden auf das VPN IP Netz (siehe oben), dann kann ich von Netz B auf den Windows PC im Netz A zugreifen und im Raspberry musste ich:
Code:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
ausführen.

War das korrekt ?
So leitet der Raspberry überhaupt erst anfragen vom internen Netz weiter zum WG-Client PC.


2. Wie kann ich beliebige Geräte im Netz A von Netz B erreichen per IP ? Der Win PC muss ja die IPs irgendwie weiterleiten.

Oder geht das gar nicht ?
 
Zuletzt bearbeitet:
Avenger84 schrieb:
War das korrekt ?
So leitet der Raspberry überhaupt erst anfragen vom internen Netz weiter zum WG-Client PC.
Jein. NAT und im Speziellen masquerade hat nichts mit Routing zu tun, sondern mit der Manipulation der Quell- bzw. Ziel-Informationen, allen voran die IP. Masquerade verpasst beispielsweise jedem Paket, das dieses Interface verlässt die (primäre) IP-Adresse dieses Interfaces als Quell-IP. Klassisches Anwendungsbeispiel wäre der Internetrouter, der alles was den WAN-Port verlässt mit der WAN-IP als Quell-IP versieht, damit computerbase.de überhaupt wissen wohin sie antworten sollen (mit einer privaten 192.168.x.y könnte computerbase.de ja nix anfangen).
Die Befehle, die du da eingegeben hast, maskieren also sämtlichen Traffic, der wg0 bzw. eth0 verlässt mit der wg0- bzw eth0-IP. Somit kann das Ziel des Pakets nicht erkennen ob das Paket von hinter dieser IP stammt. Wieder das Beispiel mit dem Internetrouter: computerbase.de sieht nur die IP deines Routers, hat aber keine Ahnung davon, dass dahinter dein 9000€ Alienware Laptop sitzt oder die 8 Jahre alte Medion Klapperkiste als B-Ware von ebay für 90€.


NAT sollte in gerouteten Netzwerken inkl. VPN daher stets der letzte Ausweg sein. Man verliert nämlich die Möglichkeit, den Traffic im Zielnetzwerk anhand der Quelle zu unterscheiden, weil alles was aus dem VPN kommt mit der IP des VPN-Gateways maskiert wird und somit de facto als lokaler Traffic aus dem lokalen Netzwerk betrachtet wird (kommt ja von einem lokalen Netzwerkteilnehmer).


Das Zusammenspiel aller beteiligten Router bzw. Gateways ist zwar eigentlich sehr simpel, weil logisch, auf den ersten Blick wirkt es aber auf ungeübte Anwender sehr komplex.


Ich versuche es mal in möglichst kurzen Worten:

In Netzwerk A muss es eine eindeutige Route nach Netzwerk B geben. Der Einfachheit halber kann man diese im Standardgateway implementieren.

Standardgateway A: Route nach Subnetz B via VPN-Gateway im Netzwerk A

Standardgateway B: Route nach Subnetz A via VPN-Gateway im Netzwerk B

Jetzt ist sichergestellt, dass jedes Endgerät in Netzwerk A weiß wo es nach Netzwerk B geht, nämlich über das Standardgateway A und umgekehrt gilt das für alle Endgeräte in Netzwerk B.

Nu muss man aber dem jeweiligen VPN-Gateway noch beibringen, dass es eben als Gateway zum anderen Netzwerk fungiert. Das erfolgt in der Regel über die VPN-Konfiguration (bei OpenVPN zB mit route bzw iroute oder eben mit push route). Bei wireguard weiß ich das mangels persönlicher Erfahrung damit leider nicht wie genau das da funktioniert. So oder so müssen sich VPN-Server und -Client aber darüber austauschen welche Subnetze sie bedienen. Gegebenenfalls muss man das bei wireguard vielleicht sogar über manuelle Einträge in die Routing-Tabelle umsetzen.

Zusätzlich muss das VPN-Gateway jeweils natürlich erst dazu gebracht werden überhaupt irgenwelche Pakete weiterzuleiten. Das ist zB der Part wo ip-forwarding in der Registry bzw sysctl ins Spiel kommt. Ist das nämlich deaktiviert, werden alle Pakete, die nicht für das Gateway selbst bestimmt sind, in die Tonne getreten.

An dieser Stelle ist das Routing soweit vollständig, ganz ohne NAT/Masquerade. Jetzt kommt der Traffic von PC A via Router A via VPN-GW A via VPN-GW B zu PC B und von dort allerdings nicht denselben Weg zurück, sondern wiederum erst via Router B und dann VPN-GW B, VPN-GW A und PC A, also exakt spiegelverkehrt. Der ankommende Traffic hat dann aber wie gesagt eine "fremde", weil nicht-lokale Quell-IP und muss somit in der Firewall auch freigeschaltet werden wie oben schon beschrieben.
 
  • Gefällt mir
Reaktionen: Avenger84
Raijin schrieb:
Bei wireguard weiß ich das mangels persönlicher Erfahrung damit leider nicht wie genau das da funktioniert. So oder so müssen sich VPN-Server und -Client aber darüber austauschen welche Subnetze sie bedienen. Gegebenenfalls muss man das bei wireguard vielleicht sogar über manuelle Einträge in die Routing-Tabelle umsetzen.
dann lass ich das ganze besser sein mangels Fachwissen :freak:


weißt du wie ich 2x MASQUERADE wieder deaktiviert kriege ?
 
iptables -t table -A chain ... fügt eine Regel ans Ende der chain an (A = append)

iptables - t table -D chain ... löscht die Regel mit den angegebenen Parameters aus der chain (D = delete)

Du kannst also einfach das -A durch -D ersetzen.

Avenger84 schrieb:
dann lass ich das ganze besser sein mangels Fachwissen
Eigentlich ist das alles nicht so kompliziert wie es klingt. Routing funktioniert prinzipiell wie eine Telefonkette bei der jeder ausschließlich die Telefonnummer des nächsten in der Kette kennt. So hangelt man sich von "hop" zu "hop". Wenn du zB "tracert computerbase.de" eingibst, siehst du jeden dieser hops, der jeweils eigene Routen hat, die sagen wo der nächste hop auf dem Weg zum Ziel ist. Das ist eigentlich recht simpel, wenn man das Prinzip erstmal verstanden hat.

Wie genau wireguard die Routen konfiguriert kann ich aber wie gesagt nicht beurteilen. Theoretisch könnte man die Routen manuell eintragen, praktisch ist das aber nicht so einfach, weil das wireguard - Interface (wg0) evtl gar nicht existiert bevor der Tunnel aufgebaut wird.
 
man kann auch einfach neustarten :D dann sind die Regeln wieder weg.

Wireguard setzt beim Start automatisch "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" habe ich gesehen.

Hast du eine Idee in welchem Linux Forum ich nachfragen könnte?
 
Das macht wireguard vermutlich aufgrund der VPN-Konfiguration.

Wie wäre es im Linux-Teil von cb?
 
Hallo, ich habe die letzten Tage viel gelesen, gerätselt, versucht Linux Befehle zu verstehen (was mir nicht gelingt) und ausprobiert.
Nun habe ich es endlich geschafft den Wireguard Server so zu konfigurieren, dass ich vom Raspberry den Windows Clienten anpingen kann.

Hier noch mal die Netze und die IPs:
Netz A: 192.168.168.x - Wireguard Server (mit mehreren Peers)
Netz B: 192.168.74.x - Windows Client mit Wireguard
Wireguard VPN: 192.168.99.x

Nachdem ich eine korrekte Route im Wireguard Server eingetragen habe und am Windows PC mit Wireguard Client (192.168.75.50) IP Fw aktiviert habe, kann ich ihn endlich anpingen :volllol:. (Mit der .74.50 und nicht nur der VPN IP).

Die Konfig von Wireguard und die Routen seht ihr auf den Bildschirmausschnitten. Gelb sind die, die Wireguard hinterlegt sobald der Tunnel aktiviert ist.

Wo ich nicht ganz hinter komme:
Sobald die 192.168.74.0 im Wireguard Client eingetragen ist, kann ich vom PC aus weder das Internet noch die lokalen Netzwerkgeräte erreichen, obwohl die Metrik was anderes sagt.

Hat da Jemand eine Idee?


Hab´s schon probiert mit fester IP, Gateway & DNS und Metrik auf 1 - bringt nix.
Ergänzung ()

Ergänzung:
wenn ich 192.168.74.0/24 aus Wireguard raus nehme, kann ich den PC vom Raspberry immer noch anpingen, das ist schon mal gut, eigentlich sollte es nicht funktionieren:
Eigenschaften der Liste Allowed IPs
In Versandrichtung verhält sich diese Liste wie eine Routing Tabelle.
In Empfangsrichtung dient sie als Access Control List.

Egal.
Wenn ich vom Raspberry ein anderes Gerät anpingen will im .74.x Netz klappt es nicht.

Was muss ich einstellen, damit der Win-PC eingehende IP Anfragen (vom Wireguard Server) in sein lokales Netz weiterleitet? Win-Firewall ist momentan komplett aus.
 

Anhänge

  • Routen.JPG
    Routen.JPG
    129,6 KB · Aufrufe: 321
  • Wireguard.JPG
    Wireguard.JPG
    88,8 KB · Aufrufe: 384
Zuletzt bearbeitet:
Avenger84 schrieb:
Was muss ich einstellen, damit der Win-PC eingehende IP Anfragen (vom Wireguard Server) in sein lokales Netz weiterleitet?
Frag Google mal nach „Windows ip forwarding registry“ und du wirst fündig.

Es sei aber noch erwähnt, dass Windows als Router - und in dem Fall wird es zum Router - denkbar ungeeignet ist. Das gilt nicht nur für Desktop Windows, sondern gleichermaßen für Windows Server. Das liegt einfach daran, dass Microsoft einen Server als Server definiert und einen Router als Router. Da es kein „Windows Router“ gibt, sind die Fronten ziemlich klar. Windows beherrscht daher ganz bewusst nur rudimentäres Routing, reicht aber für deine Zwecke prinzipiell aus.
 
ich hatte es tatsächlich geschafft ein Bidirektionales VPN aufzubauen. Das ganze hielt nur wenige Minuten, danach gab es einen Bluescreen am Win10 "Router" -> Kernel Security Check Failture.
Raijin schrieb:
Es sei aber noch erwähnt, dass Windows als Router - und in dem Fall wird es zum Router - denkbar ungeeignet ist
wo du scheinbar Recht hast

Habe es dann noch mal an einem Laptop probiert, hier das Gleiche, nachdem ich eine Verbindung z.B. zum NAS aufgebaut habe, dauerte es nicht lange bis das VPN weg war, auch Bluescreen.
In der Ereigbnisanzeige steht nur Kernel-Power (Das System wurde neugestartet...).

Das kann kein Zufall sein.

Habe bei beiden Win10 "Routern" nur die Firewall deaktivet, IP4 Fw aktiviert und Wireguard an.

Würde eine VM mit Linux und hier Wireguard helfen ? oder ist eine VM in Win10 auch Mist?
 
Ich sage es mal so: Du wärst sicher nicht der erste mit einer Linux-VM auf einem Windows-Host.

Je nachdem wie der PC sonst genutzt wird, würde ich aber früher oder später ein eigenständiges VPN-Gateway in Erwägung ziehen. Ein PI4 zum Beispiel. Oder gar etwas im Richtung Intel NUC, o.ä.
 
Zurück
Oben