Teilen Sie eine VPN-Verbindung über Ethernet

Teilen Sie eine VPN-Verbindung über Ethernet

Bin ziemlich neu bei Linux, verwende Ubuntu 18.04 LTS.

Ich möchte die Funktionalität replizieren, die ich auf der macOS-Hardware und dem macOS-Betriebssystem ausführen kann: Teilen Sie die VPN-Verbindung auf Betriebssystemebene mit einer Hardwareschnittstelle.

In diesem speziellen Fall verbindet sich ein Laptop mit ungesichertem WLAN, baut einen VPN-Tunnel auf, das VPN wird dann mit einer Ethernet-Schnittstelle geteilt, an die ich einen DD-WRT-Router (offensichtlich Double-Nat) anschließe, der den Clients sicheres WLAN/Ethernet bereitstellt. Der Grund für die Verwendung eines Laptops mit einem echten Betriebssystem für das Gateway besteht darin, Captive Portals über einen Browser zu verwalten (wie es viele Hotels tun).

Dieses Setup macht es unmöglich, dass der Datenverkehr der Clients über das Gateway-WLAN abläuft, da nur die VPN-Verbindung geteilt wird. Wenn das VPN abbricht, haben die Clients überhaupt keine Verbindung. Unter macOS mit L2TP ist das ganz einfach.

Gibt es eine einigermaßen einfache Möglichkeit, dies über die Gnome-GUI zu tun? Ich habe stundenlang versucht, nur den L2TP+IPsec-Tunnel zum Laufen zu bringen, und habe es schließlich aufgegeben. Ich verwende jetzt OpenVPN. Aber ich kann keine einfache Möglichkeit finden, speziell die OpenVPN-Verbindung freizugeben, nur das WLAN, das unsicher werden würde, wenn der Tunnel jemals abbricht und der Client-Verkehr offengelegt würde.

Danke schön!

Antwort1

Mit etwas Ausprobieren und Hilfe aus einem anderen Forum habe ich es geschafft, dies zum Laufen zu bringen. Beachten Sie, dass ich aufgrund der besseren Unterstützung unter Linux und des insgesamt besseren Durchsatzes auf das OpenVPN-Protokoll umgestiegen bin.

Der einzige Teil, der mit der GUI erledigt werden kann, ist die Einrichtung der OpenVPN-Verbindung und des Client-Netzwerks auf der zweiten Schnittstelle (dies erfolgt im Netzwerkmanager). In meinem Fall ist ens9 eine sekundäre Ethernet-Schnittstelle, die ich mit einer statischen IP in einem eindeutigen lokalen Subnetz konfiguriert habe. Client-Geräte wurden vorkonfiguriert, um diese IP als Gateway zu verwenden.

Ausführliche Informationen zu meiner Lösung finden Sie hier:https://www.linuxquestions.org/questions/linux-networking-3/share-vpn-with-ethernet-interface-4175655027/

Der VPN-Killswitch für das Gateway-Gerät selbst funktioniert folgendermaßen:

Nehmen Sie diese Änderungen in /etc/sysctl.conf vor

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
#enable packet forwarding
net.ipv4.ip_forward=1

Nehmen Sie in der Standardkonfigurationsdatei von UFW (/etc/default/ufw) diese Änderung vor:

DEFAULT_FORWARD_POLICY=“ACCEPT”

Bearbeiten Sie die UFW-Regeln über die Befehlszeile wie folgt:

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out on wlp2s0 to XXX.YYY.ZZZ.AAA port 1194 proto udp

Verwenden Sie in der letzten Zeile den Namen der Schnittstelle, die Sie für die WAN-Verbindung verwenden (verwenden Sie den Befehl „ifconfig“, um alle Schnittstellen anzuzeigen), und verwenden Sie die IP-Adresse und Portnummer für Ihren OpenVPN-Server – diese können der bereitgestellten Datei „ovpn.config“ entnommen werden.

Damit erhalten Sie einen funktionierenden VPN-Killswitch auf dem Gateway-Gerät. Der letzte Schritt besteht darin, die VPN-Verbindung auf der sekundären Schnittstelle zu maskieren (in meinem Fall das Ethernet-Gerät namens ens9).

Verwenden Sie nicht die GUI-Methode des nm-connection-editors, um die Freigabe zu aktivieren, da dadurch Ihr Kill Switch umgangen wird. Bearbeiten Sie stattdessen die Datei /etc/ufw/before.rules, indem Sie direkt über der *filter-Überschrift einen nat-Abschnitt hinzufügen:

### Start OpenVPN Share rules
### NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.10.0/24 -o tun0 -j MASQUERADE   
COMMIT

Wobei 192.168.10.0/24 für den IP-Adressbereich Ihres Client-Netzwerks steht. In meinem Fall habe ich es statisch innerhalb dieses Bereichs definiert.

Und das war es im Großen und Ganzen. Ich hatte erwartet, eine UFW-Regel wie diese zu benötigen:

sudo ufw allow out on ens9 to 192.168.10.0/24

Aber es funktioniert auch ohne prima.

verwandte Informationen