Bereiche
Bereich Docker
Allgemein
Parameter
Anwendungen
- Mattermost
- Unifi-Video
Dies ist eine alte Version des Dokuments!
WireGuard ist eine Virtual-Private-Network-Software, welche als Alternative zu bekannten VPN-Lösungen wie OpenVPN und IPsec entwickelt wird. Es soll im Vergleich zu OpenVPN und IPsec einfacher zu konfigurieren sein sowie schneller und effizienter. WireGuard ist für unterschiedlichste Plattformen verfügbar. Im Gegensatz zu den anderen Lösungen basiert es nicht auf der Client-Server-Architektur, sondern auf der Peer-to-Peer-Architektur. (aus Wireguard)
Bei der Implementation in der Peer-to-Peer-Architektur benötigt jeder der Peers eine öffentliche IP-Adresse. Daher wird man in den meisten Fällen auf die Client-Server-Architektur zurückgreifen, bei der nur der Server eine öffentliche IP-Adresse benötigt.
Image | |
---|---|
Docker Hub | linuxserver/wireguard |
GitHub | linuxserver/docker-wireguard |
Architektur | x86-64, armhf, arm64 |
Plattform | Ubuntu und Debian-basiertes Linux (einschließlich Rasbian/Rasberry OS) 1) |
Software | |
Projekt | WireGuard |
weitere Informationen | |
WireGuard (Software) |
Der Container wird wie folgt mit docker run
eingerichtet und gestartet:
docker run -d \ --name=wireguard \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ -e PUID=2000 \ -e PGID=2000 \ -e TZ=Europe/Berlin \ -e SERVERURL=wireguard.domain.com `#optional` \ -e SERVERPORT=51820 `#optional` \ -e PEERS=1 `#optional` \ -e PEERDNS=auto `#optional` \ -e INTERNAL_SUBNET=10.13.13.0 `#optional` \ -p 51820:51820/udp \ -v /path/to/appdata/config:/config \ -v /lib/modules:/lib/modules \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --restart unless-stopped \ linuxserver/wireguard
Dies sind die wichtigsten Parameter. Sofern sie mit einem „*“ markiert sind, sollte eine Anpassung erfolgen:
Parameter | Funktion |
---|---|
-e PUID= * | Vorgabe des Users, mit dem die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden. |
-e PGID= * | Vorgabe des Gruppe, mit der die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden. |
-e TZ= * | Vorgabe der lokalen Zeitzone im Format Gebiet/Ort. |
-e SERVERURL | Optionale URL des Wireguard-Servers Sofern in den generierten Config-Dateien statt der IP-Adresse des Servers die URL des Servers eingetragen werden soll (z.B. Server mit einer dynamischen IP-Adresse, der über einen Domainnamenauflösungsdienst wie DynDNS erreichbar ist). |
-e SERVERPORT | Optionale Angabe des Ports, den der Container für den Server verwendet |
-e PEERS | Anzahl der Peers, für die eine Konfiguration generiert wird (wenn ungleich Null, läuft Wireguard im Server-Mode |
-e PEERDNS | Default ist 'auto' (DNS-Servereinstellenungen des Docker-Host werden verwendet), Es kann hier die IP-Adresse eines abweichenden DNS-Servers eingetragen werden. |
-e INTERNAL_SUBNET | IP-Subnet, aus dem die IP-Daressen der Peers und ggf. des Servers vergeben werden. Eine Änderung ist nur notwendig, wenn das Subnet bereits anderweitig verwendet wird (z.B. mehrere WireGuard-Instanzen). |
-p | Vorgabe der Ports (bei mehreren WireGuard-Instanzen auf dem Node ist zwingend der externe Port anzupassen. Der Zusatz /udp steuert, dass nur UDP-Pakete geoutet werden. |
-v * | Volumes, siehe Unterabschnitt Volumes |
In der Konfiguration werden Volumes in der Regel im folgenden Format angegeben:
<Pfad auf dem Host>:<Pfad im Container>[:<Optionen>]
Die Volumes haben die folgenden Funktionen (maßgeblich ist der Pfad im Container):
Pfad im Container | Funktion |
---|---|
/config | Ablageort der Konfigurationsdateien |
/lib/modules | Pfad auf das Verzeichnis mit den Kernel-Modulen des Host (üblicherweise /lib/modules )Der Container greift auf die WireGuard-Kernel-Module des Hosts zu. Sofern diese nicht vorhanden sind, versucht der Container diese im Verzeichnis auf dem Host zu installieren. |
Der Container wird wie folgt in der docker-compose.yml
konfiguriert:
version: "2.1" services: wireguard: image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=2000 - PGID=2000 - TZ=Europe/Berlin - SERVERURL=wireguard.domain.com #optional - SERVERPORT=51820 #optional - PEERS=1 #optional - PEERDNS=auto #optional - INTERNAL_SUBNET=10.13.13.0 #optional volumes: - /path/to/appdata/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped
Es liegen noch keine Erfahrungen mit der Integration eines WireGuard-Containers in ein Træfik-Setup vor. Eine entsprechende Konfiguration ist zz. auch nicht geplant, weil m.E. die Schlüssel in der Konfiguration eine ausreichende Sicherung garantieren sollten und im Regelfall der Aufruf des WireGuard-Servers über die Vorgabe der IP-Adresse erfolgt.