====== 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/.conf. Eine solche Datei sieht ungefähr so aus. # Lokales Interface [Interface] Address = 192.168.123.1/24 PrivateKey = ListenPort = 51820 # Netzwerport PostUp = PostDown = # Client 1 [Peer] PublicKey = AllowedIPs = 192.168.123.11/32 # Client 2 [Peer] PublicKey = AllowedIPs = 192.168.123.12/32 * **AllowedIPs** dient WireGuard zum routen von Paketen ===== Wireguard verwenden ===== ==== Interface starten ==== wg-quick up ==== Interface stoppen ==== wg-quick down ==== Interface starten systemd ==== systemctl start wg-quick@ ==== Interface stoppen systemd ==== systemctl stop wg-quick@ ==== Interface persistent starten systemd ==== systemctl enable wg-quick@ ===== Beispiele ===== Gute Beispiele hier: https://github.com/pirate/wireguard-docs ==== Client-Server-Client ==== === Server === [Interface] Address = 192.168.123.1/24 # IP Adresse des Servers PrivateKey = 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 = AllowedIPs = 192.168.123.11/32 # IP des Client 1 # Client 2 [Peer] PublicKey = 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 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 === [Interface] PrivateKey = 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 = AllowedIPS = 192.168.123.0/24 # IPs die über WireGuard getunnelt werden sollen === Client 2 === [Interface] PrivateKey = 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 = AllowedIPS = 192.168.123.0/24 # IPs die über WireGuard getunnelt werden sollen