VPN Verbindung als Gateway aus dem Heimnetz heraus nutzen

meph!sto

Vice Admiral
Registriert
Nov. 2003
Beiträge
6.550
Hi,
meine aktive Netzwerk-Zeit ist leider schon lange her, daher weiß ich gerade nicht wie ich folgendes umsetzen kann:
1. Ich möchte einen LXC Container auf meinem Proxmoxserver laufen lassen, der eine Wireguard VPN Verbindung zu einem externen (z.B. Mullvad) Dienst herstellt.
2. Dieses VPN möchte ich als Gateway für Geräte in meinem Heimnetz einstellen können.

1. Bekomme ich sicher hin
2. ist für mich derzeit das große Rätsel

Wieso das Ganze ?
Ich möchte vermeiden, auf allen Geräten - die in Frage kommen - den entsprechenden VPN Client installieren zu müssen.
Ich möchte einfach das Gateway in den Netzwerkeinstellungen ändern und schon geht's per VPN ins WWW.

Wie mache ich das ?
 
DHCP-Server können auch andere IPs als sich selbst als Gateway verteilen.
Hier als Beispiel der DHCP-Server von meinem Pi-Hole:
1770666138020.png

(Consumer-)Router sind in ihren Einstellungen aber oft Eingeschränkt. Bei meiner Fritzbox habe ich keine Option beim DHCP-Server gefunden das Gateway zu ändern.
 
  • Gefällt mir
Reaktionen: BFF
Wireguard aktivieren. Die richtige ip zum Server eingeben. Fertig ist die unverschlüsselte transmission
 
Möglicherweise habe ich mich etwas ungeschickt ausgedrückt:
Wenn ich möchte. dass ein Endgerät per VPN ins WWW geht, dann möchte ich dessen Gateway manuell auf die IP meines LXC Containers ändern, der dann den gesamten Traffic (dieses Endgeräts) via aufgebauter Wireguard Verbindung ins WWW routet.

Ist das verständlicher ?
 
Wenn es nur um einzelne Geräte geht, vergib ihnen eine feste IP (außerhalb der DHCP-Range), dann kannst du dort händisch das Gateway eintragen.
 
  • Gefällt mir
Reaktionen: drrrk
Wie ich das Gateway ändere weiß ich.
Es geht mir darum einen LXC Container als VPN Gateway im heimischen Netzwerk bereitzustellen.
 
Ja, das ist problemlos möglich.
Ein LXC-Container kann als VPN-Gateway fungieren, indem darin z. B. WireGuard oder OpenVPN läuft, IP-Forwarding aktiviert wird und per NAT der Traffic weitergeleitet wird.
Clients oder ganze Netze/VLANs nutzen den Container dann als Default Gateway.
Sinnvoll v. a., wenn der Router kein Policy-Routing mit VPN unterstützt.
 
  • Gefällt mir
Reaktionen: Mr.Zweig, meph!sto und gaym0r
@meph!sto
Du brauchst zusätzlich:
ipforwarding und NAT.

Das sollte mit Bordmitteln gehen.
net.ipv4.ip_forward auf 1 setzen und mit iptables das NAT konfigurieren.
Mit den Stichpunkten dürftest du genug genaue Guides finden, die das im Detail erklären.
 
  • Gefällt mir
Reaktionen: meph!sto, drrrk und Nilson
Alternativ ein GL.iNet MT2500A (Brume 2) Hardware Gateway verwenden. So hab ich jedenfalls deinen Usecase realisiert.
 
Wichtig, um dein Vorhaben umzusetzen, sind unten stehende Punkte.

1. Du musst die Netzwerkkarte des LXC-Containers in das gleiche Netz / das gleiche VLAN hängen,
in dem sich dein(e) Clients / Endgeräte befinden.

2. Du musst dem LXC-Container eine IP-Adresse aus dem gleichen Subnetz geben wie deine Clients.
Wenn deine Clients im Netz 192.168.1.0/24 eine IP-Adresse haben,
dann muss dein LXC-Container ebenfalls in diesem Subnetz seine IP-Adresse haben.

Unten als Beispiel eine IP-Konfiguration für den LXC-Container, wenn dein Netz 192.168.1.0/24 ist.

IP-Adresse: 192.168.0.100
Subnetzmaske: 255.255.255.0
Gateway: 192.168.0.1 (IP-Adresse des heimischen Routers)
DNS-Server: 8.8.8.8

3. Du musst dem LXC-Container natürlich ein Default-Gateway sowie einen DNS-Server
mitgeben (wie oben bei der IP-Konfiguration zu sehen).

Das Default-Gateway des LXC-Containers ist dann die IP-Adresse deines
heimischen Internet-Routers. Als DNS-Server kannst du 8.8.8.8 (Google) oder 1.1.1.1 (Cloudflare) vergeben.

4. Du musst dem LXC-Container IP-Forwarding / Routing "beibringen" bzw. diese Funktion aktivieren und ein SNAT/Masquerading konfigurieren, sonst funktioniert der Rückweg nicht (es kommen dann über den WireGuard-Tunnel keine Antwortpakete bei deinem Client an).

Das SNAT/Masquerading aktivierst du in der WireGuard-Config im Bereich "Interface".
Da müssen dann unten stehende Zeile hinzugefügt werden.

PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = echo 0 > /proc/sys/net/ipv4/ip_forward; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Du musst vorher prüfen, ob "eth0" bzw. "wg0" die richtigen Namen der Interfaces sind.
Falls nicht, dann musst du die Namen entsprechend anpassen.

Persönlich würde ich anstatt eines LXC-Containers ein vollwertiges kleines Linux-System einsetzen,
das auch kaum Ressourcen benötigt, dafür aber die gesammte Palette an Tools zur Fehlersuche im Netzwerk bietet (Ping, traceroute, tcpdump usw.).

Ansonsten gibt es für dein Vorhaben unendlich viele Webseiten, wo genau erklärt wird wie man dein Vorhaben umsetzt.
 
  • Gefällt mir
Reaktionen: meph!sto
Zurück
Oben