👍
spart bischen zeit
Wireguard - wg-quick
-
Es gibt auch einen wesentlich einfachere Möglichkeit einen Wireguard Tunnel zu starten. z.B. auf einem Notebook sehr praktisch, wenn man mal in einem fremden WLan unterwegs ist.
Ich setze voraus, das der Wireguard-Server läuft! Meine Beispiele beruhen auf Debian Buster 10.3
In /etc/wireguard liegen folgende Dateien.
root@debian:/etc/wireguard# ls -l insgesamt 16 -rw-r--r-- 1 root root 45 Apr 3 15:18 private.key -rw-r--r-- 1 root root 45 Apr 5 15:04 psk.key -rw-r--r-- 1 root root 45 Apr 3 15:19 public.key -rw-r--r-- 1 root root 365 Apr 5 15:11 wg0.conf
Keys erzeugen:
private.key erzeugen
root@rp64_nextcloud:/etc/wireguard# wg genkey > private.key Warning: writing to world accessible file. Consider setting the umask to 077 and trying again.
public.key erzeugen
root@rp64_nextcloud:/etc/wireguard# wg pubkey > public.key < private.key
psk.key erzeugen
root@rp64_nextcloud:/etc/wireguard# wg genpsk > psk.key
psk.key
Der psk.key muss auf dem Server und auf dem Client gleich sein. Dieser psk.key dient der zusätzlichen Sicherheit. Im Whitpaper steht dazu folgendes:
In order to mitigate any futureadvances in quantum computing, WireGuard also supports a mode in which any pair of peers mightadditionallypre-share a single 256-bit symmetric encryption key between themselves, in order to add an additional layer ofsymmetric encryption.
Ok, wieder vergessen. Wir müssen nur wissen, das die beide gleich sein müssen.
wg0.conf
Fehlt noch die Config.
[Interface] Address = 10.10.1.2 PrivateKey = <private Key> ListenPort = 51820 DNS = 10.10.1.1 [Peer] Endpoint = <Server IP>:51820 PublicKey = <public Key> vom Server!! PresharedKey = <preshared Key> Client und Server gleich! AllowedIPs = 0.0.0.0/0, ::/0
Das [Interface] definiert die Schnittstelle. Hier setzen wir ein IP Adresse und den Port. Dazu gebe ich noch an, wo der DNS-Server liegt. Auf meinem Wireguard Server läuft da extra einer, dient der Sicherheit die wirkliche IP-Adresse nicht zu leaken.
Das [Peer] definiert jetzt den Teilnehmer, hier unseren Wireguard Server. Wir sagen Wireguard wo er den Server findet und zum Schluß noch bei AllowedIPs was er machen soll. In diesem Beispiel tunnelt er sämtlichen Traffic zum Wireguard Server.
wg-quick
Damit kann man jetzt schnell die Schnittstelle wg0 starten.
Start
wg-quick up wg0
Stop
wg-quick down wg0
Beispiel
root@thinkpad:/etc/wireguard# wg-quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.10.1.11/24 dev wg0 [#] ip -6 address add 2a01:xxxxxxxxxxxxx::11/72 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x [#] wg set wg0 fwmark 51820 [#] ip -6 route add ::/0 dev wg0 table 51820 [#] ip -6 rule add not fwmark 51820 table 51820 [#] ip -6 rule add table main suppress_prefixlength 0 [#] nft -f /dev/fd/63 [#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820 [#] ip -4 rule add not fwmark 51820 table 51820 [#] ip -4 rule add table main suppress_prefixlength 0 [#] sysctl -q net.ipv4.conf.all.src_valid_mark=1 [#] nft -f /dev/fd/63 root@thinkpad:/etc/wireguard# wg-quick down wg0 [#] ip -4 rule delete table 51820 [#] ip -4 rule delete table main suppress_prefixlength 0 [#] ip -6 rule delete table 51820 [#] ip -6 rule delete table main suppress_prefixlength 0 [#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f [#] nft -f /dev/fd/63 root@thinkpad:/etc/wireguard#
Hier sieht man erst den Start und dann den Stop der Schnittstelle wg0. Mir fehlte auf einem Rechner noch das Paket resolvconf. Das kann man mit
apt install resolvconf
schnell mal installieren. Das braucht man, sonst kommt eine Fehlermeldung.
Test der Verbindung
Und dann kann man schauen ob die Verbindung steht.
root@thinkpad:/etc/wireguard# wg interface: wg0 public key: <public Key> private key: (hidden) listening port: 51820 fwmark: 0xca6c peer: <public Key> vom Server preshared key: (hidden) endpoint: <Server IP>:51820 allowed ips: 0.0.0.0/0, ::/0 latest handshake: 4 seconds ago transfer: 1.37 KiB received, 2.36 KiB sent
Wichtig ist der latest handshake, daran kann man sehen ob der Tunnel steht. Und bei allem was man macht ändern sich natürlich die Transfer Daten.