MoinMoin Logo
  • Kommentare
  • Geschützte Seite
  • Menu
    • Navigation
    • AktuelleÄnderungen
    • SeiteFinden
    • ÜbersichtsKarte
    • Help
    • HilfeInhalt
    • HilfeZurMoinWikiSyntax
    • Anzeige
    • Dateianhänge
    • Info
    • Rohform
    • Druckansicht
    • Editieren
    • Laden
    • Speichern
  • Anmelden

Navigation

  • AktuelleÄnderungen
  • SeiteFinden
  • HilfeInhalt
Revision 19 vom 2022-01-01 17:09:17
  • wireguard installieren und konfigurieren

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

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 = 10.0.1.2/24
DNS = 9.9.9.9
PrivateKey = 2MYfld12345678eChDjRDpTpHRdVVpVOThALUJBGXHc=

[Peer]
AllowedIPs = 0.0.0.0/0, ::/0 # Sämtlichen Traffic durch den VPN schicken!
Endpoint = mydyndns.address.woauchimmer:54321
PublicKey = gbg3qrO1o9FABCDEFGH4PSjCSaewUvtAhbvpfudZ2AQ=

Im eigenen WLAN wireguard abschalten

Datei erstellen: /etc/NetworkManager/dispatcher.d/90wg-check (Rechte:755)

#!/bin/bash
 
IF=$1
STATUS=$2
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"
        echo $SSID >> /home/rebecca/scripts/wg-check.log
        if [[ "$SSID" == "NOBODY" ]]
        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

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01