Wie ich bei meinem Hamburger Systemadministrator gelernt habe, geht das auch wesentlich einfacher. Dafür hat Wireguard einen netten Befehl schon parat, nennt sich
wg-quick up wg0-client
Dazu muss auf dem Client natürlich vorher alles konfiguriert sein. Das Verzeichnis /etc/wireguard sieht dann so aus.
root@thinkpad:/etc/wireguard# ls -lha /etc/wireguard/
insgesamt 32K
drwx------ 2 root root 4,0K Aug 16 08:47 .
drwxr-xr-x 141 root root 12K Aug 16 08:47 ..
-rw-r--r-- 1 root root 45 Aug 9 16:48 private.key
-rw-r--r-- 1 root root 45 Aug 9 16:48 psk.key
-rw-r--r-- 1 root root 45 Aug 9 16:48 public.key
-rw-r--r-- 1 root root 275 Aug 16 08:47 wg0-client.conf
Die drei Schlüssel sind also vorhanden, der Server ist auch entsprechend vorbereitet. Dann brauchen wir auf dem Clienten noch die wg0-client.conf mit folgendem Inhalt.
[Interface]
Address = 10.10.0.4/32
PrivateKey = oM9jWxxxxxxxxxxxxxxxxxxxxxxxxxxxtS4vW8=
ListenPort = 50xxx
DNS = 10.10.0.2
[Peer]
PublicKey = fGg7MxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTPRqqzU=
Endpoint = 136.xxx.xxx.xxx:60xxx
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
Im ersten Teil [Interface] wird die Schnittstelle auf dem Clienten konfiguriert.
Die Adresse des Clienten
Privatekey, findet man in /etc/wireguard/private.key
Den Port für die Wireguard Kommunikation, frei wählbar.
Der DNS-Server, ist hier mein Wireguard-Server, der einen DNS Dienst bereit hält.
Im zweiten Teil [Peer] wird die Verbindung zum Server konfiguriert.
PublicKey, der PublicKey des Servers.
Endpoint, ist die IP-Adresse des Servers.
AllowedIPs 0.0.0./0 wird den gesamten IPv4 Verkehr über den Tunnel routen.
Dient dazu , die Verbindung aufrecht zu erhalten?
Mit
wg-quick up wg0-client
baut er nun die Verbindung auf.
root@thinkpad:/etc/wireguard# wg-quick up wg0-client
[#] ip link add wg0-client type wireguard
[#] wg setconf wg0-client /dev/fd/63
[#] ip -4 address add 10.10.0.4/32 dev wg0-client
[#] ip link set mtu 1420 up dev wg0-client
[#] resolvconf -a tun.wg0-client -m 0 -x
[#] wg set wg0-client fwmark 51xxx
[#] ip -4 route add 0.0.0.0/0 dev wg0-client table 51xxx
[#] ip -4 rule add not fwmark 51xxx table 51xxx
[#] ip -4 rule add table main suppress_prefixlength 0
root@thinkpad:/etc/wireguard#
Damit steht der Tunnel
9: wg0-client: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.10.0.4/32 scope global wg0-client
valid_lft forever preferred_lft forever
Ausschalten
root@thinkpad:/etc/wireguard# wg-quick down wg0-client
[#] ip -4 rule delete table 51xxx
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0-client
[#] resolvconf -d tun.wg0-client
Auf meinem Debian 10 Buster ging das erst so nicht, weil ein Paket fehlt.
root@thinkpad:/etc/wireguard# wg-quick up wg0-client
[#] ip link add wg0-client type wireguard
[#] wg setconf wg0-client /dev/fd/63
[#] ip -4 address add 10.10.0.4/32 dev wg0-client
[#] ip link set mtu 1420 up dev wg0-client
[#] resolvconf -a wg0-client -m 0 -x
/usr/bin/wg-quick: line 31: resolvconf: command not found
[#] ip link delete dev wg0-client
Wireguard ist so nett und schreibt alles rein 😉 Eine Installation von resolcconf löst das Problem.
root@thinkpad:/etc/wireguard# apt install resolvconf
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden NEUEN Pakete werden installiert:
resolvconf
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 74,2 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 196 kB Plattenplatz zusätzlich benutzt.
[gekürzt]
Nun kann man den Tunnel mit zwei einfachen Befehlen auf- und wieder abbauen. Als nächstes kommt dann noch die IPv6 Erweiterung, weil im Moment IPv6 Traffic am Tunnel vorbei fliessen würde, wenn man eine öffentliche IPv6 Adresse zugewiesen bekommen hätte. Aber, das muss ich mir noch ein wenig erklären lassen 🙂