Wireguard VPN - Traffic durch unterschiedliche Network Interfaces routen

Ich wollte nun nochmal selber schauen und die Config war komplett auf ens3 gesetzt. Lief auch alles, aber eben nicht über den VPN des Routers.

Dann wollte ich den Ausgang nochmal auf ens4 umstellen. Sah vorab, dass ens4 wieder keine IPv4 Adresse hatte und führte dann "sudo dhclient -r ens4 && sudo dhclient ens4" aus. Und dann hatte ich die Verbindung zum Wireguard Server verloren. Wo ist da der Sinn? Ich kann es nicht nachvollziehen. Die Config bestand weiterhin nur aus ens3, nix mit ens4. Laut den Logs kann der Handshake dann auf einmal nicht mehr stattfinden, obwohl an ens3 nix verändert wurde.

Edit: War kein Zufall, ist reproduzierbar. Ich hoffe wirklich, dass mir da jemand helfen kann. Irgendwas muss doch der Grund für diese Unzuverlässigkeit sein. Ich habe doch alles durchdacht? ens3 für Trafic in und ens4 für Traffic out. Und über die Config lege ich dann ja in und out fest.
 
Zuletzt bearbeitet von einem Moderator:
Moin,
ich kenne mich etwas mit Wireguard aus 🙂

Ich verstehe deine Beschreibung nicht ganz.
Willst du deine internen Clients über Wireguard laufen lassen?
Oder willst du von außen in dein Netzwerk über Wireguard rein?
 
  • Gefällt mir
Reaktionen: nocie
Dein PostUp/PostDown passt mir nicht zusammen, das eine fügt was bei ens3 hinzu das andere entfernt was von ens4, warum ist das unterschiedlich. Sind das echte Interfaces oder wie hast du die erstellt, wie sehen die Routen aus, etc.?

Ich hab kein Schweiz VPN, ich hab ein vServer und das ist der zentrale Wireguard Punkt in den sich alle Clients einklinken, da brauch im am Router nix zu verkonfigurieren. Dafür geht halt auch sämtlicher Traffic über den VPS statt direkt, aber damit kann ich leben, direkte P2P Verbindungen sind eben anstrengend wenn überall Router, Firewall, dynamische DSL-IPs, usw.usf.
 
  • Gefällt mir
Reaktionen: nocie
kieleich schrieb:
Dein PostUp/PostDown passt mir nicht zusammen, das eine fügt was bei ens3 hinzu das andere entfernt was von ens4, warum ist das unterschiedlich. Sind das echte Interfaces oder wie hast du die erstellt, wie sehen die Routen aus, etc.?
Danke für deine Antwort. Nein, es sind keine echten Interfaces. Der Wireguard Server läuft bei mir in einer VM. ens3 war schon vorhanden und ens4 habe ich selber hinzugefügt. Ich verstehe jedoch nicht, wie Du darauf kommst, dass ich etwas von ens4 entferne? Meinst Du die dhclient Befehle? Die musste ich machen, damit ens4 eine IPv4 Adresse bekommt, siehe den Teil im ersten Beitrag unter "P.S.". Oder meinst Du die Wireguard Config? Ich dachte, dass ich bei "PostUp" angebe, mit welchem Adapter ich mich einwähle und mit "PostDown" mit welchem Adapter ich dann heraus gehe.
 
PostUp ist ein Befehl der ausgeführt wird wenn das wg0 interface up geht, und PostDown wenn es down geht.

PostUp kann man Sachen einrichten und PostDown Sachen aufräumen. Du räumst irgendwie nicht auf was du eingerichtet hast. Von daher passt mir das nicht zusammen.

Um die iptables Regeln aufzuräumen die du hinzugefügt hast, sollten die Zeilen bis auf -A (append) und -D (delete) identisch sein.

Aber das wird dein Problem wahrscheinlich nicht beheben, das wird irgendwo am Routing hängen, das ich nicht durchblicke (und du hast dazu keine Konfiguration gezeigt oder gepostet). So ist mir völlig unklar wie du unterscheidest was zu deinem Schweiz VPN gehen soll - und was nicht. Mal abgesehen davon, daß es Wireguard ja wurst ist, welchen Weg die Pakete nehmen, solange sie überhaupt ankommen... ist halt blöd, alles doppelt durchs VPN zu schicken, wenn der VPN das überhaupt mit macht.

Du kannst auf jedem Wireguard Endpunkt mit 'wg show' nachsehen mit welcher IP gerade geredet wird, das kann ne andere sein als in der Konfiguration angegeben, Wireguard arbeitet hier dynamisch.

Ansonsten auch überall ip link, address, route anschauen und die iptables Regeln auflisten lassen falls du da Pakete verbiegst.
 
  • Gefällt mir
Reaktionen: nocie
kieleich schrieb:
Aber das wird dein Problem wahrscheinlich nicht beheben, das wird irgendwo am Routing hängen, das ich nicht durchblicke (und du hast dazu keine Konfiguration gezeigt oder gepostet). So ist mir völlig unklar wie du unterscheidest was zu deinem Schweiz VPN gehen soll - und was nicht.
Dann haben wir wenigstens schon mal geklärt, dass ich die Config missverstanden habe und dann auch falsche Werte eingetragen habe.

Ich hatte doch ein Bild gepostet. Der Router wurde bereits so konfiguriert, dass die Ports für die Einwahl auf den Wireguard Server freigeschaltet (für Adapter 2, also ens3) sind und dieser Adapater auch nicht über den VPN läuft, sondern direkt am Internet ist. Adaper 1, also ens4, wird über den VPN geleitet, damit ich von außerhalb über die Wireguard Verbindung eine schweizer IP besitze. Ports müssen dafür ja nicht freigeschaltet werden, da Adapter 1, also ens4 nur für den Ausgang und nicht für die Einwahl ist.

Ist jetzt eben die Frage, wie ich Wireguard mitteile, dass er bitte nur auf Adapter 2, also ens3, lauschen soll, ob sich jemand einwählen möchte und der Traffic dann über Adapter 1, also ens4, heraus geht.

Ich wäre wohl auch offen für OpenVPN, wenn es damit besser gehen sollte. Von Routing habe ich überhaupt keine Ahnung und war eben froh, als ich dachte, dass ich den Traffic einfach via Wireguard Config routen konnte.
 
Musst du mal schauen mit 'ss -tulpen', bei mir ist es so, daß Wireguard einfach auf allen Interfaces lauscht.

Code:
State            Recv-Q           Send-Q                     Local Address:Port                      Peer Address:Port
UNCONN           0                0                                0.0.0.0:59559                          0.0.0.0:*
UNCONN           0                0                                   [::]:59559                             [::]:*

Wireguard ist es dementsprechend egal, auf welchem Weg die Pakete zu ihm kommen. Antwort wird direkt an den Absender geschickt. Was das ist und wie die Routen laufen - hängt vom restlichen Netzwerksetup ab.

Bzw. eben von dem Wireguard Client der ein Endpoint angegeben hat. Aber wenn die Antwort dann über dein Schweiz VPN eintrudelt, ändert sich der Endpoint dynamisch zum Schweiz VPN, egal was in der Wireguard Config steht. Wireguard macht das so um dynamische IPs zu unterstützen, bei DSL Zwangstrennung ist ja normal wenn sich die IPs ändern.

Wie gesagt musst du mal bei 'wg show' auf beiden Seiten schauen mit welcher IP Wireguard da überhaupt redet.

Das Routing an sich musst du außerhalb von Wireguard konfigurieren. Wireguard setzt nur Standardrouten für die 10.x.x.x IP Addressen die Wireguard für sich selbst verwendet. Sonst macht Wireguard da weiters nichts, das machst du extern bzw. über die PostUpDown Geschichte von Hand.
 
  • Gefällt mir
Reaktionen: nocie
kieleich schrieb:
Das Routing an sich musst du außerhalb von Wireguard konfigurieren. Wireguard setzt nur Standardrouten für die 10.x.x.x IP Addressen die Wireguard für sich selbst verwendet. Sonst macht Wireguard da weiters nichts, das machst du extern bzw. über die PostUpDown Geschichte von Hand.
Vielen Dank für deine Hilfe. Habe nun auf jeden Fall etwas dazugelernt. Ich werde mir das gleich nochmal anschauen, doch ich denke, dass das dann für mich nicht umsetzbar ist. Weißt Du zufällig, ob ich mit OpenVPN mein Vorhaben besser realisieren könnte? Sprich hat OpenVPN das mit der Unterstützung von dynamischen IPs und dem drum herum nicht? Dann könnte ich mich ja dort mal schlau machen. Aber vielleicht machen das ja beide so und ich komme dann tatsächlich um ein externes Routing nicht drum herum.
 
Oha,
ne so tief bin ich leider nicht in Wireguard drin
 
War das eine Frage bezüglich DNS Neuauflösung in #1 ganz unten?

wenn ja hier meine Anleitung:

Code:
sudo touch wg.sh
sudo nano wg.sh

--------------------------------------------------------------------------------------------------

#!/bin/bash

cip=$(wg show wg0 endpoints | grep -E "xxyyzz" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
echo "$cip"
digIP=$(dig +short myurl.dynv6.net) # Die Adresse des Peers muss angepasst werden
   echo "$digIP"
     if [ "$digIP" != "$cip" ]
       then
          echo "Daten sind anders"
          /usr/sbin/service wg-quick@wg0 restart

        else
    echo "Daten sind gleich"
    #nichts zu tun
   fi

--------------------------------------------------------------------------------------------------

sudo chmod +x wg.sh    (ausführbar machen)
sudo ./wg.sh        (testen)
sudo crontab -e        (alle 10min ausführen)

*/10 * * * * ./wg.sh >/dev/null 2>&1

xxyyzz = die letzten paar Stellen des entsprechendes Endpoints
 
Zurück
Oben