Übersicht
Dieser Artikel zeigt das Verfahren zur Installation des Wireguard VPN-Servers mit Docker. Wireguard ist neben OpenVPN eine weitere gute VPN-Option. Wireguard hat noch kein offizielles Docker-Image, daher verwenden wir das Wireguard Docker-Image von linuxserver.io – Genau dieses Image, das in diesem Beitrag verwendet wird:Docker Hub (und Github-Seite)
Auch dieses Verfahren wird mit OpenVPN abgedeckt. Sie können es in diesem Beitrag nachlesen.
Anforderungen:
- Docker installiert und ausgeführt.
Informationen zur Docker-Installation finden Sie in diesem Beitrag oder in der offiziellen Dokumentation.
Wenn Sie Distributionen wie – Ubuntu, Debian, Raspbian ausführen, können Sie das offizielle Docker-Schnellinstallationsskript verwenden:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Fügen Sie dann Benutzer zur Docker-Gruppe hinzu, wenn Sie möchten. Das heißt, wenn Sie Docker-Befehle ohne sudo ausführen möchten.
sudo usermod -aG docker <username>
Firewall-Konfiguration
Wenn Sie eine Firewall ausführen (was dringend empfohlen wird), müssen offene Ports für Wireguard vorhanden sein, da Sie sonst keine Verbindung mit dem Wireguard-Server herstellen können.
UFW
sudo ufw allow 51820
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 51820 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 51820 -j ACCEPT
Installieren Sie das Docker-Image und führen Sie es aus
Unten ist der Docker-Befehl mit gesetzten Umgebungsvariablen aufgeführt (dies sind Beispiele und werden ebenfalls erklärt):
docker run -d \ --name wireguard \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ -e PUID=1000 -e PGID=1000 \ -e TZ=Europe/London \ -e SERVERURL=wireguard.yourdomain.com \ -e PEERS=laptop,tablet,phone \ -e PEERDNS=auto \ -p 51820:51820/udp \ -v wireguard_config:/config \ -v /lib/modules:/lib/modules \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --restart=unless-stopped \ linuxserver/wireguard
Erklärung der Umgebungsvariablen:
Name Wireguard – das ist der Name, den wir für den Wireguard-Container festgelegt haben
cap-add=NET_ADMIN &cap-add=SYS_MODULE – Diese Variable stellt dem Container erhöhte Berechtigungen auf dem Hostserver bereit und ermöglicht ihm, den Kernel des Hosts zu verwalten und mit den Netzwerkschnittstellen des Hosts zu interagieren (die erforderlich sind, wenn wir die Kommunikation mit unserem VPN herstellen möchten).
e PUID=1000 -e PGID=1000 – Variable zur Angabe des Benutzers und der Berechtigungsgruppe (dieselbe Gruppe wie ein sudo-Benutzer)
e TZ=Europe/London – Zeitzone des Servers (entsprechend einstellen)
e SERVERURL=vpn.yourdomain.com – Domänenname (FQDN) des Servers. Die Domäne ist optional, aber mindestens die öffentliche IP-Adresse des Servers MUSS festgelegt werden (dies ist erforderlich, damit unser Client-Gerät den Server finden und mit ihm kommunizieren kann). Sie können die Konfiguration auch auf auto.
e PEERS=laptop,tablet,phone setzen – Variable zum Konfigurieren der Client-Verbindung zum VPN für Client-Geräte (im Wesentlichen die Anzahl der Client-Geräte)
e PEERDNS=auto – Variable zur Konfiguration des Domain-Resolvers
p 51820:51820/udp – Port, der auf dem Container verfügbar gemacht werden soll, und welcher Port auf dem Hostserver überwacht werden soll, um ihn für VPN-Verkehr zu verwenden.
v wireguard_config:/config &v /lib/modules:/lib/modules – Volume-Verzeichnisse zum Mounten auf dem Hostserver und zum Speichern der Wireguard-Konfiguration und -Dateien
sysctl=”net.ipv4.conf.all.src_valid_mark=1″ – Eine weitere wichtige Variable. Es soll einen Kernel-Parameter auf Netzwerkebene aktivieren, damit der Container mit Netzwerken außerhalb des Containers kommunizieren kann. Das bedeutet, dass der Container Zugriff auf das Internet erhalten kann.
restart=unless-stopped – um den Container jedes Mal neu zu starten, wenn er
linuxserver/wireguard gestoppt hat – Zu verwendendes Docker-Image
Composer-Version
Hinweis – Dazu muss docker-compose installiert sein und ausgeführt werden
version: "2.1" services: wireguard: image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - SERVERURL=vpn.domain.com # domain optional, public IP is required at least - SERVERPORT=51820 - PEERS=3 # number of peers - PEERDNS=auto #optional volumes: - /lib/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped
Clients verbinden
Überprüfen der Peer-Konfiguration
Sobald Sie den Wireguard-Container starten, erstellt Wireguard alle Client-Verbindungskonfigurationen. Sie können die Konfiguration mit dem Befehl überprüfen:
docker logs wireguard
oder
docker exec -it wireguard /app/show-peer peer-number
Diese Ausgabe druckt auch die QR-Codes für einen einfachen und schnellen Verbindungsaufbau. Dies ist am bequemsten für intelligente Geräte, die die QR-Codes über die Wireguard-App scannen können. Laden Sie also für Smart-Geräte einfach die Wireguard-App herunter, scannen Sie den QR-Code und Sie sollten sofort eine Verbindung herstellen können.
Installieren des Wireguard-Clients und Abrufen der Peer-Konfiguration
Auf Linux-Geräten (PCs und Laptops) ist die Client-Einrichtung etwas anders. Die Installation und Konfiguration des Clients erfolgt ausschließlich über das Terminal. Zuerst Wireguard installieren:
sudo apt install wireguard
Der Wireguard-Client ist auch für andere Distributionen und auch für Windows verfügbar. Wenn Sie einen Client für andere Clients benötigen, sehen Sie sich die Dokumentation an.
Erstellen Sie als Nächstes die Wireguard-Schnittstelle:
ip link add dev wg0 type wireguard
und überprüfen Sie, ob es mit dem Befehl vorhanden ist:ip -a. Wenn Sie damit auf Probleme stoßen, bietet die Wireguard-Dokumentation auch andere Methoden und behandelt die Fehlerbehebung.
Es sollte etwa so aussehen:
Lassen Sie es jetzt so wie es ist und bewegen Sie sich auf den Server. Wir müssen zuerst die Peer-Konfiguration direkt vom Server abrufen, die Konfiguration kopieren und auf unserem Linux-Client-Gerät einfügen.
Der Standardspeicherort der Peer-Konfiguration befindet sich unter:
/var/lib/docker/volumes/wireguard_config/_data/
Sie können es (falls erforderlich) kopieren, um es zu sichern, oder direkt auf die Peer-Konfiguration zugreifen:
sudo cp /var/lib/docker/volumes/wireguard_config/_data/peer*/*.conf ~
Dadurch werden alle Peer-Konfigurationen in das Home-Verzeichnis kopiert und dann im Home-Verzeichnis die Datei mit cat:
gedrucktsudo cat peer_laptop.conf or sudo nano peer_laptop.conf
oder greifen Sie direkt auf die Peer-Konfiguration zu:
sudo cat /var/lib/docker/volumes/wireguard_config/_data/peer_laptop/peer_laptop.conf
Wenn Sie auch mit dem Befehl sudo den Fehler Berechtigung verweigert erhalten, bedeutet dies, dass auf die Konfiguration nur als Root zugegriffen werden kann. Wenn das der Fall ist, melden Sie sich einfach als Root mit – sudo su an und führen Sie einen der vorherigen Befehle ohne sudo erneut aus.
Konfigurieren der Client-Schnittstelle und Herstellen der Verbindung
Nachdem Sie die Konfiguration kopiert haben, kehren Sie zu Ihrem Linux-Gerät zurück und erstellen Sie die Peer-Konfigurationsdatei (nur für das Beispiel werden wir die Konfiguration im Home-Verzeichnis erstellen):
sudo nano wireguard-vpn.conf
und fügen Sie die Peer-Konfiguration ein, speichern und beenden Sie.
Führen Sie zuletzt diesen Befehl aus, um die Wireguard-Schnittstelle automatisch zu konfigurieren, zu aktivieren und danach sollte sie sich automatisch mit Ihrem Server verbinden:
sudo wg-quick up wireguard-vpn.conf
Sie können es mit – ip a und mit ping an den VPN-Server oder mit einem what’s my ip service überprüfen.
Um die Verbindung zu trennen, führen Sie einfach denselben Befehl erneut aus, jedoch mit dem Down-Argument:
sudo wg-quick down wireguard-vpn.conf
Zusammenfassung
Was wir in diesem Beitrag behandelt haben, sind die Schritte zur Installation des Wireguard VPN-Servers mit Docker. Diese Methode ist ziemlich schnell einzurichten und lässt sich leicht anpassen, wenn Sie Clients hinzufügen oder entfernen möchten. Wenn Sie jedoch eher die Lösung mit OpenVPN bevorzugen, gibt es das gleiche Verfahren mit OpenVPN unter diesem Link
Vielen Dank für Ihre Zeit…