Einleitung

VPNs werden immer beliebter, um die Privatsphäre zu schützen. Ich möchte hier ein kurzes Tutorial zu einem VPN auf wireguard-Basis in einem Docker-Contaier geben.

Kernel Modules

Bevor man Wireguard in einem Docker Container laufen lassen kann, muss man zuerst die Kernel Header und das Kernel Modul installieren. Unter Manjaro geht das so:

$ sudo pacman -S linux-headers

Anmerkung: Es wird nun gefragt, welchen Header er installieren soll, man wählt hier den Header für die Version des installieren Linux Kernels aus. Wenn man gerade nicht weiß, welche Version man installiert hat, kann man das über diesen Befehl herausfinden: uname -r

Als nächstes installiert man das Kernel Modul über diesen Befehl:

sudo pacman -S dkms wireguard-dkms wireguard-tools

Wireguard im Docker Container

Als erstes sucht man sich einen Ordner und erstellt in diesem als Beispielkonfiguration folgende docker-compose.yml:

version: "2"
services:
 vpn:
  image: cmulk/wireguard-docker
  #network_mode: host
  volumes:
   - ./etc-wireguard:/etc/wireguard
  networks:
   - net
  ports:
   - 7777:7777/udp
  restart: unless-stopped
  cap_add:
   - NET_ADMIN
   - SYS_MODULE

networks:
  net:

Als nächstes erstellt man über mkdir etc-wireguard den entsprechenden Ordner für die Konfiguarationsdateien. server.conf

[Interface]
Address = 192.168.20.1/24
PrivateKey = <server-private-key>
ListenPort = 7777

[Peer]
PublicKey = <client-public-key>
AllowedIPs = 192.168.20.2

*client.config

[Interface]
Address = 192.168.20.2/24
PrivateKey = <client-private-key>
ListenPort = 0 #needed for some clients to accept the config

[Peer]
PublicKey = <server-public-key>
Endpoint = 24.134.225.237:7777
AllowedIPs = 0.0.0.0/0,::/0 #makes sure ALL traffic routed through VPN
PersistentKeepalive = 25

Die entsprechenden "private-keys" und "public-keys" lassen sich zum Beispiel über die Android-App oder die iOS-App. Jeweils zwei Konfigurationen anfangen zu erstellen und dort die entsprechenden Schlüssel generieren. Das ganze macht man zweimal, einmal für den Server und einmal für den Client und modifiziert dann die jeweiligen Konfiguarationsdateien. Die fertige Client-Konfiguration lässt sich dann einfach importieren. Zum Schluss wechselt man wieder in den Oder der "docker-compose.yml" und startet den Conatainer per sudo docker-compose up -d

Quellen

Vorheriger Beitrag