Benutzer-Werkzeuge

Webseiten-Werkzeuge


notiz:wireguard

Wireguard

Kryptografie

Privaten Schlüssel erzeugen

wg genkey > wg-c2s-private.key

Öffentlichen Schlüssel erzeugen

cat wg-c2s-private.key | wg pubkey > wg-c2s-public.key

Konfiguration

Wireguard wird über Konfigurationsdateien verwaltet. Diese liegen unter /etc/wireguard/<interface name>.conf.

Eine solche Datei sieht ungefähr so aus.

/etc/wireguard/wg0.conf
# Lokales Interface
[Interface]
Address = 192.168.123.1/24
PrivateKey = <private key of local interface>
ListenPort = 51820 # Netzwerport
PostUp = <bash command>
PostDown = <bash command>
 
# Client 1
[Peer]
PublicKey = <public key of client 1>
AllowedIPs = 192.168.123.11/32
 
# Client 2
[Peer]
PublicKey = <public key of client 2>
AllowedIPs = 192.168.123.12/32
  • AllowedIPs dient WireGuard zum routen von Paketen

Wireguard verwenden

Interface starten

wg-quick up <interface name>

Interface stoppen

wg-quick down <interface name>

Interface starten systemd

systemctl start wg-quick@<interface name>

Interface stoppen systemd

systemctl stop wg-quick@<interface name>

Interface persistent starten systemd

systemctl enable wg-quick@<interface name>

Beispiele

Client-Server-Client

Server

/etc/wireguard/wg-csc.conf
[Interface]
Address = 192.168.123.1/24 # IP Adresse des Servers
PrivateKey = <private key of server>
ListenPort = 51820 # Port, auf dem der Server läuft
# Forwardingregeln, damit Clients untereinander reden können
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -A FORWARD -o %i -j ACCEPT;
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; ip6tables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT;
 
# Client 1
[Peer]
PublicKey = <public key of client 1>
AllowedIPs = 192.168.123.11/32 # IP des Client 1
 
# Client 2
[Peer]
PublicKey = <public key of client 2>
AllowedIPs = 192.168.123.12/32 # IP des Client 2

Wichtig ist an dieser Stelle, dass auf dem Server folgende Systemvariablen gesetzt sind:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Herausfinden kann man das folgendermaßen:

sysctl net.ipv4.ip_forward
sysctl net.ipv6.conf.all.forwarding

Dauerhaft aktivieren lässt sich das in der /etc/sysctl.conf

/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Achtung! net.ipv6.conf.all.forwarding=1 verhinder IPv6 Autokonfig auf allen Interfaces. Aus diesem Grund sollte dies vorher statisch eingerichtet werden.

Client 1

/etc/wireguard/wg-csc.conf
[Interface]
PrivateKey = <private key of client 1>
Address = 192.168.123.11/24 # IP Adresse des Client 1
 
[Peer]
Endpoint = wireguard-1.clerie.de:51820 # Hostname und Port auf dem der Server lauscht
PublicKey = <public key of server>
AllowedIPS = 192.168.123.0/24 # IPs die über WireGuard getunnelt werden sollen

Client 2

/etc/wireguard/wg-csc.conf
[Interface]
PrivateKey = <private key of client 2>
Address = 192.168.123.12/24 # IP Adresse des Client 2
 
[Peer]
Endpoint = wireguard-1.clerie.de:51820 # Hostname und Port auf dem der Server lauscht
PublicKey = <public key of server>
AllowedIPS = 192.168.123.0/24 # IPs die über WireGuard getunnelt werden sollen
notiz/wireguard.txt · Zuletzt geändert: 2020/03/31 00:31 von clerie