= 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 = / // Zum Beispiel die IP "10.16.1.20/32" PrivateKey = [Peer] PublicKey = PresharedKey = PersistentKeepalive = 25 AllowedIPs = / // Zum Beispiel "10.16.1.0/24, 192.168.3.0/24" // | | // +--> der Netzwerkbereich des WireGuard VPNs // | // +--> Netzwerk hinter der Firewall Endpoint = : }}} '''Im eigenen WLAN wireguard abschalten''' Datei erstellen: /etc/NetworkManager/dispatcher.d/90wg-check (Rechte:755) {{{ #!/bin/nix #!/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 }}} ---- KategorieRaspberry