Version [3216]
Dies ist eine alte Version von WireGuard erstellt von ErdaxoAdmin am 2021-04-08 17:52:40.
VPNs mit WireGuard
die schnelle Alternative zu alten VPN-Technologien
gute Quellen
- WG auf OPNsense step-by-step + sehr nützliche Hinweise
- einwandfreie offizielle Dokumentation
- WG auf OPNsense step-by-step + sehr nützliche Hinweise
- einwandfreie offizielle Dokumentation
Eine Diskussion über Vor- und Nachteile dieses (auf jeden Fall spannenden) Projektes wird hier nicht geführt. Es hat auf jeden Fall einige Vorteile, die wir gern nutzen. Selbstverständlich muss man alles richtig einstellen, damit WireGuard
- überhaupt funktioniert
- keine Sicherheitslücken entstehen
A. WireGuard mit OPNsense
Die Beschreibung unter https://docs.opnsense.org/manual/how-tos/wireguard-client.html und auf den anderen OPNsense-Seiten zu WireGuard ist alles sehr gut beschrieben. Wenn man die Schritte befolgt, funktioniert alles in der Regel gut.
Einige Probleme mit DNS gab es dennoch:
1. Einwahl ins lokale LAN hinter OPNsense
Der Zugriff auf die Geräte hinter OPNsense funktioniert bereits, nachdem man die Beschreibung bis einschließlich "Step 2b" umgesetzt hat. Man kann dann problemlos auf Geräte im lokalen Netzwerk zugreifen. Bei eingeschalteter WG-verbindung ist aber kein Zugriff (vom Client aus - getestet mit einem Macbook) auf Internet möglich.
Die Einstellungen im WG-Client haben dann keinen Einfluss darauf - was im unten markierten Bereich eingegeben wird, ist egal:
#client config macbook
[Interface]
PrivateKey = <xxx>
ListenPort = 52011
Address = 10.10.10.11/32
DNS = <x.x.x.x>
[Peer]
PublicKey = <xxx>
AllowedIPs = 0.0.0.0/0
Endpoint = my domain.com:51821
PersistentKeepalive = 25
2. Schritt 2c nicht vergessen
Ohne die unter Schritt 2c beschriebene Zuordnung zum WG-Interface funktionierte nicht mal das Routing nach außen. Kann eventuell an der Multi-WAN-Konfiguration liegen, die hier vorlag.
Befolgt man "Step 2c" (in unserem Fall bis einschließlich Festlegung des dynamischen Gateways), wird bei bestehender Verbindung ein Zugriff auf das Internet möglich - zumindest unabhängig von der Einstellung zum DNS-Server.
Verweist der DNS-Eintrag im Client (siehe oben) aber auf den lokalen OPNsense-DNS (Beispiel: 10.1.0.1), funktioniert DNS beim Client nicht. Nimmt man im Client den eigenen DNS, ist alles kein Problem:
- Zugriff auf LAN einer OPN funktioniert,
- Zugriff auf das Internet beim eingeschalteten Tunnel funktioniert,
- Internet-Zugriff scheint gar nicht über den Tunnel zu laufen (weniger Datendurchsatz, als vorher) die Daten werden doch über den Tunnel transportiert => Geschwindigkeit geringer als direkt, WG-Monitor zeigt Bewegung bei Zugriff des Clients auf das Internet. Scheint am Ende also nur ein DNS-Zugriffsproblem zu sein.
Insofern führte die Beschreibung bei uns (multi-WAN?) zu keinem vollen Erfolg im Hinblick auf DNS.
Problem scheinbar gelöst:
=> mit der herausragenden Beschreibung in diesem Artikel konnte das Problem eingegrenzt werden. Der Unbound-DNS von OPNsense funktioniert nun einwandfrei, nachdem
- unter System => Settings => General bei
- selbstverständlich dann unter VPN => WireGuard neu starten...
"Allow DNS server list to be overridden by DHCP/PPP on WAN" (die wohl wegen multi-AN an war (oder auch nicht)
unter "exclude interfaces" das WG-Interface ausgeschlossen wurde
unter "exclude interfaces" das WG-Interface ausgeschlossen wurde
Hier sind wir noch am rätseln, wie genau der kniff ist...
B. Wireguard mit Ubuntu 20.04
In Ubuntu muss nur das Paket wireguard installiert werden - wobei dieser wireguard nicht enthält, sondern lediglich Hilfsprogramme (wenn ich das richtig verstanden habe) => wireguard selbst ist im Linux-Kernel bereits enthalten.
Folgende Konfigurationsschritte sind insgesamt notwendig:
1. Tools installieren
apt install wireguard
2. Schlüssel generieren - am besten mit folgendem Skript:
generatekeys.sh
#!/bin/bash
PRIVATE_KEY=`wg genkey`
PUBLIC_KEY=`echo $PRIVATE_KEY | wg pubkey`
echo Private Key: $PRIVATE_KEY
echo Public Key: $PUBLIC_KEY
3. Routing aktivieren
Wenn der Zugriff nicht nur auf die Maschine selbst, sondern auch auf das mit der Maschine verbundene, lokale Netzwerk erwünscht ist, muss das Routing funktionieren. Geht wie folgt:
# sudo sysctl -w net.ipv4.ip_forward=1
# vim /etc/sysctl.conf
=> net.ipv4.ip_forward=1 # (uncomment the line)
4. Konfiguration des "Servers"
D. h. in Terminologie von WireGuard => des ersten Peers unter Ubuntu erstellen - zu diesem werden Verbindungen initiiert.
Datei /etc/wireguard/wg.conf erstellen und bearbeiten:
[Interface]
Address = 10.11.10.1/24 => Adresse im WG-Netz (keines der verbundenen Netze)
# SaveConfig = true
ListenPort = 518XX => Port, mit dem der Server arbeitet
PrivateKey = <hier private key des Ubuntu-Servers>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens160 -j MASQUERADE
[Peer]
PublicKey = <hier public key des 1. peers>
AllowedIPs = 10.11.10.2/32
[Peer]
PublicKey = <hier public key des 2. peers>
AllowedIPs = 10.11.10.3/32
5. Konfiguration auf jedem Peer
Die oben in den jeweiligen [Peer] - Sektionen vorgesehenen Clients, die sich verbinden sollen müssen auch einzeln konfiguriert werden. Dies geht - am Beispiel des ersten [Peer] oben - so:
[Interface]
PrivateKey = <hier private key des 1. peers>
ListenPort = 51<irgendwas>
Address = 10.11.10.2/32
DNS = <wenn auch DNS-Server hinter wireguard genutzt werden soll, dann Adresse des DNS für dieses Subnetz>
[Peer]
PublicKey = <public key des Ubuntu-Servers von oben, zu dem Verbindung aufgebaut wird>
AllowedIPs = ::/0, 0.0.0.0/0
Endpoint = ip.oder.domain.com:518XX
PersistentKeepalive = 25 (wenn client hinter NAT)
Auf dieser Seite sind keine Kommentare vorhanden