Ich muss mehrere wg-quick
Schnittstellen auf einem einzigen Computer einrichten, die beide unabhängig voneinander direkt die echte Ethernet-Netzwerkkarte verwenden.
Das Problem, auf das ich stoße, ist, dass ich über jede dieser Schnittstellen auf das gesamte Internet zugreifen möchte, was vermutlich bedeutet AllowedIPs = ::0
, dass ich aber wg-quick
gerne lokal Routen hinzufügen möchte, sodass der gesamte Datenverkehr, der irgendwohin geht, über diese neue Schnittstelle läuft; einschließlich aller folgenden wg-quick
Versuche.
Gibt es eine Möglichkeit, es anzurufen wg-quick
und zu sagen: „Hey, nein, ich möchte, dass du speziell verwendest eno1
, nicht das ‚Standard-Gateway‘“? Vielleicht mit raw wg
?
Ich habe versucht, eine Menge online zu lesen, aber ich bin immer verwirrt, was andere fragen, wenn esscheintwie eine ähnliche Frage, aber es stellt sich heraus, dass mehrere Wireguard-Dienste oder so etwas gehostet werden.
Unten ist das grundlegende Prinzip mit zwei WG-Schnittstellen dargestellt. wg0
In diesem Fall wird der normale wg-quick
Vorgang ausgeführt, bei dem der gesamte Datenverkehr transparent gestohlen wird. Dabei wg1
ist eine Schnittstelle verfügbar, über die ich Apps so konfigurieren kann, dass sie gezielt mit ihr kommunizieren.
Es macht mir nichts aus, wenn Ihre Lösung wg0
gezwungen wird, auf diese Weise zu funktionieren. Ich kann einen SOCKS- und HTTP-Proxy für Software einrichten, die die Flags „Diese Schnittstelle/IP für Datenverkehr verwenden“ nicht unterstützt, um denselben Effekt zu erzielen.
Home ║ ISP ║ Internet
║ ║
║ ║
┌─────────────┐ ║ ║
│ │ ║ ║
│ │ ║ ║ ┌───┐
│ │ ║ ║ ╔══╪
│ eno1│ ║ ║ ║ └───┘
│ wg0 ┐│ ╙────────────────╜ ║ VPN0
│ ┐ └─────────────┘ ║
│ ╞════════════════════════════════════════╝
│ ┘ ╔════════════════════════════════════╗
│ wg1 ║ ┌─────────────┐ ║
│ ╓ ║ ┘│ router ║ ┌───┐
│ ╠═══╝ │ ╓────────────────╖ ╚══╪
│ ╙ │ ║ ║ └───┘
│ │ ║ ║ VPN1
│ │ ║ ║
└─────────────┘ ║ ║
PC
"Warum?". Bei Verwendung von OpenVPN erlaubte mein Anbieter offene Ports, grundsätzlich, sofern die lokale Firewall dies zuließ, ich war öffentlich routbar und konnte Dienste auf einer beliebigen Anzahl von Ports hosten. Sie sind zu Wireguard gewechselt, was großartig ist, aber sie unterstützen nur einen offenen Port pro Wireguard-Verbindung. Grundsätzlich möchte ich also für jede App, für die ich einen Port weitergeleitet habe, eine VPN-Schnittstelle einrichten.
Ist dies nur mit Wireguard möglich, ohne Iptables oder irgendetwas (was ich überhaupt nicht verstehe)?
Antwort1
JA. Okay. Die Lösung ist also auf den ersten Blick wirklich so einfach wie: sudo ip route add $VPN1 via eno1
Sie ermöglicht die Verbindung zu VPN1 über eno1, unabhängig davon, ob wg0 vorhanden ist. Sie dürfen mehrere ::0
wg-Schnittstellen imgleicher Namespacemit einem davon als Standard (wg0), sofern Ihre Anwendungen die Bindung an eine Schnittstelle für Verbindungen (wie ) unterstützen . Der Vorbehalt besteht darin, dass nur ein solcher Tunnel mit netcat -s
erstellt werden kann .wg-quick
Table=auto
ABER ich habe die letzte Woche damit verbracht, gegen den Grund anzukämpfen, der mich überhaupt dazu veranlasst hat, dies zu tun: nämlich dass diese WG-Schnittstellen den eingehenden Datenverkehr übermitteln!
Ich habe mehrere Dinge ausprobiert;
- einfach naiv
wg-quick
mehrere Male mit den vorhandenen Routen ausführen (das beendet alles und der Versuch,wg-quick down
Ihren Netzwerkstapel vollständig zu zerstören) - wie oben, mehrere hochdrehen, einen mit
Table=auto
, die anderen mitTable=off
- wie oben, mehrere hochdrehen, einen mit
wg-quick
, die anderen mitwg
- Mehrfaches Aufdrehen mit
eno1
versteckt sich hinter einemnamespace
(Ich konnte dies nicht einmal für ausgehenden Datenverkehr zum Laufen bringen ...) - Mehrfaches Aufdrehen mitjeder
wg
auf seine Artnamespace
Aber obwohl diese [für ausgehenden Verkehr über ihre jeweiligen Tunnel] funktionieren (sofern nicht anders angegeben), haben alle diese Dienste eingehende Verbindungen abgelehnt (getestet mit netcat -l -p $assignedPort
), unabhängig davon, ob ufw disable
für "VPN{0,1}" dieselben oder unterschiedliche Server verwendet wurden.
Die Lösung hierfür ist etwas, das ichbin gestern endlich drauf gestoßen. Die Zauberformel wg-quick
war Table=auto
;FwMark.
Die Sache, die ich vermeiden wollte, selbst zu lernen, ist: „Ist das nur mit Wireguard möglich?“ Nun, Sie müssen die Pakete markieren und einer Tabelle zuordnen, ABER Sie müssen nicht verstehen/nachahmen/neu implementieren, was wg-quick
funktioniert … anscheinend können Sie einfachverwendenEs.
Nachdem Sie den Standardtunnel zu VPN0 eingerichtet haben, verwenden wg-quick
Sie diesen FwMark und setzen den ip route
für VPN1FwMark wiederverwendenfür wg
. Diese letztere Verbindung läuft jetzt über eno1 (gemäß der Route), lässt aber die Weiterleitung eingehender Pakete von VPN1 zu (dank der vom Tunnel von VPN0 eingerichteten Tabelle).