Größe: 3926
Kommentar:
|
Größe: 4321
Kommentar:
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 94: | Zeile 94: |
Address = 10.0.1.2/24 DNS = 9.9.9.9 PrivateKey = 2MYfld12345678eChDjRDpTpHRdVVpVOThALUJBGXHc= |
Address = <Konfigurierte Client IP>/<Netmask> // Zum Beispiel die IP "10.16.1.20/32" PrivateKey = <Privater Key des Clients> |
Zeile 99: | Zeile 98: |
AllowedIPs = 0.0.0.0/0, ::/0 # Sämtlichen Traffic durch den VPN schicken! Endpoint = mydyndns.address.woauchimmer:54321 PublicKey = gbg3qrO1o9FABCDEFGH4PSjCSaewUvtAhbvpfudZ2AQ= |
PublicKey = <Public Key des Servers> PresharedKey = <Preshared Key (derselbe bei Server und Client!)> AllowedIPs = <Netzwerke auf die dieser Client Zugriff haben soll>/<Netmask> // Zum Beispiel "10.16.1.0/24, 192.168.3.0/24" // | | // +--> der Netzwerkbereich des WireGuard VPNs // | // +--> Netzwerk hinter der Firewall Endpoint = <Public IP der Firewall>:<WireGuard Port> |
wireguard installieren und konfigurieren
0. Architektur
Annahme: Die zentrale Site ("Home Base") nutzt im LAN den IP-Adressbereich 192.168.1.0/24.
Die (verschlüsselte) Kommunikation zwischen (z.B. mobilen) Endgeräten und dem Server in der Home Base soll über das private Netzwerk 10.0.1.0/24 stattfinden.
1. Installation
apt-get update && apt-get install -y wireguard wireguard-tools iptables
2. IP Forwarding (auf dem Server) einschalten
cat >> /etc/sysctl.conf << "EOFSYS" net.ipv4.ip_forward=1 EOFSYS echo 1 > /proc/sys/net/ipv4/ip_forward
3. Schlüssel produzieren
cd /etc/wireguard umask 077 wg genkey | sudo tee privatekey.server | wg pubkey | sudo tee pubkey.server wg genkey | sudo tee privatekey.client1 | wg pubkey | sudo tee pubkey.client1 wg genkey | sudo tee privatekey.client2 | wg pubkey | sudo tee pubkey.client2 ...
4. Service (auf dem Server) generieren
ip link add dev wg0 type wireguard ip address add dev wg0 10.0.1.1/24 # Server-Adresse ip link set up dev wg0 wg set wg0 private-key /etc/wireguard/privatekey.server touch /etc/wireguard/wg0.conf ; wg-quick save wg0
5. Clients beim Server bekannt machen
cat >> /etc/wireguard/wg0.conf << "EOFWGCONF" DNS = 9.9.9.9 # oder welcher auch immer... PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] EOFWGCONF echo "PublicKey = $(cat /etc/wireguard/pubkey.client1)" >> /etc/wireguard/wg0.conf echo "AllowedIPs = 10.0.1.2/24"
Letztlich muss die /etc/wireguard/wg0.conf so ähnlich aussehen wie:
[Interface] Address = 10.0.1.1/24 ListenPort = 54321 PrivateKey = WBuu/yueIn8BRzJ7ABCDEFGHLduaRPumtaxcghJBXHM= DNS = 9.9.9.9 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # client1 PublicKey = 7epeqRnqmO8LIJKLMNOPs7ICjmV7g1+wzEQsAF88YxA= AllowedIPs = 10.0.1.2/24
6. Service starten
systemctl enable wg-quick@wg0.service systemctl daemon-reload systemctl start wg-quick@wg0.service
7. Client konfigurieren
client1.conf sollte so ähnlich aussehen wie:
[Interface] Address = <Konfigurierte Client IP>/<Netmask> // Zum Beispiel die IP "10.16.1.20/32" PrivateKey = <Privater Key des Clients> [Peer] PublicKey = <Public Key des Servers> PresharedKey = <Preshared Key (derselbe bei Server und Client!)> AllowedIPs = <Netzwerke auf die dieser Client Zugriff haben soll>/<Netmask> // Zum Beispiel "10.16.1.0/24, 192.168.3.0/24" // | | // +--> der Netzwerkbereich des WireGuard VPNs // | // +--> Netzwerk hinter der Firewall Endpoint = <Public IP der Firewall>:<WireGuard Port>
Im eigenen WLAN wireguard abschalten
Datei erstellen: /etc/NetworkManager/dispatcher.d/90wg-check (Rechte:755)
#!/bin/bash IF=$1 STATUS=$2 ### CHANGE!!! MY_WLAN="YOUR_HOME_WIFI_SSID" # <-- CHANGE!!! ### CHANGE!!! WLAN=$(iw dev | grep Interface | sed s/Interface//g | tr -d " \t\n\r") SSID=$(iwconfig $WLAN | head -n 1 | cut -d '"' -f 2) if [ "$IF" == "$WLAN" ] then case "$2" in up) logger -s "NM Script up triggered" if [[ "$SSID" == "$MY_WLAN" ]] then systemctl stop wg-quick@wg0.service else systemctl start wg-quick@wg0.service fi ;; down) logger -s "NM Script down triggered" # command2 ;; pre-up) logger -s "NM Script pre-up triggered" # command3 ;; post-down) logger -s "NM Script post-down triggered" # command4 ;; *) ;; esac fi